Programmieren Sie Ihre Tastatur!
Mit diesem Programm werden nicht nur die Funktionstasten, sondern die gesamte Tastatur frei programmierbar.
Wenn Sie das Programm KEY-PROGGER (Listing 1) eingegeben haben, können Sie es mit LOAD"KEY-PROGGER",1,1 oder, wenn Sie ein Diskettenlaufwerk besitzen, mit LOAD"KEY-PROGGER",8,1 laden. Nach dem Laden geben Sie am besten den Basic-Befehl NEW ein, da Sie sonst später eine OUT OF MEMORY-Meldung erhalten. Nun sind Sie soweit, daß Sie das Programm mit SYS 49152 starten können. Nach dem Starten istjedoch keine Veränderung zu bemerken. Durch den SYS-Befehl wird nur die Tastaturabfrage über eine neue Routine geleitet, welche die Tastenfunktionen aus einer Tabelle liest, die im RAM steht, und daher verändert werden kann. Wie aber ändert man nun die Tastenbelegung? Dazu ist der leistungsfähige #-Befehl implementiert. Damit KEY-PROGGER mit möglichst vielen Erweiterungen zusammenarbeitet, ist es möglich, diesen Befehl ein- und auszuschalten. Um also die Tastenbelegung zu ändern, muß dieser Befehl zuerst eingeschaltet werden. Dies geschieht mit SYS 49152+3. Ausgeschaltet wird er mit SYS 49152+6. Die Anwendung des # -Befehls ist sehr einfach. Sie geschieht in der Form: #nr,string
nr entspricht in den allermeisten Fällen dem ASCII-Wert eines Zeichens. Alle möglichen Tastaturzuordnungen sind in Bild 1 aufgeführt. Wo dies nicht so ist, kann die Nummer mit einem kleinen Programm festgestellt werden:
10 FORI=0TO255
20 #I,STR$(I)
30 NEXTI

