Dateien für die Zuordnung von Schlüsselzeichen

Zuordnungsdateien mit Schlüsselzeichen (.kcm-Dateien) sind für Zuordnungskombinationen zuständig. von Android-Schlüsselcodes mit Modifikatoren zu Unicode-Zeichen.

Gerätespezifische Schlüssellayoutdateien sind für alle internen (integrierten) Dateien erforderlich Eingabegeräte mit Tasten, wenn nur um dem System mitzuteilen, dass das Gerät ist nur für einen besonderen Zweck gedacht (keine vollwertige Tastatur).

Gerätespezifische Tastenlayoutdateien sind für externe Tastaturen optional. werden häufig gar nicht benötigt. Das System bietet eine generische Schlüsselzeichenzuordnung. das für viele externe Tastaturen geeignet ist.

Ist keine gerätespezifische Schlüssellayoutdatei verfügbar, wählen Sie stattdessen eine Standardeinstellung aus.

Standort

Die Schlüsselzeichenzuordnungsdateien werden nach USB-Anbieter, Produkt (und optional der Version) sortiert. oder anhand des Gerätenamens eingeben.

Die folgenden Pfade werden der Reihe nach verwendet.

  • /odm/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /vendor/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /system/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /data/system/devices/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm
  • /odm/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /vendor/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /system/usr/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /data/system/devices/keychars/Vendor_XXXX_Product_XXXX.kcm
  • /odm/usr/keychars/DEVICE_NAME.kcm
  • /vendor/usr/keychars/DEVICE_NAME.kcm
  • /system/usr/keychars/DEVICE_NAME.kcm
  • /data/system/devices/keychars/DEVICE_NAME.kcm
  • /odm/usr/keychars/Generic.kcm
  • /vendor/usr/keychars/Generic.kcm
  • /system/usr/keychars/Generic.kcm
  • /data/system/devices/keychars/Generic.kcm
  • /odm/usr/keychars/Virtual.kcm
  • /vendor/usr/keychars/Virtual.kcm
  • /system/usr/keychars/Virtual.kcm
  • /data/system/devices/keychars/Virtual.kcm

Beim Erstellen eines Dateipfads, der den Gerätenamen enthält, werden alle Zeichen in Gerätenamen außer '0'-'9', 'a'-'z', 'A'-'Z', '-' oder '_' durch "_" ersetzt werden.

Generische Zuordnungsdatei für Schlüsselzeichen

Das System bietet eine spezielle, integrierte Schlüsselzeichenzuordnungsdatei namens Generic.kcm. Diese Schlüsselzeichenzuordnung soll eine Vielzahl standardmäßiger externer Tastaturen.

Verändere nicht die generische Schlüsselzeichenzuordnung.

Datei für die Zuordnung der Zeichen für virtuelle Schlüssel

Das System bietet eine spezielle, integrierte Schlüsselzeichenzuordnungsdatei namens Virtual.kcm. das von den Bildschirmtastaturen verwendet wird.

Die Bildschirmtastatur ist ein synthetisches Eingabegerät mit der ID -1. (siehe KeyCharacterMap.VIRTUAL_KEYBOARD). Die Funktion ist auf allen Android-Geräten verfügbar. ab Android Honeycomb 3.0. Zweck der Bildschirmtastatur ein bekanntes integriertes Eingabegerät bereitzustellen, per IME oder Testinstrumentierung in Anwendungen einbinden, für Geräte ohne integrierte Tastatur.

Es wird angenommen, dass die Bildschirmtastatur ein vollständiges QWERTY-Layout hat, also auf allen Geräten gleich. Dadurch können Anwendungen in Tastenanschlägen auf der Bildschirmtastatur verwenden und erhalten immer dieselben Ergebnisse.

Ändern Sie nicht die virtuelle Schlüsselzeichenzuordnung.

Syntax

Eine Key Character Map-Datei ist eine Nur-Text-Datei, die aus einem und eine Reihe von Schlüsseldeklarationen.

Deklaration des Tastaturtyps

Eine Tastaturtypdeklaration beschreibt das allgemeine Verhalten der Tastatur. Eine Zeichenzuordnungsdatei muss eine Tastaturtypdeklaration enthalten. Zur Klarstellung: wird es häufig oben in der Datei platziert.

type FULL

