XKEYB - Version 1.50. Tastaturtreiber fr MS - DOS. D o k u m e n t a t i o n. XKeyb 1.50 Dokumentation Seite 2 (C) 1994 Dietmar H”hmann Inhalt Inhalt .......................................................2 Was XKeyb ist. ...............................................3 Wie XKeyb verwendet wird. ....................................4 Der Aufbau einer Konfigurationsdatei. ........................6 Bessere Speicherausnutzung mit XKEYBRES .....................10 Die Online-Dokumentation XKEYB.HLP ..........................11 PI - Das Programm-Interface von XKeyb. ......................12 Die Verwendung des PI mit der Unit XKeyb_PI. ................18 Die Bedienung des Macrorecorders KeyMan. ....................20 Versionsunterschiede ........................................21 Nutzungsbedingungen. ........................................23 Die zu XKeyb geh”renden Dateien. ............................24 XKeyb 1.50 Dokumentation Seite 3 (C) 1994 Dietmar H”hmann Was XKeyb ist. Bei XKeyb handelt es sich, wie der Name schon vermuten l„át, um einen Tastaturtreiber mit einer gewissen Verwandtschaft zum altbekannten KEYB.COM. Wie Keyb ist auch XKeyb ein Tastaturtreiber fr DOS-Rechner, der resident im Speicher installiert wird und per Parameter fr verschiedene L„nder konfiguriert werden kann. Allerdings gehen die Konfigurationsm”glichkeiten weit ber die von Keyb hinaus. So l„át sich XKeyb nicht nur fr verschiedene Nationalit„ten konfigurieren, sondern auch nach pers”nlichen Wnschen anpassen. Einerseits gestattet XKeyb das freie Belegen aller Tasten auf fnf Ebenen, (Normal, mit Shift, mit Control, mit Alt und mit Alt Gr oder Control und Alt) andererseits bietet es die M”glichkeit, einzelne Tasten auf bestimmten Ebenen mit Zeichenketten zu belegen. Desweiteren kann fr jede Taste getrennt festgelegt werden, ob sie von Caps-Lock, Num-Lock oder Scroll-Lock beeinfluát wird, und die Funktionen Shift, Control und Alt k”nnen auf beliebige Tasten gelegt werden. (Wem's gef„llt...) Fr Programmierer ist das Programm-Interface von XKeyb gedacht. Es erm”glicht den Zugriff auf weitergehende Funktionen. XKeyb 1.50 Dokumentation Seite 4 (C) 1994 Dietmar H”hmann Wie XKeyb verwendet wird. Die grunds„tzliche Verwendung von XKeyb ist ann„hernd identisch zu der von Keyb. Das Programm wird mit XKEYB installiert. Im Lieferumfang sind Standard-Konfigurations- Dateien fr alle L„nder, die auch von Keyb untersttzt werden, enthalten. Der Name dieser Dateien setzt sich aus dem bekannten L„nderkrzel und der Erweiterung .KEY zusammen. Die Anweisung um XKeyb fr eine Deutsche Tastatur zu installieren lautet also: XKEYB GR oder XKEYB GR.KEY. Neben den Standarddefinitionen geh”rt zu XKeyb noch die Datei GR2.KEY. Diese enth„lt eine Definition fr eine Deutsche Tastatur mit geringfgigen Žnderungen. Auáerdem ist die Funktion der Caps-Lock-Taste von Shift-Lock in ein echtes Caps- Lock, welches ausschlieálich fr die Buchstabentasten gilt, ge„ndert. Diese Standarddefinitionen sollen als Grundlage fr individuelle Anpassungen der Tastaturbelegung dienen. Alle Manipulationen an der Tastaturbelegung werden bei XKeyb ber Definitionsdateien vorgenommen, die standardm„áig die Erweiterung .KEY tragen. Bei Verwendung anderer Erweiterungen mssen diese beim Aufruf von XKeyb explizit angegeben werden. Bei den Definitionsdateien handelt es sich um Textdateien nach dem Vorbild der INI-Dateien. Der genaue Aufbau wird im n„chsten Kapitel erl„utert. Wenn die Tastenbelegung nach der Installation von XKeyb ge„ndert werden soll, so ist dieses durch einen erneuten Aufruf von XKeyb mit einer anderen Definitionsdatei ohne Weiteres m”glich. (Es wird keine neue residente Kopie von XKeyb erzeugt.) Allerdings ist in diesem Zusammenhang noch ein Wort zu Erweiterungsstrings zu sagen. Im Normalfall reserviert XKeyb bei der Installation nur soviel Platz fr solche XStrings, wie tats„chlich ben”tigt wird (auf volle Paragrafen aufgerundet). Sollen nachtr„glich weitere XStrings angelegt werden, so kann das am vorhandenen Speicherplatz scheitern. Um dies zu verhindern besteht die M”glichkeit, den Speicherplatz, der fr XStrings reserviert werden soll, explizit festzulegen. Dazu XKeyb 1.50 Dokumentation Seite 5 (C) 1994 Dietmar H”hmann installieren Sie XKeyb mit der Option '/Xnn', wobei nn die Speichergr”áe in Bytes angibt. Um XKeyb z.B. mit 480 Bytes Platz fr XStrings und mit Deutscher Tastaturbelegung zu installieren ist dieser Befehl n”tig: XKEYB GR /X480 oder XKEYB /X480 GR Neben der Option /X k”nnen noch die Optionen /U und /Q angegeben werden. /U(ninstall) entfernt die residente Kopie von XKeyb aus dem Speicher (sofern dies m”glich ist), /Q(uiet) unterdrckt die Ausgabe von LIST-Abschnitten in Konfigurationsdateien (siehe auch n„chstes Kapitel). XKeyb 1.50 Dokumentation Seite 6 (C) 1994 Dietmar H”hmann Der Aufbau einer Konfigurationsdatei. Eine Konfigurationsdatei fr XKeyb gliedert sich in mehrere Abschnitte, die jeweils einen Teil der gesamten Tastaturdefinition enthalten. So definiert der Abschnitt KEYS die eigentliche Tastenbelegung, d.h. welche Zeichen und ggf. welche XStrings auf welcher Taste liegen. Im Abschnitt XStrings werden die Zugeh”rigen Erweiterungs-Strings definiert. Der Abschnitt SHIFTS legt fest, welchen Tasten die Funktionen Shift, Control und Alt zugeordnet sind. Desweiteren k”nnen im Abschnitt COMBI Kombinationszeichen definiert werden (z.B. ^ + a = a) Auáerdem k”nnen in die Definitionsdatei beliebig viele COMMENT- und LIST-Abschnitte eingefgt werden. Ein solcher Abschnitt wird durch seinen Namen in eckigen Klammern eingeleitet. Die Reihenfolge der Abschnitte ist ohne Bedeutung. Die Datei GR2.KEY ist ein praktisches Beispiel fr den Aufbau einer Definitionsdatei. Eine Ausfhrliche Betrachtung der einzelnen Abschnitte: [KEYS] Dieser Abschnitt enth„lt pro definierter Taste eine Zeile. Diese beginnt mit dem Scancode der Taste. An diesen k”nnen sich, ohne Zwischenraum, ein oder mehrere der Buchstaben N,C und S anschlieáen, je nachdem, ob die Taste von NUM-, CAPS- und SCROLL-Lock beeinfluát werden soll. Ist eines oder mehrere dieser Zeichen angegeben, so erzeugt die Taste mit der entsprechenden Lock-Taste das gleiche Zeichen, das erzeugt wird, wenn die Taste mit SHIFT bet„tigt wird. Danach folgen, jeweils durch Leerzeichen getrennt, die Belegungen fr 5 Tastenebenen: Normal, mit Shift, mit Control, mit Alt, mit Alt Gr. Dabei k”nnen entweder die Zeichen oder deren Ascii-Werte mit vorangestelltem Doppelkreuz (#) angegeben werden. Zeichen mit ASCII-Werten die kleiner als 36 sind, sollen immer als Dezimalzahlen mit '#' angegeben werden. Wird statt eines Zeichens eine Dezimalzahl mit vorangestelltem Ausrufezeichen angegeben, so wird der Taste der zu der Nummer geh”rende Erweiterungs-String zugeordnet. Erlaubt sind die Nummern 1-200. Werten ber 200 sind besondere Funktionen zugeordnet: Wert Bedeutung XKeyb 1.50 Dokumentation Seite 7 (C) 1994 Dietmar H”hmann Reserviert fr XFunctions (siehe Kapitel ber das PI) 201 - 240 Reserviert 241 - 246 OS/2 2.0: DOS-Box schlieáen. (ALT,F4) 247 Reserviert 248,249 250 Umschalten auf BIOS-Tastaturtreiber (Control, Alt, F1) Reserviert 251-253 Print Screen (Hardcopy) 254 System Reset (Control, Alt, Del) 255 [SHIFTS] Im Abschnitt SHIFTS werden die Umschalttasten definiert. Dazu werden ihre Scancodes, jeweils durch Leerzeichen getrennt, in dieser Reihenfolge angegeben: Shift1 Shift2 Control Alt Scroll Num Caps Insert [XSTRINGS] In diesem Abschnitt werden Erweiterungs-Strings definiert. Dies geschieht in der Form: Dabei ist zu Beachten, daá zwischen der Nummer und dem String exakt ein Leerzeichen stehen muá. Alles was diesem Leerzeichen folgt wird als Erweiterungs-String interpretiert. Im Abschnitt KEYS kann der String einer Taste zugewiesen werden. (s.o.) Gltige Nummern fr XStrings sind die Werte 1-200. Beispiel: [XSTRINGS] 1 Dat is 'ne Schdring 2 DIR *.ABC | SORT | MORE\n 17 Mit freundlichen Gráen 123 \[DEL]\[CD]\[AF10] Wie das Beispiel vermuten l„át, sind bei der Definition von XStrings diverse Sonderzeichen zul„ssig. Dabei gilt, daá XKeyb 1.50 Dokumentation Seite 8 (C) 1994 Dietmar H”hmann grunds„tzlich alle Sonderzeichen mit einem Backslash eingeleitet werden. Die Sonderzeichen und ihre Bedeutung: Sonderzeichen Erzeugt / entspricht \\ \ \Axxx Zeichen mit dem ASCII-Wert xxx. \Sxxx Taste mit dem Scancode xxx. \n Carriage Return. Entspricht \A013. \[HOME] Taste Home / Pos 1. \[END] Taste End / Ende. \[PU] Taste Page-Up / Bild aufw„rts. \[PD] Taste Page Down / Bild abw„rts. \[CL] Taste Cursor left. \[CR] Taste Cursor right. \[CU] Taste Cursor up. \[CD] Taste Cursor down. \[DEL] Taste Del / Entf. \[INS] Taste Ins / Einfg. \[Fx] Funktionstaste x. \[SFx] Shift + Funktionstaste x. \[CFx] Control + Funktionstaste x. \[AFx] Alt + Funktionstaste x. Den W”rtern HOME, END, PU, PD, CL und CR kann der Buchstabe C vorangestellt werden. Dies entspricht dem Druck auf die jeweilige Taste bei gedrckter CONTROL-Taste. [COMBI] Hier werden Kombinationszeichen definiert. Das erste Zeichen einer jeden Zeile ist der erste Zeichen einer XKeyb 1.50 Dokumentation Seite 9 (C) 1994 Dietmar H”hmann Zeichenkombination. Darauf folgen n Zeichenpaare, n„mlich jeweils das zweite Zeichen der Zeichenkombination und das resultierende Zeichen. Beispiel: ' aa ee ii oo uu #32' Diese Zeile definiert die Zeichenkombinationen: '+a=a '+e=e '+=' Nicht darstellbare Zeichen werden durch ihren ASCII-Wert mit vorangestelltem Doppelkreuz angegeben. Eine Sonderfunktion kommt dem Ausrufezeichen zu: Es l”scht die bestehende Definition fr eine Gruppe von Kombinationszeichen: ^ ! aa Diese Zeile l”scht alle Kombinationszeichen, die mit ^ anfangen und definiert anschlieáend die Kombination ^+a=a. [CONTINUE] Ein CONTINUE-Abschnitt enth„lt nur eine Zeile. In dieser wiederum steht der Name einer Konfigurationsdatei. Findet XKeyb einen solchen Abschnitt, so wird die Bearbeitung der aktuellen Konfigurationsdatei beendet. Anschlieáend wird die angegebene Konfigurationsdatei bearbeitet. Auf diese Weise ist eine Verkettung von Konfigurationsdateien m”glich. [COMMENT] Wird von XKeyb ignoriert. [LIST] Den Inhalt eines solchen Abschnittes gibt XKeyb, sofern es nicht durch /Q unterdrckt wird, auf dem Bildschirm aus. XKeyb 1.50 Dokumentation Seite 10 (C) 1994 Dietmar H”hmann Bessere Speicherausnutzung mit XKEYBRES Das Programm XKEYB belegt zwar nach der Installation im Normalfall weniger Speicher, als der original MS-DOS Tastaturtreiber. Aber durch die relativ groáen Routinen zum Laden der Konfigurationsdateien braucht der Tastaturtreiber w„hrend der Installation weit mehr Speicher, als sein DOS- Pendant, was das laden von XKEYB in den oberen Speicher sehr erschwert. Um hier Abhilfe zu schaffen entstand das Programm XKEYBRES. Es enth„lt alle Teile des Tastaturtreibers, die resident bleiben, aber nur minimale Initialisierungsroutinen. Dadurch wird das Programm erheblich kleiner und kann in Speicherbl”cke ab einer Gr”áe von ca. 10KB geladen werden. Der Nachteil: Beim Laden von XKEYBRES wird keine Tastaturdefinition geladen. D.h. alle Tasten sind undefiniert und erzeugen keinerlei Zeichen. Damit dadurch die Tastatur nicht blockiert wird, bleibt der Tastaturtreiber zun„chst deaktiviert (so als w„re er mit ALT Control F1 deaktiviert worden). Nach der Initialisierung von XKEYBRES kann mit XKEYB eine Tastaturdefinition geladen werden. Dabei wird der Tastaturtreiber auch automatisch in den aktiven Zustand geschaltet. Auáerdem sind bei XKEYBRES zwei Dinge zu beachten: Zum einen wird das Programm beim Aufruf grunds„tzlich resident Installiert. Auch dann, wenn bereits ein Tastaturtreiber installiert ist. Zum anderen kann die Gr”áe des Speicherbereiches fr Erweiterungszeichenketten (Option /X) bei XKEYBRES nicht angegeben werden. XKEYBRES reserviert immer 923 Byte fr Erweiterungszeichenketten. Anwendungsbeispiel: Das Einbinden von XKEYB unter Verwendung von XKEYBRES in der Startdatei AUTOEXEC.BAT k”nnte beispielsweise so aussehen: @Echo off ... LH XKEYBRES XKEYB GR /Q ... XKeyb 1.50 Dokumentation Seite 11 (C) 1994 Dietmar H”hmann Die Online-Dokumentation XKEYB.HLP Ab der XKEYB-Version 1.5 liegt die Datei XKEYB.HLP bei. Diese enth„lt diese Programmdokumentation als Windows 3.1-Hilfedatei. Zum Starten der Online-Dokumentation starten Sie die Datei XKEYB.HLP unter Windows 3.1. (Aus dem Datei- oder dem Programmanager.) XKeyb 1.50 Dokumentation Seite 12 (C) 1994 Dietmar H”hmann PI - Das Programm-Interface von XKeyb. Das Programm-Interface ist eine Schnittstelle fr andere Programme, ber die alle Funktionen von XKeyb bedient werden k”nnen. Neben Funktionen zur Žnderung der Tastaturbelegung stellt es auch Funktionen zur erweiterten Tastaturabfrage und zur Definition von Hotkeys bereit. Angesprochen wird das PI ber den Multiplexer-Interrupt (INT 2Fh). Dabei muá das Register AH den Wert ADh und das Register AL die Nummer der auszufhrenden Funktion enthalten. Die Funktionen des PI und ihre Anwendung im Einzelnen: Installation Check (80h) Mit dieser Funktion kann berprft werden, ob XKeyb resident installiert ist. Eingabe: AX=AD80h Ausgabe: AL=00h -> Kein Tastaturtreiber. AL=FFh -> BX=584Bh -> XKeyb installiert.CX=Versionsnummer BX<>584Bh -> Anderer Tastaturtreiber. (Vermutlich KEYB.COM) Set keyboard mapping (82h) Diese Funktion schaltet zwischen XKeyb und dem BIOS- Tastaturtreiber um. (Control-Alt-F1 / F2) Eingabe: AX=AD82h BL=00h -> BIOS-Tastaturtreiber BL=FFh -> XKeyb Ausgabe: CF=1 -> Fehler CF=0 -> Alles klar. W„hrend die Funktionen 80h und 82h auch bei KEYB.COM vorhanden sind, existieren alle nachfolgenden ausschlieálich bei XKeyb ab Version 1.20. Set key translation (90h) Die Aufgabe dieser Funktion ist es, die šbersetzung einer Taste zu ver„ndern. XKeyb 1.50 Dokumentation Seite 13 (C) 1994 Dietmar H”hmann Eingabe: DI=Tastennummer ( = Scancode der Taste) BL=Normale Belegung CH=Belegung mit Shift CL=Belegung mit Control DH=Belegung mit Alt DL=Belegung mit AltGr / Control+Alt BH=Tastenstatus Ausgabe: AX=0 -> Alles klar AX=4 -> Unerlaubte Tastennummer Anmerkung: Die Belegungen sind entweder Ascii-Werte, die der Taste direkt zugeordnet werden oder die Nummern von XStrings/XFunctions. Die Bedeutung des Tastenstatus: Bit Bedeutung (Bit = 1) 0 Taste wird von SCROLL-Lock beeinfluát 1 Taste wird von NUM-Lock beeinfluát 2 Taste wird von CAPS-Lock beeinfluát 3 Taste ist auf Ebene 4 (AltGr) mit XStr belegt 4 XStr/XFunc auf Ebene 3 (Alt) 5 XStr/XFunc auf Ebene 2 (Control) 6 XStr/XFunc auf Ebene 1 (Shift) 7 XStr/XFunc auf Ebene 0 (ohne Alles) Get key translation (91h) Das Gegenstck zur Funktion 90h. Eingabe: AX=AD91h DI=Tastennummer Ausgabe: AX=0 -> Ok. BX,CX,DX enthalten Belegung. AX=4 -> Unerlaubte Tastennummer. Wait for key hit (94h) XKeyb 1.50 Dokumentation Seite 14 (C) 1994 Dietmar H”hmann Wie der Name schon sagt, wartet diese Funktion auf einen Tastendruck. Dabei wird der Inhalt des Tastaturbuffers ignoriert. Eingabe: AX=AD94h Ausgabe: AH=Virtueller Scancode BH=Realer Scancode AL=ASCII-Wert BL=Tastaturstatus DH=Tastenebene (0-4) Anmerkung: Die Rckgabe zweier Scancodes mag zun„chst verwirrend erscheinen. Der Grund dafr ist folgender: Einige Tasten erzeugen mit bestimmten Umschalttasten einen anderen Scancode als normal (den virtuellen Scancode). Dies ist z.B. bei den Funktionstasten F1-F10 und einem Teil der Cursor-Tasten der Fall. Bei den brigen Tasten sind beide Scancodes gleich. BL enth„lt den Tastaturstatus aus 0:417h und gibt den Status der Umschalttasten an. DH gibt die Tastenebene an, aus der der ASCII-Wert stammt. Put key into buffer (95h) Die Aufgabe dieser Funktion besteht darin, eine bergebene 'Taste' im Tastaturbuffer abzulegen. Eingabe: AX=AD95h BH=Scancode (virtuell) BL=ASCII-Wert Ausgabe: AX=0 -> Ok AX=5 -> Buffer voll Set XString (96h) Mit Set XString wird ein Erweiterungsstring ge„ndert oder neu eingerichtet. Eingabe: AX=AD96h BL=XString-Nummer (1-200) ES:DI=Zeiger auf den String Ausgabe: AX=0 -> Ok AX=1 -> Unerlaubte XString-Nummer AX=2 -> XString-Speicher voll Anmerkung: Das erste Byte des Strings muá die L„nge enthalten (Pascal- String). Es werden KEINE Sonderzeichen (wie \n oder \S072) bersetzt. Soll der XString Tasten enthalten, die keinen ASCII-Wert erzeugen (wie Cursor- und Funktionstasten), so sind diese durch XKeyb 1.50 Dokumentation Seite 15 (C) 1994 Dietmar H”hmann ein Nullbyte, gefolgt vom virtuellen Scancode der Taste im String einzutragen. Die Belegung 'ABC\[F11]DEF\n' wrde also durch den String 'ABC'#0#87'DEF'#13 erreicht. Get XString (97h) Das Gegenstck zu Set XString. Eingabe: AX=AD97h BL=XString-Nummer ES:DI=Zeiger auf Buffer fr String Ausgabe: AX=0 -> Ok. String steht ab ES:DI. AX=1 -> Unerlaubte XString-Nummer. AX=3 -> XString nicht definiert. Set XFunction (98h) Diese Funktion „hnelt der Funktion 96h, mit dem Unterschied, daá sie keinen XString, sondern eine XFunction definiert. Žhnlich wie mit XStrings k”nnen Tasten mit XFunctions belegt werden. Fr XFunctions sind dabei die Nummern 201 bis 240 reserviert. Wird eine Taste gedrckt, die mit einer XFunction belegt ist, k”nnen 3 Dinge passieren: 1. Die Funktion wird sofort ausgefhrt 2. Die Funktion wird beim n„chsten INT16 (Tastatur-BIOS) ausgefhrt. 3. Die Funktion wird nicht ausgefhrt. Stattdessen wird ein Flag gesetzt, welches angibt, daá die Funktion aktiviert wurde. Eingabe: AX=AD98h BL=XFunction-Nummer (0=Unbenutzte Funktionsnummer suchen) BH=Aufrufkonvention: 0=Beim n„chsten INT16 1=Sofort 2=Flag setzen ES:DI=Zeiger auf Routine / Flag Ausgabe: AX=0 -> Ok. BL = Funktionsnummer. AX=1 -> Unerlaubte XFunction-Nummer AX=6 -> Keine Funktionsnummer frei AX=7 -> Unzul„ssige Aufrufkonvention Anmerkung: Die angegebene Routine muá FAR sein. Sie erh„lt als Parameter ein Word, das im oberen Byte den Scancode der Taste und im unteren Byte den Tastaturstatus enth„lt. Dies dient der Unterscheidung, falls mehrere Tasten die gleiche Funktion ausl”sen. Enth„lt BH den Wert 2, so wird dieses Word beim aktivieren der Funktion bei ES:DI gespeichert. Alles Andere ist dann Sache des entsprechenden Programms. XKeyb 1.50 Dokumentation Seite 16 (C) 1994 Dietmar H”hmann Wenn die angegebene Routine sofort ausgefhrt wird (BH=1), sind bei der Ausfhrung die Hardware-Interrupts noch nicht wieder freigeschaltet (der Interrupt-Controller hat noch kein EoI erhalten). Deshalb sollte die Aufrufkonvention 0 wenn m”glich bevorzugt werden. Dabei sind w„hrend der Ausfhrung der Routine alle blichen Interrupts zugelassen. Innerhalb der Routine ist darauf zu achten, daá vor einem Zugriff auf das eigene Datensegment das DS-Register entsprechend gesetzt werden muá. Desweiteren empfiehlt es sich ggf. auf einen eigenen Stack umzuschalten. Die Register DS und BP sollen beim Rcksprung die gleichen Werte enthalten, wie beim Eintritt. Clear XFunction (99h) L”scht eine XFunction-Definition. Eingabe: BL=Nummer der XFunction (201-240) Ausgabe: AX=0 -> Ok AX=1 -> Unzul„ssige XFunktion-Nummer AX=8 -> Angegebene XFunktion ist nicht belegt Set translation table address (9Ah) Setzt die Adresse der Tastatur-šbersetzungstabelle. Eingabe: ES:DI=Adresse der neuen Tabelle Ausgabe: AX=0 -> Ok Anmerkung: Diese Funktion erm”glicht das Verwalten mehrerer Tastaturbelegungen, durch Umschalten der šbersetzungstabelle. Jede Tabelle besteht aus 100 Eintr„gen. Diese wiederum bestehen aus den Belegungen fr 5 Ebenen und dem Statusbyte als letztem Byte des Eintrags. Wenn mit dieser Funktion eine neue Tabelle eingestellt wird, sollte sichergestellt sein, daá diese auch initialisiert ist bzw. noch wird. Ansonsten erzeugt die Tastatur wirre Zeichen. Get translation table address (9Bh) Ermittelt die Adresse der aktuellen šbersetzungstabelle. Eingabe: AX=AD9Bh Ausgabe: ES:DI=Zeiger auf šbersetzungstabelle. Get last XString (9Ch) Ermittelt die Nummer des letzten definierten XStrings. XKeyb 1.50 Dokumentation Seite 17 (C) 1994 Dietmar H”hmann Eingabe: AX=AD9Ch Ausgabe: BL=Nummer des letzten XStrings Get combination table address (9Dh) Adresse der Tabelle mit den Kombinationszeichen holen. Die Tabelle besitzt folgenden Aufbau: 1. Eintrag Erstes Zeichen der Kombination (z.B. ') Anzahl der folgenden Kombinationen (z.B. 2) 1. Kombination Zweites Zeichen der Kombination (z.B. a) Resultierendes Zeichen (z.B. a) 2. Kombination Zweites Zeichen der Kombination (z.B. i) Resultierendes Zeichen (z.B. i) 2. Eintrag ... Nach dem letzten Eintrag folgt ein Nullbyte. Die Gr”áe der Tabelle betr„gt, einschlieálich Nullbyte, max. 192 Byte. Eingabe: AX=AD9Dh Ausgabe: ES:DI=Zeiger auf Tabelle. Get shift table address (9Eh) Ermittelt die Adresse der Liste mit den Scancodes der Umschalttasten: Shift1 Shift2 Control Alt Scroll Num Caps Insert Eingabe: AX=AD9E Ausgabe: ES:DI=Zeiger auf Tabelle. XKeyb 1.50 Dokumentation Seite 18 (C) 1994 Dietmar H”hmann Die Verwendung des PI mit der Unit XKeyb_PI. XKeyb_PI ist eine Turbo Pascal Unit, die die Funktionen des PI fr Pascal zur Verfgung stellt. Sie enth„lt eine Reihe von Funktionen, die die Aufrufe unmittelbar an das PI weiterleiten: Function TestInstalled : Word; Procedure XKeybOn(B : Boolean); Procedure SetKey(KeyNum,Normal,Shift,Control,Alt,AltGr,Status); Procedure GetKey(Num:Byte;Var Norm,Shift,Ctrl,Alt,AltGr,Status); Procedure WaitForKey(Var VScan,RScan,Ascii,KeyStat,Ebene:Byte); Procedure PutKey(Ascii,Scan : Byte); Procedure SetXStr(Num : Byte; XStr : String); Procedure GetXStr(Num : Byte; Var XStr : String); Procedure SetXFunc(Var Num:Byte; CallConv:Byte; Adresse:Pointer); Procedure ClearXFunc(Num : Byte); Procedure SetTable(P : Pointer); Function TableAdr : Pointer; Function LastXStr : Byte; Function CombiTabAdr : Pointer; Function ShiftTabAdr : Pointer; Nach der Lektre des Kapitels ber das PI sollte die Funktion dieser Routinen einigermaáen klar sein. Falls nicht, enth„lt die Datei XKeyb_PI.PAS weitere Informationen. Nach der Ausfhrung einer dieser Funktionen enth„lt die Variable Fehler den Fehlerstatus: 0 = kein Fehler, sonst Fehlercode (siehe XKeyb_PI.PAS und Kapitel ber das PI) Auáer diesen Funktionen, die direkt Funktionen des PI repr„sentieren, enth„lt die Unit noch 2 weitere Routinen: Enter und Leave. XKeyb 1.50 Dokumentation Seite 19 (C) 1994 Dietmar H”hmann Beide sollen nur innerhalb einer XFunktion-Routine verwendet werden. Enter sichert das DS-Register, l„dt DS mit der Adresse des TP- Datensegments und stellt SS:SP auf den TP-Stack ein. Leave stellt SS:SP und DS auf ihre alten Werte zurck. Eine XFunktion-Routine k”nnte damit folgendermaáen aussehen: Type KeyTyp = Record Stat,Scan : Byte; End; {$F+} { Routine muá FAR sein! } Procedure MyHotkey(Key : Keytyp); Begin Enter; DoIt(Key); Leave; End; {$F-} Bei Verwendung von Enter und Leave darf die Routine beliebige globale, jedoch KEINE lokalen Variablen verwenden. Diese Beschr„nkung bezieht sich aber nur auf die XFunktion- Routine. Alle von dieser aufgerufenen Routinen drfen beliebige Variablen erzeugen und verwenden. XKeyb 1.50 Dokumentation Seite 20 (C) 1994 Dietmar H”hmann Die Bedienung des Macrorecorders KeyMan. Zu XKeyb geh”rt unter Anderem auch das Programm KEYMAN.EXE. Dabei handelt es sich um einen einfachen Macrorecorder, der resident im Speicher installiert wird und, via Hotkey aufgerufen, das einfache Umbelegen von Tasten erm”glicht. Nach dem Laden von KeyMan, was nur funktioniert, wenn XKeyb bereits im Speicher ist, kann es ber den Hotkey aktiviert werden. Der Standard-Hotkey ist F11. Nach der Aktivierung ”ffnet sich auf dem Bildschirm ein Fenster. Jetzt k”nnen Sie entweder eine Taste drcken, die neu belegt werden soll, oder aber den Hotkey, um einen neuen Hotkey einzustellen. Haben Sie eine umzubelegende Taste gedrckt erscheint die aktuelle Belegung. Diese k”nnen Sie jetzt editieren. Dabei l”scht Backspace das letzte Zeichen / die letzte Taste und der Hotkey beendet die Eingabe. Alle anderen Tasten werden angeh„ngt. Um ein Backspace einzugeben, das in die Belegung bernommen wird drcken Sie Alt und 8 auf dem numerischen Tastenblock. Nach Bet„tigung des Hotkey verschwindet das Fenster und die Taste wird mit der Belegung versehen. Ausnahme: Es trat ein Fehler auf. In diesem Fall erscheint eine entsprechende Meldung die mit einer Taste best„tigt werden muá. Wenn die neue Belegung mehr als ein Zeichen umfaát wird automatisch ein XString erzeugt und auf die Taste gelegt. Haben Sie nach der Aktivierung von KeyMan den Hotkey gedrckt, fordert KeyMan Sie auf, den neuen Hotkey zu drcken. Nach Bet„tigung einer Taste verschwindet das Fenster und diese Taste ist der neue Hotkey. Wenn Sie eine interaktiv erstellte Tastenbelegung sichern wollen, so k”nnen Sie das mittels LISTXDEF >xyz.KEY tun. XKeyb 1.50 Dokumentation Seite 21 (C) 1994 Dietmar H”hmann Versionsunterschiede Version 1.1: Erg„nzt um Programmier-Interface. Neu: Makrorecorder KeyMan. Version 1.2: Implementation von Kombinationszeichen. Fehlerbehebung bei Aufruf des INT15h (Schnittstelle fr Zusatztastaturtreiber) Version 1.22: Funktion von Control+Break ge„ndert in Aufruf von INT 1Bh und Erzeugung von ^C. Fehlerkorrektur: Die Tastenkombinationen ALT+1 bis ALT+0 und ALT+' erzeugen ab 1.22 die korrekten virtuellen Scancodes. Version 1.24: Sonderfunktion 247: Aufruf von INT 19h. Unter DOS: Rechner neu booten (funktioniert nicht auf allen Systemen) Unter OS/2 2.0: DOS-Box schlieáen. Fehlerbehebung: Mit den in der Datei GR2.KEY definierten XStrings liefern die Tasten F11 und F12 die korrekten virtuellen Scancodes. Dokumentation liegt als WinWord-Datei vor. Version 1.3: Fehler bei der Umschaltung auf BIOS-Tastaturtreiber behoben. Problem mit nicht funktionierendem Backslash im MS-DOS-Editor behoben. Bei Rechnern mit AMI-BIOS wird beim Warmstart kein Speichertest mehr durchgefhrt. Fehler bei automatischer Gr”áenanpassung des Speicherbereiches fr XStrings behoben. Erweiterter Tastaturstatus wird, bis auf das Bit fr die rechte Control-Taste, untersttzt. Version 1.5: XKeyb 1.50 Dokumentation Seite 22 (C) 1994 Dietmar H”hmann Bessere M”glichkeiten, den Treiber in UMBs zu laden durch XKEYBRES. Handbuch als Online-Dokumentation fr Windows 3.1. XKeyb 1.50 Dokumentation Seite 23 (C) 1994 Dietmar H”hmann Nutzungsbedingungen. Xkeyb unterliegt der `GNU general public license'. N„heres siehe `copying.txt'. Xkeyb is placed under the `GNU general public license'. See `copying.txt' for details. XKeyb 1.50 Dokumentation Seite 24 (C) 1994 Dietmar H”hmann Die zu XKeyb geh”renden Dateien. Datei Beschreibung XKEYB.EXE Tastaturtreiber XKeyb. XKEYB.DOC Diese Dokumentation als Winword 2.0-Datei. XKEYB.TXT Diese Dokumentation als ASCII-Datei. GR2.KEY Definitionsdatei fr Deutsche Tastatur. ??.KEY Definitionsdateien fr alle L„nder, die von KEYB.COM untersttzt werden. (17 Dateien) PC8.KEY Definitionsdatei fr Standard- Kombinationszeichen.(= Codepage 437 bei KEYB.COM) PC850.KEY Definition fr Kombinationszeichen mit dem PC850- Zeichensatz. (=Codepage 850 bei KEYB.COM) ECMA94.KEY Definition fr Kombinationszeichen mit dem ECMA 94 Latin 1-Zeichensatz. KEYMAN.EXE Macrorecorder KeyMan. KEYMAN.PAS Quellcode zu KeyMan. LISTXDEF.EXE Programm zur Ausgabe der akt. Tastaturbelegung. LISTXDEF.PAS Quellcode zu LISTXDEF. XKEYB_PI.PAS TP-Unit fr das Programm-Interface. XKEYBRES.EXE Verkleinerte Version von XKeyb. Enth„lt nur den Teil, der Resident bleibt. Kann dadurch leichter in UMBs geladen werden. XKEYB.HLP XKeyb Online-Dokumentation fr Windows 3.1 copying.txt GNU general public license Dateien insgesamt: 32