Nachdem dieses kleine Programm mit RUN gestartet wird, erscheint beim Druck auf jede Taste eine Zahl auf dem Bildschirm. Diese Zahl ist die Nummer der Taste. Es sind jedoch nicht alle 256 Werte von der Tastatur aus erreichbar. Insgesamt erhält man jedoch 187 programmierbare Tastenfunktionen. Diese Zahl reduziert sich jedoch noch einmal, da es nicht sinnvoll ist, manche Tasten, wie zum Beispiel die RETURN-Taste umzudefinieren, da diese wichtige Funktionen erfüllen.
Mit dem # -Befehl können jeder Taste bis zu 10 Zeichen zugeordnet werden. Versuchen Sie es doch einmal, zum Beispiel mit:
#12,"LIST"+CHR$(13)
Wenn Sie nun gleichzeitig CTRL und L drücken, erscheint der Befehl LIST auf dem Bildschirm und wird gleich ausgeführt. Haben Sie nach einer Zeit des Herumprobierens den Wunsch, die alte Tastaturbelegung wieder herzustellen, so ist dies ganz einfach mit dem Befehl SYS 49152+9 möglich.
Außerdem kann die Belegung der Tastatur gespeichert und wieder geladen werden. Die Befehle dazu sind:
Speichern: SYS 49152+12,"name",ga
Laden: SYS 49152+15,"name",ga
»ga« ist dabei die Geräteadresse, also 1 für Kassettenrecorder und 8 für Diskettenlaufwerk. So kann jeder seine »ideale« Lösung auf einfachste Weise festhalten.
Tastatur-Generator
Die Anwendungsgebiete der programmierten Tastaturen sind nahezu unbegrenzt. So läßt sich der C 64 wie der SX 64 an ein Diskettenlaufwerk anpassen. Mit:
#131, "LOAD"+CHR$(34)+ " * " +CHR$(34)+ ",8"
wird die RUN/STOP-Taste so umdefiniert, daß nicht mehr ein Kassettenprogramm, sondern das erste Programm von der Diskette geladen wird.
Da KEY-PROGGER auch ohne Probleme mit dem DOS 5.1 zusammenarbeitet, istjetztauch ein Directoryauf Knopfdruck möglich.
Will man gleichzeitig mit KEY-PROGGER und Hypra-Load arbeiten, so muß man erst Hypra-Load und dann KEY-PROGGER mitSYS 49152+18 statt mit SYS 49152 starten.
Am einfachsten ist die Belegung der Tastatur mit dem Tastatur-Generator. Nach Abtippen von Listing 2 speichern Sie den Tastatur-Generator zuerst ab. Nun laden Sie KEY-PROGGER wie oben beschrieben und geben anschließend NEW ein. Danach können Sie den Tastatur-Generator laden und mit RUN starten. Der Tastatur-Generator startet KEY-PROGGER automatisch. Nach zirka fünf Sekunden meldet sich der Tastatur-Generator mit der Frage, welche Taste umdefiniert werden soll. Sie brauchen nur diese Taste zu drücken. Der Computer zeigt dann, wie die Taste bisher belegt war. Danach können Sie Ihre neue Belegung in ein 10Zeichen breites Feld eingeben. Die Taste DEL löscht die Eingabe. Mit RETURN wird die Eingabe abgeschlossen. Haben Sie einen Befehl eingegeben, der sofort nach Drücken der Taste ausgeführt werden soll, zum Beispiel RUN, so schließen Sie die Eingabe mit SHIFT RETURN ab. Drücken Sie RETURN, ohne eine neue Belegung eingegeben zu haben, so bleibt die alte Belegung erhalten.
Nach der Eingabe erscheint ein Menü, mit dem Sie die Definitionen fortsetzen können (1), die letzte Eingabe rückgängig machen (2), die neue Tastaturbelegung speichern (3), die ursprüngliche Belegung wieder herstellen (4) oder das Programm beenden können (5). Somit kann sich jeder auf einfachste Weise eine individuelle Tastaturbelegung gestalten.
(Markus Stecher/ah)PROGRAMM : KEY-PROGGER C000 C1B8 ----------------------------------- C000 : 4C 72 C1 4C 82 C0 4C 67 AD C008 : C1 4C 4B C0 4C 7F C1 4C 3B C010 : 97 C1 4C AF C1 A9 00 A0 3B C018 : A0 85 F7 84 F8 A2 20 A0 70 C020 : 00 B1 F7 91 F7 C8 D0 F9 26 C028 : E6 F8 CA D0 F4 60 A9 00 50 C030 : A0 E0 85 F7 84 F8 A2 20 7B C038 : A0 00 B1 F7 91 F7 C8 D0 E1 C040 : F9 E6 F8 CA D0 F4 A9 35 09 C048 : 85 01 60 A9 B6 A0 C1 85 1E C050 : F7 84 F8 A2 00 A0 00 8A 36 C058 : 91 F7 C8 A9 00 91 F7 18 E9 C060 : A5 F7 69 0A 85 F7 A5 F8 3D C068 : 69 00 85 F8 E8 D0 E6 60 C3 C070 : A9 8D A0 C0 A2 4C 78 8E AB C078 : 34 EB 8D 35 EB 8C 36 EB 80 C080 : 58 60 A9 E3 A0 C0 8D 08 45 C088 : 03 8C 09 03 60 A9 B6 A0 E4 C090 : C1 85 F7 84 F8 86 F9 A2 93 C098 : 00 86 FA A5 F9 0A 85 FB 4D C0A0 : A5 FA 2A 85 FC 06 F9 26 32 C0A8 : FA 06 F9 26 FA 06 F9 26 FD C0B0 : FA 18 A5 F9 65 FB 85 F9 9F C0B8 : A5 FA 65 FC 85 FA 18 A5 AF C0C0 : F7 65 F9 85 F7 A5 F8 65 F4 C0C8 : FA 85 F8 A0 00 84 C6 B1 7A C0D0 : F7 99 77 02 F0 0A E6 C6 3A C0D8 : C8 C0 0A F0 03 4C CF C0 F4 C0E0 : 4C 42 EB 20 73 00 C9 23 F1 C0E8 : F0 06 20 79 00 4C E7 A7 64 C0F0 : 20 9B B7 86 F9 A2 00 A9 A4 C0F8 : B6 A0 C1 85 F7 84 F8 86 B4 C100 : FA A5 F9 0A 85 FB A5 FA 51 C108 : 2A 85 FC 06 F9 26 FA 06 BD C110 : F9 26 FA 06 F9 26 FA 18 89 C118 : A5 F9 65 FB 85 F9 A5 FA 47 C120 : 65 FC 85 FA 18 A5 F7 65 1D C128 : F9 85 F7 A5 F8 65 FA 85 48 C130 : F8 20 FD AE 20 9E AD 24 83 C138 : 0D 30 05 A2 16 4C 3A A4 E9 C140 : 20 A6 B6 C9 0B 90 05 A2 29 C148 : 17 4C 3A A4 AA A0 00 E8 2A C150 : CA F0 09 B1 22 91 F7 C8 2B C158 : C9 0D D0 F4 C0 0B F0 04 AB C160 : A9 00 91 F7 4C AE A7 A9 99 C168 : E4 A0 A7 8D 08 03 8C 09 15 C170 : 03 60 20 15 C0 20 2E C0 95 C178 : 20 4B C0 20 70 C0 60 20 41 C180 : FD AE 20 D4 E1 A9 B6 A0 FE C188 : C1 85 F7 84 F8 A9 F7 A2 9C C190 : B7 A0 CB 20 D8 FF 60 20 DD C198 : FD AE A9 00 85 0A 20 D4 2A C1A0 : E1 A9 01 85 B9 A5 0A A2 7D C1A8 : B6 A0 C1 20 D5 FF 60 20 42 C1B0 : 4B C0 20 70 C0 60 FF 1B B7
1000 rem tastatur-generator 1010 rem 1020 rem 1985 von markus stecher 1030 rem 1040 poke53280,0 1050 poke53281,0 1060 sys49152 1070 sys49152+3 1080 dimb$(255) 1090 gosub1700:gosub1740 1100 print"{clr}{rvon} tastatur-generator ";chr$(8) 1110 poke1,53 1120 print"welche taste ? "; 1130 z$="" 1140 geta$:ifa$=""then1140 1150 ifa$=chr$(13)then1180 1160 z$=z$+a$ 1170 goto1140 1180 z=val(z$) 1190 printchr$(34);chr$(20);chr$(z) 1200 b$=b$(z):cr=0 1210 l=len(b$(z)) 1220 ifright$(b$,1)=chr$(13)thenb$=left$(b$,l-1):cr=1 1230 print"{down}alte belegung: ";chr$(34);b$;chr$(34); 1240 ifcrthenprint"+chr$(13)"; 1250 print:print"{down}neue belegung: {SHIFT--} {SHIFT--}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}{left}";chr$(34);chr$(20); 1260 poke1,55 1270 f$="" 1280 geta$:ifa$=""then1280 1290 ifa$=chr$(20)thenprint:print"{up}{up}{up}{up}":goto1250 1300 ifa$=chr$(13)then1370 1310 ifa$=chr$(141)then1360 1320 iflen(f$)=10then1280 1330 printa$; 1340 f$=f$+a$ 1350 goto1280 1360 f$=f$+chr$(13) 1370 iff$=""thenf$=b$(z) 1380 al$=b$(z) 1390 b$(z)=f$ 1400 print 1410 print"{down}{down}bitte waehlen:" 1420 print"{down}naechste eingabe.............1" 1430 print"{down}letzte eingabe loeschen......2" 1440 print"{down}tastaturbelegung speichern...3" 1450 print"{down}alte belegung herstellen.....4" 1460 print"{down}ende.........................5{down}{down}" 1470 geta$:ifa$<"1"ora$>"5"then1470 1480 onval(a$)goto1490,1500,1520,1610,1660 1490 goto1100 1500 b$(z)=al$ 1510 goto1100 1520 input"{clr}{down}{down}name ";n$ 1530 print"{down}{down}<d>isk oder <t>ape ? "; 1540 getg$:ifg$<>"d"andg$<>"t"then1540 1550 ga=1 1560 ifg$="d"thenga=8 1570 print"{down}{down}bitte warten" 1580 gosub1780 1590 sys49152+12,n$,ga 1600 goto1100 1610 print"{clr}{down}{down}soll wirklich die alte belegung" 1620 print"{down}hergestellt werden (j/n) ?" 1630 geta$:ifa$=<>"j"anda$<>"n"then1630 1640 ifa$="j"thensys49152+9 1650 goto1100 1660 print"{clr}{down}{down} auf wiedersehen !" 1670 gosub1780 1680 poke1,53 1690 end 1700 fori=0to255 1710 #i,str$(i)+chr$(13) 1720 nexti 1730 return 1740 fori=0to255 1750 b$(i)=chr$(i) 1760 nexti 1770 return 1780 fori=0to255 1790 #i,b$(i) 1800 nexti 1810 return