Die folgenden Tastaturtypen werden erkannt:

  • NUMERIC: Eine numerische Tastatur (12-Tasten).

    Eine numerische Tastatur unterstützt die Texteingabe durch mehrfaches Tippen. Möglicherweise müssen Sie mehrmals auf eine Taste tippen, um den gewünschten Buchstaben oder das gewünschte Symbol zu generieren.

    Diese Art von Tastatur ist im Allgemeinen für die Eingabe per Daumen vorgesehen.

    Entspricht KeyCharacterMap.NUMERIC.

  • PREDICTIVE: Eine Tastatur mit allen Buchstaben, aber mit mehr als einem Buchstaben pro Taste.

    Diese Art von Tastatur ist im Allgemeinen für die Eingabe per Daumen vorgesehen.

    Entspricht KeyCharacterMap.PREDICTIVE.

  • ALPHA: Eine Tastatur mit allen Buchstaben und vielleicht einigen Zahlen.

    Eine alphabetische Tastatur unterstützt die direkte Texteingabe, kann jedoch in verkürzter Form angezeigt werden. mit einem kleinen Formfaktor. Im Gegensatz zu einer FULL-Tastatur Symbole sind möglicherweise nur über eine spezielle Zeichenauswahl auf dem Bildschirm zugänglich. Um die Eingabegeschwindigkeit und -genauigkeit zu verbessern, bietet das Framework Besondere Angebote für Buchstabentastaturen wie die automatische Groß-/Kleinschreibung und die Umschalttaste und die Alt-Taste aktiviert bzw. gesperrt.

    Diese Art von Tastatur ist im Allgemeinen für die Eingabe per Daumen vorgesehen.

  • FULL: Eine vollwertige Tastatur im PC-Stil.

    Eine vollständige Tastatur verhält sich wie eine PC-Tastatur. Auf alle Symbole wird direkt zugegriffen durch Drücken von Tasten auf der Tastatur ohne Bildschirmunterstützung oder Angebote wie mit automatischer Groß-/Kleinschreibung.

    Diese Art von Tastatur ist im Allgemeinen für die vollständige Zweihandeingabe ausgelegt.

  • SPECIAL_FUNCTION: Eine Tastatur, die nur zur Ausführung von Systemsteuerungsfunktionen verwendet wird anstatt zum Tippen.

    Eine spezielle Funktionstastatur besteht nur aus nicht druckbaren Tasten wie HOME und POWER, die eigentlich nicht zum Tippen verwendet werden.

Die Zeichenzuordnung für Generic.kcm und Virtual.kcm ist beides FULL-Tastaturen.

Schlüsseldeklarationen

Schlüsseldeklarationen bestehen jeweils aus dem Schlüsselwort key, gefolgt von einem Android-Schlüsselcode. name, einer offenen geschweiften Klammer, einer Reihe von Eigenschaften und Verhaltensweisen sowie einer geschweiften Klammer.

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

Properties

Jede Schlüsseleigenschaft bestimmt eine Zuordnung von einem Schlüssel zu einem Verhalten. Damit die Schlüsselzeichen-Zuordnungsdateien kompakter sind, können mehrere Eigenschaften der durch Kommas getrennt.

Im obigen Beispiel wird dem Attribut label das Verhalten 'A' zugewiesen. Entsprechend werden die Properties ctrl, alt und meta gleichzeitig zugewiesen. none-Verhalten.

Die folgenden Eigenschaften werden erkannt:

  • label: Gibt das Label an, das auf den Schlüssel gedruckt wird, wenn er aus einem einzelnen Zeichen besteht. Dies ist der Wert, der von die Methode KeyCharacterMap.getDisplayLabel.

  • number: Gibt das Verhalten (ein zu gebendes Zeichen) an, wenn ein numerischer Wert Textansicht mit Fokus, z. B. wenn der Nutzer eine Telefonnummer eingibt.

    Bei kompakten Tastaturen werden oft mehrere Symbole zu einer Taste zusammengefasst, sodass kann derselbe Schlüssel für die Eingabe von '1' und 'a' oder '#' und 'q' verwendet werden. Für diese Schlüssel sollte das Attribut number festgelegt werden, um anzugeben, welches Symbol in einem numerischen Kontext eingegeben werden, falls vorhanden.

    Typische „numerische“ Symbole sind Ziffern '0' bis '9', '#', '+' '(', ')', ',' und '.'.

  • base: Gibt das Verhalten (ein zu gebendes Zeichen) an, wenn keine Modifikatoren vorhanden sind. gedrückt.

  • <modifier> or <modifier1>+<modifier2>+...: Gibt die (das zu tippende Zeichen ist), wenn die Taste gedrückt wird und alle die angegebenen Modifikatoren aktiv sind.

    Beispielsweise gibt die Modifikatoreigenschaft shift ein Verhalten an, das angewendet wird, wenn entweder der Modifikator LINKS UMSCHALTEN oder RECHTS VERSCHIEBEN gedrückt wird.

    In ähnlicher Weise gibt die Modifikatoreigenschaft rshift+ralt ein Verhalten an, das auf wenn der RIGHT SHIFT und der RECHTE ALT-Modifikator gleichzeitig gedrückt werden.

