Autor Thema: Tabelle für Deutsche Scancodes?  (Gelesen 14899 mal)

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« 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

Cool-Andy

  • Gast
Gespeichert
« Antwort #1 am: 18. February 2010, 19:42 »

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #2 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 18. February 2010, 21:07 »
Warum muss es Set 2 sein? Ist diese Tabelle nicht die standardmäßige Belegung?
Dieser Text wird unter jedem Beitrag angezeigt.

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #4 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.

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #5 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...

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #6 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.
Dieser Text wird unter jedem Beitrag angezeigt.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #7 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.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #8 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

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #9 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
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #10 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:
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

RedEagle

  • Beiträge: 244
    • Profil anzeigen
    • RedEagle-OperatingSystem - Projekt
Gespeichert
« Antwort #11 am: 21. February 2010, 15:37 »
Ich brauche den User ja nur zu bitten zu Beginn die Tasten 0..9 zu drücken.

 

Einloggen