Externe Tastatur mit deutschem Tastaturlayout

N

nitsnatsnok

Neues Mitglied
0
Da ich nun so einige Stunden investiert habe, um das Layout meiner USB-Tastatur von US (qwerty) auf deutsch (qwertz) umzustellen, will ich meine zusammengetragenen Erkenntnisse diesem netten Forum nicht vorenthalten.
Wer eine externe Tastatur an ein Androidtablet anschließt, bekommt offenbar nicht selten das Problem, dass das Layout automatisch als der US-Standard qwerty erkannt wird, was für einen deutschen Schreiber unheimlich nervig ist, schließlich sind damit nicht nur z und y vertauscht, sondern auch keine Umlaute zugänglich und jegliche Sonderzeichen nicht da, wo sie laut Tastaturbeschriftung sein sollten. Eine Lösung für dieses Problem bieten nach meiner Kenntnis zwei Apps, die sich mit diesem groben Manko von Android eine goldene Nase verdienen: "QWERTZ Tastatur Deutsch extern" für 1,19€ und "External Keyboard Helper Pro" für 2,26€. Das Problem wurde hier im Forum auch bereits angesprochen, z. B. hier und hier.
Da ich nicht bereit war, für eine derart grobe Unzulänglichkeit des Betriebssystems Android zu blechen, habe ich etwas getüftelt und mir aus verschiedenen Ecken und Winkeln des WWW eine Möglichkeit zusammengesucht, das Tastaturlayout externer Tastaturen manuell auf den deutschen Standard umzustellen. Hier die Anleitung, die auch für andere Geräte mit Android genauso funktionieren dürfte:

1. Das Gerät rooten (siehe entsprechende Anleitungen in diesem Forum) und eine Superuserapp (z. B. "SuperSU") installieren (oft ist das beim Rooten schon inbegriffen).

2. Einen root-Dateiexplorer installieren bzw. einem vorhandenen Rootrechte geben (beim "ES Datei Explorer" unter "Schnellzugriff"->"Werkzeuge"->"Root-Explorer AN").

3. Die angehängte Datei (Anhang anzeigen Deutsches Tastaturlayout.kcm.zip) aufs Gerät kopieren und in den Ordner /system/usr/keychars/ verschieben, alternativ in besagtem Ordner eine neue Textdatei mit dem untenstehenden Inhalt erzeugen.

4. Die Datei "Generic.kcm" umbenennen, damit sie inaktiv wird, z. B. in "Generic_qwerty.kcm".

5. Die neuerstellte Datei in "Generic.kcm" umbenennen.

6. Tastatur neu anstecken - und schon machen die Tasten, was sie sollen. :) Falls sie das nicht tun, bitte weiterlesen.


Dieses Vorgehen sorgt dafür, dass jede unbekannte externe Tastatur, die mit dem Gerät verbunden wird, das qwertz-Layout verwendet. Möchte man das ursprüngliche Verhalten von Android beibehalten und das Layout nur für eine bestimmte Tastatur verändern oder funktioniert die obige Anleitung nicht, braucht man die Vendor ID (VID) und die Product ID (PID) der betreffenden Tastatur, die man unter Linux mit dem Terminalbefehl "lsusb" ("... ID %VID%:%PID% ..."), in Android mit der App "USB Device Info" herausbekommt (Beschreibung für Windows hier).
Um das Layout nun nur für genau diese Tastatur zu definieren, verfährt man wie oben, lässt allerdings Schritt 4 aus und benennt die Datei in "Vendor_%VID%_Product_%PID%.kcm", wobei man statt "%VID%" die VID und statt "%PID%" die PID der Tastatur einträgt.
Funktioniert die Anleitung bei einer bestimmten Tastatur nicht, kann es sein, dass vom Hersteller bereits ein (offenbar falsches) Tastaturlayout für genau diese Tastatur vordefiniert wurde. In diesem Fall findet sich im Ordner /system/usr/keylayout/ eine nach dem genannten Prinzip ("Vendor_%VID%....kl") benannte kl-Datei, die man durch simples Umbenennen (z. B. wie in Schritt 4) deaktivieren kann. Seltener findet sich eine genauso benannte kcm-Datei im keychars-Ordner, die man auf dieselbe Art und Weise deaktiviert.