Die folgenden Modifikatoren werden in Modifikatoreigenschaften erkannt:

  • shift: Gilt, wenn der Modifikator LINKS-UMSCHALTUNG oder RECHTSVERSCHIEB gedrückt wird.
  • lshift: wird angewendet, wenn der Modifikator LINKS UMSCHALTUNG gedrückt wird.
  • rshift: wird angewendet, wenn der Modifikator RECHTSVERSCHIEB gedrückt wird.
  • alt: wird angewendet, wenn der Modifikator LEFT ALT oder RECHTS ALT gedrückt wird.
  • lalt: wird angewendet, wenn der Modifikator LEFT ALT gedrückt wird.
  • ralt: wird angewendet, wenn der RIGHT ALT-Modifikator gedrückt wird.
  • ctrl: Gilt, wenn der Modifikator LINKS oder RECHTS STEUERUNG gedrückt wird.
  • lctrl: wird angewendet, wenn der Modifikator LINKS STEUERUNG gedrückt wird.
  • rctrl: wird angewendet, wenn der Modifikator RECHTS STEUERUNG gedrückt wird.
  • meta: Gilt, wenn entweder das LEFT META oder das RIGHT META-Modifikator gedrückt wird.
  • lmeta: Gilt, wenn der META-Modifikator LINKS gedrückt wird.
  • rmeta: Gilt, wenn der META-Modifikator RECHTS gedrückt wird.
  • sym: wird angewendet, wenn der SYMBOL-Modifikator gedrückt wird.
  • fn: wird angewendet, wenn der FUNCTION-Modifikator gedrückt wird.
  • capslock: Gilt, wenn der Modifikator zur Feststelltaste gesperrt ist.
  • numlock: Wird angewendet, wenn der NUM LOCK-Modifikator gesperrt ist.
  • scrolllock: Gilt, wenn der Modifikator SCROLL LOCK gesperrt ist.

Die Reihenfolge, in der die Unterkünfte aufgeführt sind, ist entscheidend. Wenn Sie einen Schlüssel alle relevanten Properties der Reihe nach durchsucht und Verhalten, das sie gefunden hat.

Daher überschreiben Eigenschaften, die später angegeben werden, Eigenschaften, die für einen bestimmten Schlüssel angegeben ist.

Verhalten

Jede Eigenschaft ist einem Verhalten zugeordnet. Das häufigste Verhalten ist die Eingabe eines Zeichens aber es gibt noch andere.

Die folgenden Verhaltensweisen werden erkannt:

  • none: Geben Sie kein Zeichen ein.

    Dies ist die Standardeinstellung, wenn kein Zeichen angegeben ist. none angeben ist optional, verbessert aber die Verständlichkeit.

  • 'X': Geben Sie das angegebene Zeichenliteral ein.

    Dadurch wird das angegebene Zeichen in den Textansicht. Das Zeichenliteral kann ein beliebiges ASCII-Zeichen oder eines der folgenden Escapesequenzen:

    • '\\': Geben Sie einen umgekehrten Schrägstrich ein.
    • '\n': Geben Sie ein Zeichen für einen Zeilenumbruch ein (verwenden Sie die Eingabetaste oder den Zeilenschalter).
    • '\t': Geben Sie ein TAB-Zeichen ein.
    • '\'': Geben Sie ein Apostrophzeichen ein.
    • '\"': Geben Sie ein Anführungszeichen ein.
    • '\uXXXX': Geben Sie das Unicode-Zeichen ein, dessen Codepunkt im Hexadezimalformat durch XXXX angegeben wird.
  • fallback <Android key code name>: Eine Standardaktion ausführen, wenn die Taste nicht von der Anwendung verarbeitet werden.

    Dadurch simuliert das System einen anderen Tastendruck, verarbeitet den angegebenen Schlüssel nicht nativ. Damit wird das Standardverhalten unterstützt. für neue Schlüssel, die nicht von allen Anwendungen gehandhabt werden können, wie ESCAPE oder Zifferntasten (wenn die Zifferntaste nicht gedrückt wird)

    Wenn ein Fallback-Verhalten ausgeführt wird, kann die App zwei Tasten drücken: eine für den ursprünglichen Schlüssel und eine weitere für den ausgewählten Fallback-Schlüssel. Wenn die Anwendung den ursprünglichen Schlüssel verarbeitet, kann der Fallback-Schlüssel wird abgesagt (KeyEvent.isCanceled gibt true zurück).

