Lowlevel

Lowlevel => OS-Design => Thema gestartet von: RedEagle am 18. February 2010, 11:20

Titel: Tabelle für Deutsche Scancodes?
Beitrag von: RedEagle am 18. February 2010, 11:20
Hi
Ich suche nun schon seit Stunden eine Tabelle mit den Scancodes für Deutsche Tastaturen - leider ohne Erfolg. Alle Tabellen, auch die, die angeblich deutsch sein sollen sind Englisch.

Kennt zufällig jemand nen Link, oder hat jemand 'ne pdf rumliegen?

btw: Sind die scancodes für shift/alt/strg/*lock und auch Sondertasten wie F1..F12, enter,space,... auf jeder Tastatur gleich? Die Positionen ändern sich ja eigentlich nicht
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: Cool-Andy am 18. February 2010, 19:42
http://www.tu-chemnitz.de/informatik/RA/lehre/mop/dos_stuff/scancodes.html

Müsste sein was du suchst.
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: RedEagle am 18. February 2010, 20:44
hm... nicht wirklich, da es sich nicht um den set 2 scancode handelt :D
Allerdings wird dort das Deutsche und Englische layout vergleichen, was eigentlich schon reicht... Ich hoffe das Funktioniert mit den 2. set auch so reibungslos, aber Feinheiten lassen sich ja per Try&Error korrigieren

Danke
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: Jidder am 18. February 2010, 21:07
Warum muss es Set 2 sein? Ist diese Tabelle nicht die standardmäßige Belegung?
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: XanClic am 18. February 2010, 21:21
Eigentlich ist Set 2 die standardmäßige Belegung... Und auf einen kurzen Blick sieht mir das schon sehr nach Set 2 aus.
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: RedEagle am 19. February 2010, 00:52
Naja - Es stimmt zumindest nicht mit [url http://www.computer-engineering.org/ps2keyboard/scancodes2.html]dieser (EN)[/url] Tabelle überein

bsp:

Zeichen - Tabelle: tu-chemnitz (EN) - Tabelle: computer-engineering.org (EN)
a - 0x1E - 0x1C
b - 0x30 - 0x32
c - 0x2E - 0x21
...

Diese ganze scancode-geschichte ist irgendwie sehr undurchsichtig - 1000 Tabellen geben 1000 andere Werte - Ich hatte damals schon Schwierigkeiten das die Tabelle, die ich damals nutze, teilweise nicht mit den Werten von bochs übereinstimmten.
Nur im Gegensatz zu damals würde ich den Treiber diesmal gerne richtig anpacken, und nicht irgendwas rein improvisieren. Deshalb hätte ich schon gerne gute Tabellen, am besten für verschiedene layouts wobei Englisch und Deutsch erstmal wichtigsten sind - Später können dann weitere durch hinzufügen einer Datei ergänzt werden...
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: Jidder am 19. February 2010, 01:24
Also man muss da genau lesen: http://www.computer-engineering.org/ps2keyboard/
Zitat
This article tries to cover every aspect of AT and PS/2 keyboards.  It includes information on the low-level signals and protocol, scan codes, the command set, initialization, compatibility issues, and other miscellaneous information.  Since it's closely related, I've also included information on the PC keyboard controller.

Und zu den Scancode Sets: http://www.computer-engineering.org/ps2keyboard/#Scancodes%20FN
Zitat
if you've ever done any low-level PC programming, you've probably notice the keyboard controller supplies set ONE scan codes by default.

Es gibt also einen Unterschied zwischen den Daten, die das Keyboard an den Keyboard Controller schickt, und den Daten, die der Keyboard Controller an die CPU schickt.
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: bluecode am 19. February 2010, 07:47
Deswegen gibt es im Command Byte ein Bit mit folgender Bedeutung:
Zitat
XLAT (Translate Scan Codes) - Enables/disables translation to set 1 scan codes.

Ich habe übrigens keine Tabelle benutzt damals, sondern einfach scancode ausgeben lassen, Emulator starten paar tasten tippen, die scancodes merken, dann in Code umsetzen.
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: RedEagle am 21. February 2010, 13:18
das XLAT-Bit habe ich gelöscht, und dann scancodes aus set 2 angefordert:
int SetScanCode2()
{
 ///Scancode 1 übersetzung deaktivieren
 SendKBC_Command(KBCCMD_READ_CCMDBYTE);
 BYTE ccmdbyte = GetKBCAnswer();

 ccmdbyte &= ~KBCCCMDBYTE_TRANSLATE_SCANCODE;

 SendKBC_Command(KBCCMD_WRITE_CCMDBYTE);
 SendKBC_Data(ccmdbyte);


 ///Scancode 2 festlegen
 SendKB_Command(KBCMD_SETSCANCODE);
 SendKB_Data(KBSC_2);

 return ERROR_NOERROR;
}

Ich spiele im Moment mit dem Gedanken einfach ein Tool für mein OS zu schreiben, mit dem man lookup-tables für seine Tastatur generieren lassen kann - man zeichnet ein Tastendruck auf, und fragt den User nach dem entsprechenden ASCII-Code...
Die Tabelle wird anschließend natürlich gespeichert - bei jeden booten allen Tasten ASCII-Codes zuzuweisen ist nicht sehr user friendly  :-D
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: bluecode am 21. February 2010, 14:58
Ich spiele im Moment mit dem Gedanken einfach ein Tool für mein OS zu schreiben, mit dem man lookup-tables für seine Tastatur generieren lassen kann - man zeichnet ein Tastendruck auf, und fragt den User nach dem entsprechenden ASCII-Code...
Und mit welchen Tasten genau gibt er den ASCII-Code ein? :-D
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: MNemo am 21. February 2010, 15:04
Und mit welchen Tasten genau gibt er den ASCII-Code ein? :-D
Der ASCII-Code wird natürlich mit dem Any-Key gemorst. :wink:
Titel: Re: Tabelle für Deutsche Scancodes?
Beitrag von: RedEagle am 21. February 2010, 15:37
Ich brauche den User ja nur zu bitten zu Beginn die Tasten 0..9 zu drücken.