Fortgeschrittene können in die Belegung der kcm-Datei auch selbst eingreifen, indem sie sie die Schreibrechte anpassen und die Datei mit einem Texteditor öffnen. Darin findet man die Zuordnungen, wobei Sonderzeichen mit der entsprechenden Unicodenummer (z. B. \u20ac für das "€") notiert werden müssen. Die Bezeichnungen der Tasten orientieren sich am US-Layout und werden durch die kl-Dateien Keycodes zugeordnet, die man im Zweifelsfall zum Beispiel mit der App "KeyEvent Display" ermitteln kann. Auf diese Weise lassen sich Tastaturbelegungen individuell definieren, wie das bei Linux gang und gäbe ist. Weiterführend: zu kcm-Dateien zu kl-Dateien

Ich hoffe, dass diese Anleitung jemandem die Konfiguration erleichtern oder helfen kann, unnötige Ausgaben zu vermeiden. Für Fragen steh ich gern zur Verfügung.

Anhang: Keycharmap für deutsches Tastaturlayout: Anhang anzeigen Deutsches Tastaturlayout.kcm.zip
enthaltener Text:
Code:
# Copyright (C) 2010 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

type FULL

### Basic QWERTZ keys ###

key A {
    label:                              'A'
    base:                               'a'
    shift, capslock:                    'A'
    ctrl, alt, meta:                    none
}

key B {
    label:                              'B'
    base:                               'b'
    shift, capslock:                    'B'
    ctrl, alt, meta:                    none
}

key C {
    label:                              'C'
    base:                               'c'
    shift, capslock:                    'C'
    alt:                                '\u00e7'
    shift+alt:                          '\u00c7'
    ctrl, meta:                         none
}

key D {
    label:                              'D'
    base:                               'd'
    shift, capslock:                    'D'
    ctrl, alt, meta:                    none
}

key E {
    label:                              'E'
    base:                               'e'
    shift, capslock:                    'E'
    alt:                                '\u20ac'
    ctrl, meta:                         none
}

key F {
    label:                              'F'
    base:                               'f'
    shift, capslock:                    'F'
    ctrl, alt, meta:                    none
}

key G {
    label:                              'G'
    base:                               'g'
    shift, capslock:                    'G'
    ctrl, alt, meta:                    none
}

key H {
    label:                              'H'
    base:                               'h'
    shift, capslock:                    'H'
    ctrl, alt, meta:                    none
}

key I {
    label:                              'I'
    base:                               'i'
    shift, capslock:                    'I'
    alt:                                '\u0302'
    ctrl, meta:                         none
}

key J {
    label:                              'J'
    base:                               'j'
    shift, capslock:                    'J'
    ctrl, alt, meta:                    none
}

key K {
    label:                              'K'
    base:                               'k'
    shift, capslock:                    'K'
    ctrl, alt, meta:                    none
}

key L {
    label:                              'L'
    base:                               'l'
    shift, capslock:                    'L'
    ctrl, alt, meta:                    none
}

key M {
    label:                              'M'
    base:                               'm'
    shift, capslock:                    'M'
    ctrl, alt, meta:                    '\u00b5'
}

key N {
    label:                              'N'
    base:                               'n'
    shift, capslock:                    'N'
    alt:                                '\u0303'
    ctrl, meta:                         none
}

key O {
    label:                              'O'
    base:                               'o'
    shift, capslock:                    'O'
    ctrl, alt, meta:                    none
}

key P {
    label:                              'P'
    base:                               'p'
    shift, capslock:                    'P'
    ctrl, alt, meta:                    none
}

key Q {
    label:                              'Q'
    base:                               'q'
    shift, capslock:                    'Q'
    ctrl, alt, meta:                    '@'
}

key R {
    label:                              'R'
    base:                               'r'
    shift, capslock:                    'R'
    ctrl, alt, meta:                    none
}

key S {
    label:                              'S'
    base:                               's'
    shift, capslock:                    'S'
    alt:                                '\u00df'
    ctrl, meta:                         none
}

key T {
    label:                              'T'
    base:                               't'
    shift, capslock:                    'T'
    ctrl, alt, meta:                    none
}

key U {
    label:                              'U'
    base:                               'u'
    shift, capslock:                    'U'
    alt:                                '\u0308'
    ctrl, meta:                         none
}

key V {
    label:                              'V'
    base:                               'v'
    shift, capslock:                    'V'
    ctrl, alt, meta:                    none
}

key W {
    label:                              'W'
    base:                               'w'
    shift, capslock:                    'W'
    ctrl, alt, meta:                    none
}

key X {
    label:                              'X'
    base:                               'x'
    shift, capslock:                    'X'
    ctrl, alt, meta:                    none
}

key Y {
    label:                              'Y'
    base:                               'z'
    shift, capslock:                    'Z'
    ctrl, alt, meta:                    none
}

key Z {
    label:                              'Z'
    base:                               'y'
    shift, capslock:                    'Y'
    ctrl, alt, meta:                    none
}

key 0 {
    label, number:                      '0'
    base:                               '0'
    shift:                              '='
    ctrl, alt, meta:                    '}'
}

key 1 {
    label, number:                      '1'
    base:                               '1'
    shift:                              '!'
    ctrl, alt, meta:                    none
}

key 2 {
    label, number:                      '2'
    base:                               '2'
    shift:                              '"'
    ctrl, alt, meta:                    '\u00b2'
}

key 3 {
    label, number:                      '3'
    base:                               '3'
    shift:                              '\u00a7'
    ctrl, alt, meta:                    '\u00b3'
}

key 4 {
    label, number:                      '4'
    base:                               '4'
    shift:                              '$'
    ctrl, alt, meta:                    '$'
}

key 5 {
    label, number:                      '5'
    base:                               '5'
    shift:                              '%'
    ctrl, alt, meta:                    '\u20ac'
}

key 6 {
    label, number:                      '6'
    base:                               '6'
    shift:                              '&'
    ctrl, alt, meta:                    none
    alt+shift:                          '\u0302'
}

key 7 {
    label, number:                      '7'
    base:                               '7'
    shift:                              '/'
    ctrl, alt, meta:                    '{'
}

key 8 {
    label, number:                      '8'
    base:                               '8'
    shift:                              '('
    ctrl, alt, meta:                    '['
}

key 9 {
    label, number:                      '9'
    base:                               '9'
    shift:                              ')'
    ctrl, alt, meta:                    ']'
}

key SPACE {
    label:                              ' '
    base:                               ' '
    ctrl, alt:                          none
    meta:                               fallback SEARCH
}

key ENTER {
    label:                              '\n'
    base:                               '\n'
    ctrl, alt, meta:                    none
}

key TAB {
    label:                              '\t'
    base:                               '\t'
    ctrl, alt:                          none
    meta:                               fallback APP_SWITCH
}

key COMMA {
    label, number:                      ','
    base:                               ','
    shift:                              ';'
    ctrl, alt, meta:                    none
}

key PERIOD {
    label, number:                      '.'
    base:                               '.'
    shift:                              ':'
    ctrl, alt, meta:                    none
}

key SLASH {
    label, number:                      '/'
    base:                               '-'
    shift:                              '_'
    ctrl, alt, meta:                    none
}

key GRAVE {
    label, number:                      '`'
    base:                               '\u005e'
    shift:                              '\u00b0'
    alt:                                '\u0300'
    alt+shift:                          '\u0303'
    ctrl, meta:                         none
}

key MINUS {
    label, number:                      '-'
    base:                               '\u00df'
    shift:                              '?'
    ctrl, alt, meta:                    '\\'
}

key EQUALS {
    label, number:                      '='
    base:                               '\u00b4'
    shift:                              '\u0060'
    ctrl, alt, meta:                    none
}

key LEFT_BRACKET {
    label, number:                      '['
    base:                               '\u00fc'
    shift:                              '\u00dc'
    ctrl, alt, meta:                    none
}

key RIGHT_BRACKET {
    label, number:                      ']'
    base:                               '+'
    shift:                              '*'
    ctrl, alt, meta:                    '~'
}

key BACKSLASH {
    label, number:                      '\\'
    base:                               '<'
    shift:                              '>'
    alt:                                '|'
    ctrl, meta:                         none
}

key SEMICOLON {
    label, number:                      ';'
    base:                               '\u00f6'
    shift:                              '\u00d6'
    ctrl, alt, meta:                    none
}

key APOSTROPHE {
    label, number:                      '\''
    base:                               '\u00e4'
    shift:                              '\u00c4'
    ctrl, alt, meta:                    none
}

key BUTTON_16 {
    label, number:                      '<'
    base:                               '<'
    shift:                              '>'
    ctrl, alt, meta:                    '\u007c'
}

### Numeric keypad ###

key NUMPAD_0 {
    label, number:                      '0'
    base:                               fallback INSERT
    numlock:                            '0'
    ctrl, alt, meta:                    none
}

key NUMPAD_1 {
    label, number:                      '1'
    base:                               fallback MOVE_END
    numlock:                            '1'
    ctrl, alt, meta:                    none
}

key NUMPAD_2 {
    label, number:                      '2'
    base:                               fallback DPAD_DOWN
    numlock:                            '2'
    ctrl, alt, meta:                    none
}

key NUMPAD_3 {
    label, number:                      '3'
    base:                               fallback PAGE_DOWN
    numlock:                            '3'
    ctrl, alt, meta:                    none
}

key NUMPAD_4 {
    label, number:                      '4'
    base:                               fallback DPAD_LEFT
    numlock:                            '4'
    ctrl, alt, meta:                    none
}

key NUMPAD_5 {
    label, number:                      '5'
    base:                               fallback DPAD_CENTER
    numlock:                            '5'
    ctrl, alt, meta:                    none
}

key NUMPAD_6 {
    label, number:                      '6'
    base:                               fallback DPAD_RIGHT
    numlock:                            '6'
    ctrl, alt, meta:                    none
}

key NUMPAD_7 {
    label, number:                      '7'
    base:                               fallback MOVE_HOME
    numlock:                            '7'
    ctrl, alt, meta:                    none
}

key NUMPAD_8 {
    label, number:                      '8'
    base:                               fallback DPAD_UP
    numlock:                            '8'
    ctrl, alt, meta:                    none
}

key NUMPAD_9 {
    label, number:                      '9'
    base:                               fallback PAGE_UP
    numlock:                            '9'
    ctrl, alt, meta:                    none
}

key NUMPAD_LEFT_PAREN {
    label, number:                      '('
    base:                               '('
    ctrl, alt, meta:                    none
}

key NUMPAD_RIGHT_PAREN {
    label, number:                      ')'
    base:                               ')'
    ctrl, alt, meta:                    none
}

key NUMPAD_DIVIDE {
    label, number:                      '/'
    base:                               '/'
    ctrl, alt, meta:                    none
}

key NUMPAD_MULTIPLY {
    label, number:                      '*'
    base:                               '*'
    ctrl, alt, meta:                    none
}

key NUMPAD_SUBTRACT {
    label, number:                      '-'
    base:                               '-'
    ctrl, alt, meta:                    none
}

key NUMPAD_ADD {
    label, number:                      '+'
    base:                               '+'
    ctrl, alt, meta:                    none
}

key NUMPAD_DOT {
    label, number:                      '.'
    base:                               fallback FORWARD_DEL
    numlock:                            '.'
    ctrl, alt, meta:                    none
}

key NUMPAD_COMMA {
    label, number:                      ','
    base:                               ','
    ctrl, alt, meta:                    none
}

key NUMPAD_EQUALS {
    label, number:                      '='
    base:                               '='
    ctrl, alt, meta:                    none
}

key NUMPAD_ENTER {
    label:                              '\n'
    base:                               '\n' fallback ENTER
    ctrl, alt, meta:                    none fallback ENTER
}

### Special keys on phones ###

key AT {
    label, number:                      '@'
    base:                               '@'
}

key STAR {
    label, number:                      '*'
    base:                               '*'
}

key POUND {
    label, number:                      '#'
    base:                               '#'
}

key PLUS {
    label, number:                      '+'
    base:                               '+'
}

### Non-printing keys ###

key ESCAPE {
    base:                               fallback BACK
    meta:                               fallback HOME
    alt:                                fallback MENU
}

### Gamepad buttons ###

key BUTTON_A {
    base:                               fallback BACK
}

key BUTTON_B {
    base:                               fallback BACK
}

key BUTTON_C {
    base:                               fallback BACK
}

key BUTTON_X {
    base:                               fallback DPAD_CENTER
}

key BUTTON_Y {
    base:                               fallback DPAD_CENTER
}

key BUTTON_Z {
    base:                               fallback DPAD_CENTER
}

key BUTTON_L1 {
    base:                               none
}

key BUTTON_R1 {
    base:                               none
}

key BUTTON_L2 {
    base:                               none
}

key BUTTON_R2 {
    base:                               none
}

key BUTTON_THUMBL {
    base:                               fallback DPAD_CENTER
}

key BUTTON_THUMBR {
    base:                               fallback DPAD_CENTER
}

key BUTTON_START {
    base:                               fallback HOME
}

key BUTTON_SELECT {
    base:                               fallback MENU
}

key BUTTON_MODE {
    base:                               fallback MENU
}

key BUTTON_1 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_2 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_3 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_4 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_5 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_6 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_7 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_8 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_9 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_10 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_11 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_12 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_13 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_14 {
    base:                               fallback DPAD_CENTER
}

key BUTTON_15 {
    base:                               fallback DPAD_CENTER
}

#key BUTTON_16 {
#    base:                               fallback DPAD_CENTER
#}
 
Zuletzt bearbeitet:

Ähnliche Themen

P
Antworten
14
Aufrufe
9.380
Red Scorpion
R
T
Antworten
2
Aufrufe
1.585
hävksitol
hävksitol
C
  • Ch4otin87
Antworten
2
Aufrufe
2.330
Themonlight13
T
Zurück
Oben Unten