Das System reserviert zwei Unicode-Zeichen für spezielle Funktionen:

  • '\uef00': Bei diesem Verhalten verbraucht und entfernt die Textansicht vier Zeichen vor dem Cursor, interpretiert sie als Hexadezimalziffern und fügt den Parameter entsprechenden Unicode-Codepoint.

  • '\uef01': Wenn dieses Verhalten ausgeführt wird, wird in der Textansicht eine Dialogfeld zur Zeichenauswahl mit verschiedenen Symbolen

Das System erkennt die folgenden Unicode-Zeichen als diakritische Zeichen ohne Begrenzung Schlüsselzeichen:

  • '\u0300': Gravis.
  • '\u0301': Akuter Akzent.
  • '\u0302': Zirkumflex-Akzent.
  • '\u0303': Tilde-Akzent.
  • '\u0308': Umlautakzent.

Wenn ein inaktiver Schlüssel gefolgt von einem anderen Zeichen eingegeben wird, werden der unzustellbare Schlüssel und Folgendes bestehen. Beispiel: Wenn der Nutzer einen Gravis mit „Tod“ eingibt, gefolgt von dem Buchstaben „a“, dann ist das Ergebnis „à“.

Weitere Informationen zur Handhabung inaktiver Schlüssel finden Sie unter KeyCharacterMap.getDeadChar.

Kommentare

Kommentarzeilen beginnen mit "#" bis zum Zeilenende. Beispiel:

# A comment!

Leerzeilen werden ignoriert.

Zuordnung von Tastenkombinationen zu Verhaltensweisen

Wenn der Nutzer eine Taste drückt, sucht das System nach dem Verhalten, das mit Kombination aus diesem Tastendruck und den aktuell gedrückten Modifikatoren.

UMSCHALTTASTE + A

Angenommen, der Nutzer hat gleichzeitig A und Umschalttaste gedrückt. Das System findet zuerst Die mit KEYCODE_A verknüpften Attribute und Verhaltensweisen.

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

Das System scannt die Eigenschaften vom ersten zum letzten und von links nach rechts und ignoriert dabei Die Attribute label und number, die speziell sind.

Die erste gefundene Eigenschaft ist base. Das Attribut base gilt immer für egal, welche Modifikatortasten gedrückt werden. Damit wird im Wesentlichen der Standardwert Verhalten für den Schlüssel, es sei denn, er wird durch folgende Eigenschaften überschrieben. Da das Attribut base für diesen Tastendruck gilt, zeichnet das System der Tatsache, dass sein Verhalten 'a' ist, geben Sie das Zeichen a ein.

Das System scannt dann nachfolgende Immobilien, falls welche vorhanden sind. sind spezifischer als base und überschreiben sie. Sie stößt auf shift, gilt auch für die Tastenkombination UMSCHALTTASTE + A. Das System beschließt also, das Verhalten des Attributs base und wählt das Verhalten aus, das mit Die shift-Eigenschaft ('A') (geben Sie das Zeichen A ein).

Die Tabelle wird dann weiter gescannt, aber es gibt keine anderen Eigenschaften. Tastendruck (die Feststelltaste ist nicht gesperrt, weder die STEUERtaste wird gedrückt, noch die Alt-Taste gedrückt wird und keine der Meta-Tasten gedrückt wird).

Das sich daraus ergebende Verhalten für die Tastenkombination UMSCHALTTASTE + A ist also 'A'.

STEUERUNG + A

Überlegen Sie nun, was passieren würde, wenn der Nutzer gleichzeitig A und STEUER drücken würde.

Wie zuvor würde das System die Tabelle der Immobilien scannen. Es würde feststellen, angewendet wurde. Der Scan würde aber auch so lange weiterlaufen, bis das Attribut base erreichte er schließlich die Property control. Bei der Veröffentlichung werden die control wird nach base angezeigt, sodass sein Verhalten das base-Verhalten überschreibt.

Das sich daraus ergebende Verhalten für die Tastenkombination CONTROL + A lautet also none.

ESC

Angenommen, der Nutzer hat die Esc-Taste gedrückt.

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

Dieses Mal erhält das System das Verhalten fallback BACK, ein Fallback-Verhalten. Da kein Zeichenliteral erscheint, wird kein Zeichen eingegeben.

