Hallo,
ich habe mich schon durch diverse Dokumente gewälzt, aber meine Versuche gehen irgendwie immer schief. Ich suche eine Möglichkeit, zu identifizieren, was für ein Keyboard am PS2-Port angeschlossen ist. Eins vornweg: Ich brauche die Möglichkeit für Linux, ich greife auf /dev/port zu und gehe mit lseek() an 0x64 oder 0x60 um Kommandos/Daten zu senden/empfangen oder den Status auszulesen.
Ich habe auf der Seite
http://www.computer-engineering.org/ps2keyboard/ein gutes Dokument gefunden, in dem beschrieben steht, das man die Keyboard ID mit Command-Set 0xf2 abrufen kann. Ich vermute jetzt stark, das ich das falsch mache, denn je nach dem, welches Keyboard ich anschließe (ich habe drei verschiedene, die unterschieden werden müssen), bekomme ich entweder 0xfa (ACK) + 0xab + 0x41 (bei zwei der drei Keyboards) oder ein 0xfe zurück. Ich schreibe das Commando in den Input-Buffer (0x60) und lese dann auch wieder 0x60 aus.
Ist das Vorgehen soweit richtig? Ich finde kein Beispiel dafür. Ich habe auch schon versucht, die Keyboard-Controller-Firmware-Version auszulesen, was mich für die Identifikation des Keyboards wahrscheinlich nicht weiter bringt - auch dieses funktioniert nicht.
Zum Hintergrund:
Es gibt, wie schon erwähnt, 3 Tastaturen von unterschiedlichen Herstellern. Diese Tastaturen müssen irgendwie erkannt werden, da die Keyboards unterschiedliche Scancodes für bestimmte Tasten zurück liefern. Dies wäre kein Problem, ich kann das mit setkeycodes beheben, aber dafür muss ich wissen, was für eine Tastatur denn nun am Port hängt.
Um das ganze auf die Spitze zu treiben, muss die Erkennung auch mit verschiedenen Rechnern funktionieren, die unterschiedliche BIOSe haben - das scheint ja auch eine wichtige Information zu sein, wenn ich das Dokument so betrachte.
Hat jemand eine Idee, wie das zu lösen wäre? Ich fummel damit schon eine Woche rum und finde einfach keine zufriedenstellende Lösung.
Danke für eure Tipps.