home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
336.lha
/
GMC
/
german.docs
/
GMC.doc
< prev
next >
Wrap
Text File
|
1989-12-27
|
11KB
|
329 lines
-- GMC V4.0 --
Console-Handler mit Kommandozeileneditierung und
Funktionstastenunterstützung
GMC stellt eine Erweiterung des CON- bzw. NEWCON-Handlers dar.
Gegenüber NEWCON bietet GMC die folgenden zusätzlichen Merkmale:
- Erweiterte Kommandozeileneditierung
- Vierfache, wahlfreie Belegung der Funktionstasten
- Erweiterte Kommandozeilenspeicherung
- Online-Hilfe zu Funktionen des Handlers
- Iconify-Funktion
Diese zusätzlichen Merkmale sowie weitere Unterschiede werden nun
kurz beschrieben.
Erweiterte Kommandozeileneditierung
Die Kommandozeileneditierung stützt sich auf folgende Funktionen:
1. Lösch-Funktionen
- Zeichen vor Cursor löschen (1)
Backspace
- Zeichen unter Cursor löschen (2)
Del
- Löschen ab Cursorposition bis Wortanfang (3)
Ctrl-Backspace
- Löschen ab Cursorposition bis Wortende (4)
Ctrl-Del
- Löschen ab Cursorposition bis Zeilenanfang (5)
Shift-Backspace
- Löschen ab Cursorposition bis Zeilenende (6)
Shift-Del
- Löschen der ganzen Zeile (7)
Alt-Backspace,Alt-Del
2. Cursor-Bewegung
- Zeichen links/rechts (1/2)
"Cursor links/rechts" (auch mit Alt-Taste)
- Wort links/rechts (3/4)
Ctrl-"Cursor links/rechts"
- Zeilenanfang/-ende (5/6)
Shift-"Cursor links/rechts"
3. Einfüge-/Überschreibe-Modus
Der voreingestellte Modus (einfügen) kann wahlweise nur
für die aktuelle Zeile oder auch dauerhaft gewechselt
werden. Der Wechsel nur für die aktuelle Zeile wird
durch Ctrl-A vorgenommen. Nach Betätigung der RETURN-
Taste ist wieder der alte Modus aktiv. Um den Modus
dauerhaft zu wechseln muB "set ins:<n>" eingegeben wer-
den. Dabei wird für <n> = 1 der Einfüge-Modus und für
<n> = 0 der Überschreibe-Modus aktiviert.
Bei wortweiser Bewegung bzw. wortweisem Löschen werden Wörter
nicht nur durch Leerzeichen getrennt, sondern auch durch ':'
'/' und '.'. Damit wird es möglich längere Pfadnamen schnell
und einfach zu editieren. Wenn der Cursor auf einem der vier
Trennzeichen steht, wird nur das Trennzeichen gelöscht.
Die oben aufgeführten Editierungsfunktionen können auch be-
liebig anders verteilt werden. Die oben genannte Liste ist
nur die Vorbelegung, die Zahlen in Klammern stellen die zuge-
hörigen Funktionen dar.
Die Backspace- (bs) und die Del-Taste (del) sowie die Cursor-
Tasten (cu_left/cu_right) werden folgendermaßen belegt:
set <k><x>:<n>
<k> ist die Abkürzung der Taste, <x> die Taste, die gleich-
zeitig mit ihr gedrückt werden muß:
keine Taste: <x> = ''
Shift-Taste: <x> = 's'
Ctrl-Taste: <x> = 'c'
Alt-Taste: <x> = 'a'
<n> ist die Nummer der Funktion, die ausgeführt werden soll.
Weitere Beschreibung des Zuweisungsvorgangs siehe nächstes
Kapitel Funktionstasten.
Funktionstastenbelegung
Alle Funktionstasten können vierfach belegt werden (Funk-
tionstaste allein, mit gedrückter Shift-, Ctrl- oder Alt-
Taste). Die Funktionstasten können direkt über die Tastatur
oder durch Schreibbefehle in das Fenster belegt werden. Die
Syntax ist für beide Methoden gleich:
set <x>f<n>:<string>
<x> ist die Taste, die gleichzeitig mit der Funktionstaste
gedrückt werden muB, um die Belegung <string> abzurufen. <n>
ist die Nummer der Funktionstaste. <string> ist die Belegung
der Funktionstaste. Wenn die beiden letzten Zeichen in
<string> "\n" sind, wird die Belegung sofort bei Druck der
Funktionstaste ausgeführt. Ansonsten wird <string> nur in die
aktuelle Kommandozeile eingefügt (unabhängig vom Einfüge-/
Überschreibe-Modus). Ein ';' als letztes Zeichen in <string>
wird beim Setzen der Funktionstasten ignoriert. Die Funk-
tionstasten können auf einfache Weise belegt werden, indem
entweder mit "Echo" die Funktionstasten einzeln belegt wer-
den, oder mit "Type" eine Datei ausgegeben wird, die die ent-
sprechenden Belegungen enthält. Die Befehle werden aus dem
Eingabe- bzw. Ausgabestrom gefiltert. Die Funktionstasten
können mit "set fkeys:1" ein- und mit "set fkeys:0" ausge-
schaltet werden. Die Belegungen werden davon nicht berührt,
d.h. sie bleiben beim Ausschalten erhalten und sind beim Ein-
schalten wieder verfügbar. Durch die Belegung einer Funk-
tionstaste werden die Funktionstasten automatisch eingeschal-
tet.
Kommandozeilenspeicherung
Alle eingegebenen Kommandos werden gespeichert (maximal 63
Zeilen) und können auf verschiedene Arten wieder abgerufen
werden. Die zuletzt eingegebene Zeile wird am Ende der Liste
eingefÜgt. Gegebenenfalls die erste Zeile am Anfang der Liste
hinausgeschoben.
- Mit den Tasten "Cursor auf-/abwärts" kann die Liste
zeilenweise in Richtung Anfang/Ende angezeigt werden.
- Mit Shift-"Cursor aufwärts" wird die Liste nach der bis
zu diesem Zeitpunkt eingegebenen Teilzeile als Muster
zeilenweise durchsucht.
- Mit Shift-"Cursor abwärts" wird zum Ende der Liste ge-
sprungen.
- Mit !<n> wird das <n>-te Kommando seit dem Start des
Handlers (Öffnen des CLI- oder Shell-Fenster) angezeigt.
Online-Hilfsfunktionen
Die Help-Taste zeigt alleine oder zusammen mit der Shift-,
Ctrl- oder Alt-Taste vier verschiedene Hilfen an:
- Help:
Ausgabe der Funktionen der Cursortasten, der Backspace-
und der Del-Taste, des Kommandozeilenrückruf über eine
Nummer sowie der weiteren Funktionen der Help-Taste.
- Shift-Help:
Ausgabe der ersten Belegungen der Funktionstasten.
- Ctrl-Help:
Ausgabe weiterer Information zum Setzen der Funktions-
tasten und des EinfÜge-/Überschreibe-Modus.
- Alt-Help:
Ausgabe der Liste der früher eingegebenen Kommandozei-
len mit Numerierung. Die Ausgabe kann durch Druck auf
eine beliebige Taste angehalten und wieder fortgesetzt
werden. Durch Druck auf die RETURN-Taste wird die Aus-
gabe abgebrochen.
Die Helptaste kann ebenso wie die Funktionstasten ein- und
ausgeschaltet werden:
"set help:1" Helptaste einschalten
"set help:0" Helptaste ausschalten
Iconify-Funktion
Die Iconify-Funktion kann auf jede beliebige Funktionstaste
gelegt werden:
set <x>f<n>:ICONIFY <x> und <n> siehe Funktionstasten
Die Iconify-Funktion löscht die aktuelle Befehlszeile und
wird dann sofort ausgeführt. Das dabei entstehende Fenster
läst sich beliebig verschieben und wird mit einem Doppelklick
wieder auf die ursprüngliche Größe gebracht. Während das Fen-
ster im verkleinerten Modus ist, sind natürlich keine Ein-
oder Ausgaben über dieses Fenster möglich. Das Schlüsselwort
ICONIFY muß in Großbuchstaben angegeben werden.
Die Iconify-Funktion wird abgeschaltet, nachdem der Handler
ein DiskInfo-Packet erhalten hat. Da bei diesem Packet Zeiger
auf das ConsoleDevice und das Fenster übergeben wird, aber
nach dem Schließen und Wiederöffnen diese Zeiger mit großer
Wahrscheinlichkeit nicht die gleichen Werte haben, würde dies
mit ziemlich Wahrscheinlichkeit zu einem Absturz führen.
Sonstiges
Die Tabulator-Taste, die ESCAPE-Taste sowie alle Control-Tas-
ten außer Ctrl-A, Ctrl-C..F, Ctrl-M und Ctrl-\ haben keine
Funktion und werden auch nicht ans CLI oder die Shell weiter-
gegeben.
Im RAW-Modus werden alle Tastendrücke ohne Auswertung (außer
Ctrl-C..F) weitergeleitet. Ebenso werden im CON-Modus die
vier "Report"-Meldungen des console.device (Cursor Position,
Window Bounds, Special Keys und Raw Events) durchgereicht.
Installation
GMC wird durch "Mount GMC:" installiert. Die MountList im
DEVS:-Verzeichnis muß dazu den unten stehenden Eintrag ent-
halten. Außerdem muß GMC-Handler im L:-Verzeichnis enthalten
sein. "Mount GMC:" sollte in die Startup-Sequence aufgenommen
werden. Damit beim Aufruf eines neuen CLI- oder Shell-Fen-
sters GMC verwendet wird, muß entweder NewCLI, NewShell oder
Ashell gepatcht werden oder GMC muß beim Aufruf mitangegeben
werden (NewShell GMC:xxx). Eine weitere Möglichkeit besteht
darin, in der MountList statt GMC: NEWCON: zu schreiben und
dann GMC als NEWCON mit "Mount NEWCON:" zu installieren. Dann
entfällt das Patchen von NEWShell oder die Angabe der Fen-
sterspezifikation. Die letzte Methode wäre mittels des ARP-
Kommandos "Assign CON: remove" und des PD-Programms "Assign-
Dev CON: GMC:" das Standard-Device CON: zuerst zu entfernen
und dann GMC: als CON: zu installieren. Bei dieser Methode
muß GMC: schon gemounted sein.
MountList-Eintrag
GMC:
Handler = L:GMC-Handler
Stacksize = 1500
Priority = 5
GlobVec = -1
#
Danksagung
Mein Dank gebührt Volker Rudolph für Tests und Verbesserungs-
vorschläge.