Automatische Tastatur für DOS

Wir haben einen Tip, mit dem Sie nahezu jedem Anwenderprogramm Tastatur-Eingaben, die normalerweise Sie tätigen müßten, im voraus mitteilen können, ohne daß Sie auch nur einen einzigen Finger krümmen müssen. »KEYIN« plaziert Tastendrücke in den Tastatur-Puffer des PCs, was den selben Effekt hat, als würden Sie eine Taste direkt drücken. Wenn Sie zum Beispiel ein Programm haben, das Ihnen bei jedem Start eine Copyright-Meldung präsentiert, die Sie schon in- und auswendig kennen, jedesmal aber mit Enter bestätigen müssen, sorgt KEYIN für Abhilfe. Andere Programme wie Enable, wollen beispielsweise immer die Uhrzeit und das aktuelle Tages-Datum wissen, was eigentlich in Ordnung, aber bei den meisten PCs mit Echtzeituhr überflüssig ist. Um zum Beispiel einem Programm zwei »Enter-Tasten« vorauszuschicken fügen Sie in die aufrufende Batch-Datei vor dem eigentlichen Programm-Namen die Zeile »KEYIN \13\13« ein. Die 13 steht für Return. Buchstaben, Zeichen oder Ziffern können Sie direkt angeben. »KEYIN ja\13« schickt zum Beispiel das Wort »ja« mit Return in den Tastatur-Puffer, »KEYIN 0815« entsprechend Nullachtfünfzehn ohne Return. Erweiterte Tasten, so die Funktions- oder Cursor-Tasten leiten Sie mit »\0« ein. »KEYIN \075« würde also den Cursor nach links bewegen. Wenn Word 4.0 nach dem Programmstart automatisch [Strg] + [F7] ausführen soll, damit sämtliche Texte aufgelistet werden, verwenden Sie einfach den Stapeljob W.BAT:

@ECHO OFF
CD \WORD
KEYIN "\0100"
WORD

Kennen Sie die vom Tastaturtreiber verwendeten Codes nicht, so hilft Ihnen unser Tip »BIOS-Tastaturcodes ermitteln« weiter. Die hexadezimalen Codes, die Sie dort erhalten, müssen Sie lediglich ins Dezimalformat umwandeln, wobei Sie selbstverständlich unser Programm CONVERT.DEB im Kapitel »Andere Befehle« zuhilfe nehmen können.

KEYIN beinhaltet einen kleinen »Interpreter«, der es Ihnen ermöglicht, jede beliebige Tastenkombination im Puffer zu plazieren. Der »Interpreter« wertet Escape-Sequenzen aus, die durch das Zeichen » \ « eingeleitet werden und wandelt die nachfolgende Dezimalzahl in einen Tastendruck um. Damit der »Interpreter« bei der Aufeinanderfolge von Escape-Folgen und Ziffern nicht durcheinander gerät, bietet er Ihnen die Freiheit, jede Escape-Sequenz durch ein Leerzeichen abzuschliessen. Dieses gelangt nicht in den Tastaturpuffer. Folgt jedoch ein anderes Zeichen auf die Sequenz, berücksichtigt KEYIN auch dieses. Wenn auf den umgekehrten Schrägstrich keine Ziffer folgt, legt der »Interpreter« die entsprechende Taste direkt im Tastaturpuffer ab. Die Eingabe des Schrägstrichs » \ « selbst können Sie daher mit »KEYIN \\« hervorrufen. Natürlich geht es auch mit »KEYIN \92«, da 92 der ASCII-Wert dieses Zeichens ist. Um Ihnen das Eingeben der Umleitungszeichen » > «, » < « und » | « zu erleichtern, ignoriert der »Interpreter« alle doppelten Anführungszeichen in der Kommandozeile. Wollen Sie das Zeichen » > « im Tastaturpuffer ablegen, geben Sie daher »KEYIN „>“« ein. Ohne die Anführungsstriche würde DOS die Umleitung bereits beim Aufruf von KEYIN auswerten und einen »Fehler beim Erstellen der Datei« monieren. Befindet sich das Umleitungszeichen dagegen innerhalb von paarigen Anführungsstrichen, wertet DOS es als Text und ignoriert die Umleitung. Benötigen Sie das Anführunsgszeichen selbst, bieten sich analog zu » \ « die beiden Möglichkeiten »KEYIN \“« oder »KEYIN \34« an.

Leider wirkt KEYIN nur bei Programmen, die die Tastatur »brav« über das BIOS abfragen und den Puffer nicht gleich löschen, woran sich aber die meisten Anwendungen (sogar Word 4.0!) tatsächlich halten. Die Anzahl der Tasten ist auf die Puffergröße – normalerweise 15 Tasten – beschränkt. Mit 15 Angaben können Sie aber schon sehr viel voreinstellen. Genügt das trotzdem nicht, vergrößern Sie einfach mit KBDBUFF.DEB den Tastaturpuffer.

Name: KEYIN.DEB
Funktion: Versorgt beliebige Anwendungen mit echten Tastatureingaben.
Übersetzung: DEBUG <KEYIN.DEB
Prüfsumme: 44CC
Anwendung: KEYIN [TEXT] [\CODE] [\0ERWEITERT] […]TEXT = Tastendrücke im ASCII-Format \ = Start einer Escape-Sequenz: \CODE = dezimaler ASCII-Code der Taste \0ERWEITERT = Erweiterter (Scan-) Code der Taste “ wird ignoriert \\ = \

\“ = „

Einschränkungen: Die Anzahl der Tasten ist auf die Größe des Tastatur-puffers beschränkt. Das Programm funktioniert nur bei Anwendungen, die die Tastatur über das BIOS abfragen

und den Tastaturpuffer nicht löschen.

A
MOV AX,40           ;100
MOV DS,AX           ;103
MOV SI,81           ;105
CALL 166            ;108
CALL 166            ;10B
JZ 16E              ;10E
CMP AL,22           ;110
JZ 10B              ;112
CMP AL,5C           ;114
JNZ 145             ;116
CALL 166            ;118
XOR CX,CX           ;11B
MOV AH,0            ;11D
MOV BL,AL           ;11F
SUB AL,30           ;121
JB 134              ;123
CMP AL,9            ;125
JA 134              ;127
AAD                 ;129
MOV AH,AL           ;12B
CALL 166            ;12D
LOOPNZ 121          ;130
JMP 13B             ;132
JCXZ 143            ;134
CMP AL,F0           ;136
JZ 13B              ;138
DEC SI              ;13A
XCHG BL,AL          ;13B
SUB AL,30           ;13D
JZ 147              ;13F 
MOV BL,AH           ;141
MOV AL,BL           ;143
MOV AH,0            ;145
MOV BX,[1C]         ;147
MOV [BX],AX         ;14B
ADD BX,2            ;14D
CMP BX,[82]         ;150
JB 15A              ;154
MOV BX,[80]         ;156
CMP BX,[1A]         ;15A
JZ 164              ;15E
MOV [1C],BX         ;160
JMP 10B             ;164
CS:MOV AL,[SI]      ;166
CMP AL,D            ;169
JZ 16E              ;16B
INC SI              ;16D
RET                 ;16E

RCX
6F
NKEYIN.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot