Hi zusammen,
Eine Sache, die mir immer die Suppe des Retrocomputings etwas versalzen hat, ist, dass ich seit etlichen Jahren mit dem NEO2 Tastaturlayout tippe, das für alle modernen Systeme (Linux, Windows) verfügbar ist, nur eben nicht für DOS. Und da mit QWERZ zu tippen ist mir einfach zu unbequem.
Einen einfachen KEYB-Treiber zu schreiben, der wie das "Original" sich in Interrupt 15 hängt, dort alle Tasten übersetzt und ans BIOS entsprechende INT16 Aufrufe weitergibt, ist leider nicht ohne weiteres möglich:
Beim INT15 kommen nur die Tastenanschläge an, keine Scancodes und keine Key Up Events. Da jedoch beim NEO Layout die CAPS-LOCK-Taste und auch die #-Taste (linke neben Return) hier Umschalttasten für eine andere Tastaturebene sind, reicht das nicht. Für eine eigene "Shift"-Taste für eine andere Ebene brauch ich auch die Key Up Events.
Mein erster Wurf war jetzt, das SeaBIOS, das von QEMU und co verwendet wird, umzuhacken. Das klappt wunderbar, ist aber etwas unschön und unflexibel, da das z.B. nicht auf echter Hardware läuft. Mein nächster Schritt wird sein, mich direkt in INT9 (IRQ1) zu hängen, das BIOS zu umschiffen da alles selbst machen (Port 60h lesen, HW Interrupt im PIC acknowledgen...). Mein Code würde dann selbst die Keyboardflags für Shift, Ctrl, Alte etc in den BDAs setzen, um möglichst die Kompatibilität mit anderer Software zu wahren, für normale Tastenanschläge aber eben entsprechende INT16 Aufrufe erzeugen.
Würde das ganze als TSR (ähnlich von KEYB) machen, sowie als Option ROM, um konventionellen Speicher zu sparen
Hat sonst jemand so etwas schonmal gemacht oder versucht? Sieht wer Probleme, wenn ich dem BIOS die "Macht" über INT9 entziehe, obwohl ich brav alle BDAs richtig setze und meine Keypresses als INT16 Aufrufe weiterreiche?
Gruß Flo