Christian
- Forum-Beiträge: 2
13.01.2012, 21:18:44 via Website
13.01.2012 21:18:44 via Website
Wie erstelle ich meine eigene Tastenbelegung für eine beliebige HID kompatible Bluetooth Tastatur?
Durchgeführt habe ich das mit meinem Motorola Defy mit CM7.1. Das müßte aber mit jedem Gerät gehen das HID Unterstützung hat. Man benötigt aber Root-Rechte!!!
Alles ohne Gewähr! Bitte sichert euer System vorher falls was schief geht!!!
Ausgangssituation war diese:
Ich habe mir eine HID kompatible Bluetooth Tastatur gekauft und konnte sie nicht benutzen da das System von einer QWERTY-Tastatur ausging. Es war aber ein QWERTZ Tastatur mit Umlauten für Deutschland. Einen Treiber lieferte der Hersteller nicht mit. Das verbinden einer HID Kompatible Bluetooth Tastatur war kein Problem und funktionierte super, aber die Tasten waren falsch belegt.
Zuerst habe ich nach einer App gesucht die das Problem lößt. Zwei kamen in frage. BlueInput von Teksoft und BlueKeyboard JP von Elbrain.
BlueKeyboard JP von Elbrain funktionierte nicht vernünftig.
BlueInput von Teksoft funktionierte prinzipiell, war aber keine schöne Lösung.
Ich habe lange gesucht und viel darüber gefunden wie man das Layout von vorhandenen Treiberdateien ändert, aber ich hatte ja keine Treiberdatei!
Ich habe die Entwicklungsinformationen über Keymaps and Keyboard Input studiert und folgende Idee gehabt.
http://www.kandroid.org/online-pdk/guide/keymaps_keyboard_input.html#androidKeymapKeyLayoutMapTitle
Wenn das System das erstem mal eine HID Kompatible Bluetooth Tastatur benutzt, sucht es nach dem Treiber dafür. Wenn es diesen nicht gibt wird der Standard QWERTY verwendet. Das System generiert darüber eine (eigentlich unsichtbare) Meldung. Aus der Meldung kann man ablesen wie diese Datei heißt, die das System erwartet.
Anschließend nehmen ich die Standard QWERTY Datei, benenne sie wie vom System erwartet um und verändere die Tastenbelegung. Fertig!!!
So geht es im Detail:
1.) Mit der Anwendung aLogcat von Jeffrey Blattman lasse ich die Systemmeldungen mitschreiben.
So habe ich die App eingestellt:
Dann registriere und verbinde ich die BT-Tastatur und verwende diese.
2.) Anschließend durchsuche ich die aufgezeichnete Datei nach der Meldung
KeyCharacterMap: Error loading keycharmap file '/system/usr/keychars/????????????'
Dahinter kann man lese welche Datei erwartet wird. In meinem Fall die Datei „Macro_Keyboard.kcm.bin“
3.) Nun kopiere ich mir mit der App Root Explorer von Speed Software die Datei /system/usr/keychars/qwerty.kcm.bin auf die SD-Karte
4.) Die Datei qwerty.kcm.bin benenne ich auf der SD-Karte in „Macro_Keyboard.kcm.bin“ um. So wie ich den Namen unter 2.) ermittelt habe.
5.) Dann benutze ich einen HEX-Editor wie z.B HxD von http://mh-nexus.de/en/ um die Datei so wie es nötig ist zu verändern.
Welche Tastenbelegung man wie Ändern muß ermittelt man mit der App KeynrTracker von chrisboyle.
https://github.com/chrisboyle/keytest/downloads
Dazu braucht man noch eine ASCII Tabelle wie z.B. http://www.torsten-horn.de/techdocs/ascii.htm
Die App Zeigt dir den KeyCode der Taste (im Dezimalsystem), dann weißt du welche Zeile in der Datei für diese Taste zuständig ist. Der KeyCode (und die anderen Inhalte) wird in der Datei allerdings üblicherweise im Hexadezimalsystem angezeigt, also vorher z.B. mit dem Windowstaschenrechner umrechnen. Den Windowstaschenrechner dazu auf Wissenschaftliche umstellen, dann geht das damit auch.
Im HexEditor ersetzt man an den entsprechenden Stellen den falschen durch den richtigen ASCII-Code und speichert die Datei wieder auf der SD-Karte.
Darauf achten ScanCode und KeyCode nicht zu vertauschen!!!
Die KeyLayoutMap-Datei unter /system/usr/keylayout/qwerty.kl mit der Zuordnung der ScanCode habe ich unverändert gelassen. Eine Anpassung der KeyCode war ausreichend. Falls das nötig ist müßt ihr mal weiter forschen... Das habe ich noch nicht gemacht.
6.) Wenn die Datei Macro_Keyboard.kcm.bin fertig gestellt ist wird sie zurück in das Verzeichnis /system/usr/keychars/ kopiert wo auch die Datei qwerty.kcm.bin als Basis hergeholt wurde.
Dazu muß man erst mal den Schreibzugriff ermögliche in dem man in der App Root Explorer von Speed Software oben rechts den Knopf drück.
Falls es noch nicht geht, nun noch mal Booten und schon sind wir fertig!
Ich habe hier mit eine Rii Mini Keyboard http://www.riitek.com/product_Info.asp?id=62 ans laufen gebracht. Interessant war das die Tasten rechts und links der Leertaste den KeyCode 0 liefern und so vom System nicht ausgewertet und so auch nicht neu belegt werden können. Ich habe einfach die ja doch seltenen Zeichen auf die Tasten darüber gelegt wo man sie dann mit Alt und Alt-Shift erreichen kann.
So war ich am Ziel, ich hoffe ihr könnt es auch erfolgreich umsetzen. Bei dieser Tastatur funktioniert auch der Cursorblock und die Mausfunktion mit dem CM7.1 zusammen.
Durchgeführt habe ich das mit meinem Motorola Defy mit CM7.1. Das müßte aber mit jedem Gerät gehen das HID Unterstützung hat. Man benötigt aber Root-Rechte!!!
Alles ohne Gewähr! Bitte sichert euer System vorher falls was schief geht!!!
Ausgangssituation war diese:
Ich habe mir eine HID kompatible Bluetooth Tastatur gekauft und konnte sie nicht benutzen da das System von einer QWERTY-Tastatur ausging. Es war aber ein QWERTZ Tastatur mit Umlauten für Deutschland. Einen Treiber lieferte der Hersteller nicht mit. Das verbinden einer HID Kompatible Bluetooth Tastatur war kein Problem und funktionierte super, aber die Tasten waren falsch belegt.
Zuerst habe ich nach einer App gesucht die das Problem lößt. Zwei kamen in frage. BlueInput von Teksoft und BlueKeyboard JP von Elbrain.
BlueKeyboard JP von Elbrain funktionierte nicht vernünftig.
BlueInput von Teksoft funktionierte prinzipiell, war aber keine schöne Lösung.
Ich habe lange gesucht und viel darüber gefunden wie man das Layout von vorhandenen Treiberdateien ändert, aber ich hatte ja keine Treiberdatei!
Ich habe die Entwicklungsinformationen über Keymaps and Keyboard Input studiert und folgende Idee gehabt.
http://www.kandroid.org/online-pdk/guide/keymaps_keyboard_input.html#androidKeymapKeyLayoutMapTitle
Wenn das System das erstem mal eine HID Kompatible Bluetooth Tastatur benutzt, sucht es nach dem Treiber dafür. Wenn es diesen nicht gibt wird der Standard QWERTY verwendet. Das System generiert darüber eine (eigentlich unsichtbare) Meldung. Aus der Meldung kann man ablesen wie diese Datei heißt, die das System erwartet.
Anschließend nehmen ich die Standard QWERTY Datei, benenne sie wie vom System erwartet um und verändere die Tastenbelegung. Fertig!!!
So geht es im Detail:
1.) Mit der Anwendung aLogcat von Jeffrey Blattman lasse ich die Systemmeldungen mitschreiben.
So habe ich die App eingestellt:
Dann registriere und verbinde ich die BT-Tastatur und verwende diese.
2.) Anschließend durchsuche ich die aufgezeichnete Datei nach der Meldung
KeyCharacterMap: Error loading keycharmap file '/system/usr/keychars/????????????'
Dahinter kann man lese welche Datei erwartet wird. In meinem Fall die Datei „Macro_Keyboard.kcm.bin“
3.) Nun kopiere ich mir mit der App Root Explorer von Speed Software die Datei /system/usr/keychars/qwerty.kcm.bin auf die SD-Karte
4.) Die Datei qwerty.kcm.bin benenne ich auf der SD-Karte in „Macro_Keyboard.kcm.bin“ um. So wie ich den Namen unter 2.) ermittelt habe.
5.) Dann benutze ich einen HEX-Editor wie z.B HxD von http://mh-nexus.de/en/ um die Datei so wie es nötig ist zu verändern.
Welche Tastenbelegung man wie Ändern muß ermittelt man mit der App KeynrTracker von chrisboyle.
https://github.com/chrisboyle/keytest/downloads
Dazu braucht man noch eine ASCII Tabelle wie z.B. http://www.torsten-horn.de/techdocs/ascii.htm
Die App Zeigt dir den KeyCode der Taste (im Dezimalsystem), dann weißt du welche Zeile in der Datei für diese Taste zuständig ist. Der KeyCode (und die anderen Inhalte) wird in der Datei allerdings üblicherweise im Hexadezimalsystem angezeigt, also vorher z.B. mit dem Windowstaschenrechner umrechnen. Den Windowstaschenrechner dazu auf Wissenschaftliche umstellen, dann geht das damit auch.
Im HexEditor ersetzt man an den entsprechenden Stellen den falschen durch den richtigen ASCII-Code und speichert die Datei wieder auf der SD-Karte.
Darauf achten ScanCode und KeyCode nicht zu vertauschen!!!
Die KeyLayoutMap-Datei unter /system/usr/keylayout/qwerty.kl mit der Zuordnung der ScanCode habe ich unverändert gelassen. Eine Anpassung der KeyCode war ausreichend. Falls das nötig ist müßt ihr mal weiter forschen... Das habe ich noch nicht gemacht.
6.) Wenn die Datei Macro_Keyboard.kcm.bin fertig gestellt ist wird sie zurück in das Verzeichnis /system/usr/keychars/ kopiert wo auch die Datei qwerty.kcm.bin als Basis hergeholt wurde.
Dazu muß man erst mal den Schreibzugriff ermögliche in dem man in der App Root Explorer von Speed Software oben rechts den Knopf drück.
Falls es noch nicht geht, nun noch mal Booten und schon sind wir fertig!
Ich habe hier mit eine Rii Mini Keyboard http://www.riitek.com/product_Info.asp?id=62 ans laufen gebracht. Interessant war das die Tasten rechts und links der Leertaste den KeyCode 0 liefern und so vom System nicht ausgewertet und so auch nicht neu belegt werden können. Ich habe einfach die ja doch seltenen Zeichen auf die Tasten darüber gelegt wo man sie dann mit Alt und Alt-Shift erreichen kann.
So war ich am Ziel, ich hoffe ihr könnt es auch erfolgreich umsetzen. Bei dieser Tastatur funktioniert auch der Cursorblock und die Mausfunktion mit dem CM7.1 zusammen.
— geändert am 04.04.2019, 21:45:42 durch Moderator
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.