























                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 Hhmann





       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 gehrenden Dateien. ............................24

           XKeyb 1.50 Dokumentation  Seite 3      (C) 1994 Dietmar Hhmann





           Was XKeyb ist.



           Bei XKeyb handelt es sich, wie der Name schon vermuten lt, 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 Lnder konfiguriert werden kann.

           Allerdings gehen die Konfigurationsmglichkeiten weit ber die
           von Keyb hinaus. So lt sich XKeyb nicht nur fr verschiedene
           Nationalitten konfigurieren, sondern auch nach persnlichen
           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
           Mglichkeit, 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 beeinflut wird, und die Funktionen Shift, Control
           und Alt knnen auf beliebige Tasten gelegt werden. (Wem's
           gefllt...)

           Fr Programmierer ist das Programm-Interface von XKeyb gedacht.
           Es ermglicht den Zugriff auf weitergehende Funktionen.

       XKeyb 1.50 Dokumentation  Seite 4      (C) 1994 Dietmar Hhmann





       Wie XKeyb verwendet wird.



       Die grundstzliche Verwendung von XKeyb ist annhernd identisch
       zu der von Keyb.
       Das Programm wird mit

            XKEYB <Konfigurationsdatei>

       installiert. Im Lieferumfang sind Standard-Konfigurations-
       Dateien fr alle Lnder, die auch von Keyb untersttzt werden,
       enthalten.
       Der Name dieser Dateien setzt sich aus dem bekannten
       Lnderkrzel 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 gehrt zu XKeyb noch die Datei
       GR2.KEY. Diese enthlt eine Definition fr eine Deutsche
       Tastatur mit geringfgigen nderungen. Auerdem ist die
       Funktion der Caps-Lock-Taste von Shift-Lock in ein echtes Caps-
       Lock, welches ausschlielich fr die Buchstabentasten gilt,
       gendert.

       Diese Standarddefinitionen sollen als Grundlage fr
       individuelle Anpassungen der Tastaturbelegung dienen.
       Alle Manipulationen an der Tastaturbelegung werden bei XKeyb
       ber Definitionsdateien vorgenommen, die standardmig 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 nchsten
       Kapitel erlutert.

       Wenn die Tastenbelegung nach der Installation von XKeyb
       gendert werden soll, so ist dieses durch einen erneuten Aufruf
       von XKeyb mit einer anderen Definitionsdatei ohne Weiteres
       mglich. (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
       tatschlich bentigt wird (auf volle Paragrafen aufgerundet).
       Sollen nachtrglich weitere XStrings angelegt werden, so kann
       das am vorhandenen Speicherplatz scheitern. Um dies zu
       verhindern besteht die Mglichkeit, den Speicherplatz, der fr
       XStrings reserviert werden soll, explizit festzulegen. Dazu

           XKeyb 1.50 Dokumentation  Seite 5      (C) 1994 Dietmar Hhmann


           installieren Sie XKeyb mit der Option '/Xnn', wobei nn die
           Speichergre in Bytes angibt. Um XKeyb z.B. mit 480 Bytes
           Platz fr XStrings und mit Deutscher Tastaturbelegung zu
           installieren ist dieser Befehl ntig:

                XKEYB GR /X480
           oder
                XKEYB /X480 GR

           Neben der Option /X knnen noch die Optionen /U und /Q
           angegeben werden. /U(ninstall) entfernt die residente Kopie von
           XKeyb aus dem Speicher (sofern dies mglich ist), /Q(uiet)
           unterdrckt die Ausgabe von LIST-Abschnitten in
           Konfigurationsdateien (siehe auch nchstes Kapitel).

       XKeyb 1.50 Dokumentation  Seite 6      (C) 1994 Dietmar Hhmann





       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 Zugehrigen Erweiterungs-Strings definiert. Der
       Abschnitt SHIFTS legt fest, welchen Tasten die Funktionen
       Shift, Control und Alt zugeordnet sind. Desweiteren knnen im
       Abschnitt COMBI Kombinationszeichen definiert werden (z.B. ^ +
       a = a) Auerdem knnen 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 enthlt pro definierter Taste eine Zeile.
       Diese beginnt mit dem Scancode der Taste. An diesen knnen
       sich, ohne Zwischenraum, ein oder mehrere der Buchstaben N,C
       und S anschlieen, je nachdem, ob die Taste von NUM-, CAPS- und
       SCROLL-Lock beeinflut 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 bettigt wird.
       Danach folgen, jeweils durch Leerzeichen getrennt, die
       Belegungen fr 5 Tastenebenen: Normal, mit Shift, mit Control,
       mit Alt, mit Alt Gr. Dabei knnen 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
       gehrende 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 Hhmann



                   Reserviert fr XFunctions (siehe Kapitel ber das PI)           201 -
           240

                   Reserviert           241 -
           246

                   OS/2 2.0: DOS-Box schlieen. (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:

           <Nummer> <String>

           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 Gren
           123 \[DEL]\[CD]\[AF10]

           Wie das Beispiel vermuten lt, sind bei der Definition von
           XStrings diverse Sonderzeichen zulssig. Dabei gilt, da

       XKeyb 1.50 Dokumentation  Seite 8      (C) 1994 Dietmar Hhmann


       grundstzlich 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 aufwrts.

       \[PD]                   Taste Page Down / Bild abwrts.

       \[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 Wrtern 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 Hhmann


           Zeichenkombination. Darauf folgen n Zeichenpaare, nmlich
           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
           '+<Leerzeichen>='

           Nicht darstellbare Zeichen werden durch ihren ASCII-Wert mit
           vorangestelltem Doppelkreuz angegeben.
           Eine Sonderfunktion kommt dem Ausrufezeichen zu: Es lscht die
           bestehende Definition fr eine Gruppe von Kombinationszeichen:

           ^ ! aa

           Diese Zeile lscht alle Kombinationszeichen, die mit ^ anfangen
           und definiert anschlieend die Kombination ^+a=a.



           [CONTINUE]

           Ein CONTINUE-Abschnitt enthlt nur eine Zeile. In dieser
           wiederum steht der Name einer Konfigurationsdatei.
           Findet XKeyb einen solchen Abschnitt, so wird die Bearbeitung
           der aktuellen Konfigurationsdatei beendet. Anschlieend wird
           die angegebene Konfigurationsdatei bearbeitet. Auf diese Weise
           ist eine Verkettung von Konfigurationsdateien mglich.



           [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 Hhmann





       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 groen Routinen zum
       Laden der Konfigurationsdateien braucht der Tastaturtreiber
       whrend 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
       enthlt alle Teile des Tastaturtreibers, die resident bleiben,
       aber nur minimale Initialisierungsroutinen. Dadurch wird das
       Programm erheblich kleiner und kann in Speicherblcke ab einer
       Gre 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 zunchst
       deaktiviert (so als wre er mit ALT Control F1 deaktiviert
       worden).
       Nach der Initialisierung von XKEYBRES kann mit XKEYB
       <Definitionsdatei> eine Tastaturdefinition geladen werden.
       Dabei wird der Tastaturtreiber auch automatisch in den aktiven
       Zustand geschaltet.

       Auerdem sind bei XKEYBRES zwei Dinge zu beachten:
       Zum einen wird das Programm beim Aufruf grundstzlich resident
       Installiert. Auch dann, wenn bereits ein Tastaturtreiber
       installiert ist.
       Zum anderen kann die Gre 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 knnte beispielsweise so aussehen:

       @Echo off
       ...
       LH XKEYBRES
       XKEYB GR /Q
       ...

           XKeyb 1.50 Dokumentation  Seite 11     (C) 1994 Dietmar Hhmann





           Die Online-Dokumentation XKEYB.HLP



           Ab der XKEYB-Version 1.5 liegt die Datei XKEYB.HLP bei. Diese
           enthlt 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 Hhmann





       PI - Das Programm-Interface von XKeyb.



       Das Programm-Interface ist eine Schnittstelle fr andere
       Programme, ber die alle Funktionen von XKeyb bedient werden
       knnen. 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.


       Whrend die Funktionen 80h und 82h auch bei KEYB.COM vorhanden
       sind, existieren alle nachfolgenden ausschlielich bei XKeyb ab
       Version 1.20.


       Set key translation (90h)

       Die Aufgabe dieser Funktion ist es, die bersetzung einer Taste
       zu verndern.

           XKeyb 1.50 Dokumentation  Seite 13     (C) 1994 Dietmar Hhmann


           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
               beeinflut

           1   Taste wird von NUM-Lock
               beeinflut

           2   Taste wird von CAPS-Lock
               beeinflut

           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 Hhmann



       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 zunchst 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 enthlt 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 gendert 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 Lnge 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 Hhmann


           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 knnen 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,
           knnen 3 Dinge passieren:
           1. Die Funktion wird sofort ausgefhrt
           2. Die Funktion wird beim nchsten 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 nchsten 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 -> Unzulssige Aufrufkonvention

           Anmerkung:
           Die angegebene Routine mu FAR sein. Sie erhlt als Parameter
           ein Word, das im oberen Byte den Scancode der Taste und im
           unteren Byte den Tastaturstatus enthlt. Dies dient der
           Unterscheidung, falls mehrere Tasten die gleiche Funktion
           auslsen.
           Enthlt 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 Hhmann


       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 mglich
       bevorzugt werden. Dabei sind whrend 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)

       Lscht eine XFunction-Definition.

       Eingabe:    BL=Nummer der XFunction (201-240)

       Ausgabe:    AX=0 -> Ok
                   AX=1 -> Unzulssige 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 ermglicht das Verwalten mehrerer
       Tastaturbelegungen, durch Umschalten der bersetzungstabelle.
       Jede Tabelle besteht aus 100 Eintrgen. 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 Hhmann


           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 Gre der Tabelle betrgt, einschlielich 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 Hhmann





       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 enthlt 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 einigermaen klar sein. Falls nicht, enthlt
       die Datei XKeyb_PI.PAS weitere Informationen.
       Nach der Ausfhrung einer dieser Funktionen enthlt die
       Variable Fehler den Fehlerstatus: 0 = kein Fehler, sonst
       Fehlercode (siehe XKeyb_PI.PAS und Kapitel ber das PI)


       Auer diesen Funktionen, die direkt Funktionen des PI
       reprsentieren, enthlt die Unit noch 2 weitere Routinen: Enter
       und Leave.

           XKeyb 1.50 Dokumentation  Seite 19     (C) 1994 Dietmar Hhmann


           Beide sollen nur innerhalb einer XFunktion-Routine verwendet
           werden.

           Enter sichert das DS-Register, ldt 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 knnte damit folgendermaen 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 Beschrnkung 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 Hhmann





       Die Bedienung des Macrorecorders KeyMan.



       Zu XKeyb gehrt 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 ermglicht.

       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 knnen 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 knnen Sie jetzt editieren. Dabei
       lscht Backspace das letzte Zeichen / die letzte Taste und der
       Hotkey beendet die Eingabe. Alle anderen Tasten werden
       angehngt.
       Um ein Backspace einzugeben, das in die Belegung bernommen
       wird drcken Sie Alt und 8 auf dem numerischen Tastenblock.
       Nach Bettigung 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 besttigt werden mu.
       Wenn die neue Belegung mehr als ein Zeichen umfat 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
       Bettigung einer Taste verschwindet das Fenster und diese Taste
       ist der neue Hotkey.

       Wenn Sie eine interaktiv erstellte Tastenbelegung sichern
       wollen, so knnen Sie das mittels
       LISTXDEF >xyz.KEY
       tun.

           XKeyb 1.50 Dokumentation  Seite 21     (C) 1994 Dietmar Hhmann





           Versionsunterschiede



           Version 1.1:

           Ergnzt 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 gendert 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 schlieen.

           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 Grenanpassung 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 Hhmann



       Bessere Mglichkeiten, 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 Hhmann





           Nutzungsbedingungen.

           Xkeyb unterliegt der `GNU general public license'. 
           Nheres 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 Hhmann





           Die zu XKeyb gehrenden 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 Lnder, 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. Enthlt 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