Bei der Verarbeitung des Schlüssels übergibt das System zuerst KEYCODE_ESCAPE an den . Wenn die Anwendung diese Funktion nicht verarbeitet, versucht das System, wieder, aber dieses Mal werden KEYCODE_BACK an die Anwendung als vom Fallback-Verhalten angefordert.

Anwendungen, die KEYCODE_ESCAPE erkennen und unterstützen, haben ohne die Möglichkeit, sie unverändert zu verarbeiten. Andere Anwendungen, die dies nicht können, Sie führen die Fallback-Aktion aus, also den Schlüssel so zu behandeln, als wäre er KEYCODE_BACK.

NUMPAD_0 mit oder ohne NUM LOCK

Die Tastenbelegung ist sehr unterschiedlich ausgelegt, je nachdem, die Taste NUM LOCK ist gesperrt.

Mit der folgenden Schlüsseldeklaration wird sichergestellt, dass KEYCODE_NUMPAD_0 den Wert 0 eingibt wenn NUM LOCK gedrückt wird. Wenn NUM LOCK nicht gedrückt wird, wird die Taste geliefert wie gewohnt in der Anwendung. Wird diese nicht verarbeitet, ist das Fallback Stattdessen wird der Schlüssel KEYCODE_INSERT übergeben.

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

Durch die Deklaration des Fallback-Schlüssels wird die Kompatibilität erheblich verbessert. bei älteren Anwendungen, die nicht alle Schlüssel erkennen oder direkt unterstützen die auf einer vollwertigen PC-Tastatur vorhanden sind.

Beispiele

Vollständige Tastatur

# This is an example of part of a key character map file for a full keyboard
# include a few fallback behaviors for special keys that few applications
# handle themselves.

type FULL

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

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

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

Alphanumerische Tastatur

# This is an example of part of a key character map file for an alphanumeric
# thumb keyboard.  Some keys are combined, such as `A` and `2`.  Here we
# specify `number` labels to tell the system what to do when the user is
# typing a number into a dial pad.
#
# Also note the special character '\uef01' mapped to ALT+SPACE.
# Pressing this combination of keys invokes an on-screen character picker.

type ALPHA

key A {
    label:                              'A'
    number:                             '2'
    base:                               'a'
    shift, capslock:                    'A'
    alt:                                '#'
    shift+alt, capslock+alt:            none
}

key SPACE {
    label:                              ' '
    number:                             ' '
    base:                               ' '
    shift:                              ' '
    alt:                                '\uef01'
    shift+alt:                          '\uef01'
}

Game pad

# This is an example of part of a key character map file for a game pad.
# It defines fallback actions that enable the user to navigate the user interface
# by pressing buttons.

type SPECIAL_FUNCTION

key BUTTON_A {
    base:                               fallback BACK
}

key BUTTON_X {
    base:                               fallback DPAD_CENTER
}

key BUTTON_START {
    base:                               fallback HOME
}

key BUTTON_SELECT {
    base:                               fallback MENU
}

Kompatibilitätshinweis

Vor Android Honeycomb 3.0 wurde die Android-Schlüsselzeichenzuordnung mit einer sehr anderen Syntax und wurde in ein Binärdateiformat kompiliert. (.kcm.bin) zur Build-Zeit.

Obwohl das neue Format die gleiche Erweiterung .kcm verwendet, ist die Syntax ziemlich anders (und leistungsstärker).

Ab Android Honeycomb 3.0 müssen alle Android-Schlüsselzeichenzuordnungsdateien die neue Syntax und das neue Nur-Text-Dateiformat, die in diesem Dokument beschrieben werden. Die alte Syntax wird nicht unterstützt und die alten .kcm.bin-Dateien werden nicht erkannt durch das System.

Sprachnotiz

Android unterstützt derzeit keine mehrsprachigen Tastaturen. Die Bei der integrierten generischen Tastenzeichenzuordnung wird ein Tastaturlayout (US-Englisch) vorausgesetzt.

OEMs werden empfohlen, benutzerdefinierte Tastenbelegungen für ihre Tastaturen bereitzustellen. wenn sie für andere Sprachen entwickelt wurden.

Künftige Versionen von Android bieten möglicherweise bessere Unterstützung mehrsprachiger Tastaturen oder vom Nutzer auswählbare Tastaturlayouts.

Zertifizierungsstufe

Validieren Sie Ihre Key Character Map-Dateien unbedingt mit dem Validieren Sie Keymaps.