Konfigurationsdateien für Eingabegeräte

Konfigurationsdateien für Eingabegeräte ( .idc -Dateien) enthalten gerätespezifische Konfigurationseigenschaften, die sich auf das Verhalten von Eingabegeräten auswirken.

Konfigurationsdateien für Eingabegeräte sind für Standardperipheriegeräte wie HID-Tastaturen und -Mäuse normalerweise nicht erforderlich, da das Standardsystemverhalten normalerweise sicherstellt, dass sie sofort einsatzbereit sind. Andererseits erfordern integrierte eingebettete Geräte, insbesondere Touchscreens, fast immer Konfigurationsdateien für Eingabegeräte, um ihr Verhalten zu spezifizieren.

Begründung

Android erkennt und konfiguriert die meisten Eingabegerätefunktionen automatisch basierend auf den Ereignistypen und Eigenschaften, die vom zugehörigen Linux-Kernel-Eingabegerätetreiber gemeldet werden.

Wenn ein Eingabegerät beispielsweise den Ereignistyp EV_REL und die Codes REL_X und REL_Y sowie den Ereignistyp EV_KEY und BTN_MOUSE , klassifiziert Android das Eingabegerät als Maus. Das Standardverhalten einer Maus besteht darin, einen Cursor auf dem Bildschirm darzustellen, der die Bewegungen der Maus verfolgt und Berührungen simuliert, wenn mit der Maus geklickt wird. Obwohl die Maus anders konfiguriert werden kann, ist das Standardverhalten normalerweise für Standard-Mausperipherie ausreichend.

Bestimmte Klassen von Eingabegeräten sind mehrdeutig. Beispielsweise unterstützen Multi-Touch-Touchscreens und Touchpads beide mindestens den Ereignistyp EV_ABS und die Codes ABS_MT_POSITION_X und ABS_MT_POSITION_Y . Die Verwendungszwecke dieser Geräte sind jedoch sehr unterschiedlich und können nicht immer automatisch bestimmt werden. Außerdem sind zusätzliche Informationen erforderlich, um die Druck- und Größeninformationen zu verstehen, die von Touch-Geräten gemeldet werden. Daher benötigen Touch-Geräte, insbesondere eingebaute Touchscreens, normalerweise IDC-Dateien.

Ort

Eingabegeräte-Konfigurationsdateien werden nach USB-Anbieter, Produkt-ID (und optional Version) oder nach Eingabegerätename lokalisiert.

Die folgenden Pfade werden der Reihe nach konsultiert.

  • /odm/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
  • /vendor/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
  • /system/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
  • /data/system/devices/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
  • /odm/usr/idc/Vendor_XXXX_Product_XXXX.idc
  • /vendor/usr/idc/Vendor_XXXX_Product_XXXX.idc
  • /system/usr/idc/Vendor_XXXX_Product_XXXX.idc
  • /data/system/devices/idc/Vendor_XXXX_Product_XXXX.idc
  • /odm/usr/idc/ device-name .idc
  • /vendor/usr/idc/ device-name .idc
  • /system/usr/idc/ device-name .idc
  • /data/system/devices/idc/ device-name .idc

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

Syntax

Eine Konfigurationsdatei für Eingabegeräte ist eine einfache Textdatei, die aus Eigenschaftszuweisungen und Kommentaren besteht.

Eigenschaften

Eigenschaftszuweisungen bestehen jeweils aus einem Eigenschaftsnamen, einem = , einem Eigenschaftswert und einer neuen Zeile. So was:

property = value

Eigenschaftsnamen sind nicht leere wörtliche Textbezeichner. Sie dürfen keine Leerzeichen enthalten. Jede Komponente des Eingabesystems definiert einen Satz von Eigenschaften, die verwendet werden, um seine Funktion zu konfigurieren.

Eigenschaftswerte sind nicht leere Zeichenfolgenliterale, Ganzzahlen oder Gleitkommazahlen. Sie dürfen keine Leerzeichen oder die reservierten Zeichen \ oder " enthalten.

Bei Eigenschaftsnamen und -werten wird zwischen Groß- und Kleinschreibung unterschieden.

Kommentare

Kommentarzeilen beginnen mit '#' und werden bis zum Ende der Zeile fortgesetzt. So was:

# A comment!

Leerzeilen werden ignoriert.

Beispiel

# This is an example of an input device configuration file.
# It might be used to describe the characteristics of a built-in touch screen.

# This is an internal device, not an external peripheral attached to the USB
# or Bluetooth bus.
device.internal = 1

# The device should behave as a touch screen, which uses the same orientation
# as the built-in display.
touch.deviceType = touchScreen
touch.orientationAware = 1

# Additional calibration properties...
# etc...

Gemeinsame Eigenschaften

Die folgende Eigenschaft ist allen Eingabegeräteklassen gemeinsam.

Informationen zu den speziellen Eigenschaften, die von jeder Klasse verwendet werden, finden Sie in der Dokumentation der einzelnen Eingabegeräteklassen.

device.internal

Definition: device.internal = 0 | 1

Gibt an, ob das Eingabegerät eine interne integrierte Komponente und kein extern angeschlossenes (höchstwahrscheinlich entfernbares) Peripheriegerät ist.

  • Wenn der Wert 0 ist, ist das Gerät extern.

  • Wenn der Wert 1 ist, ist das Gerät intern.

  • Wenn der Wert nicht angegeben ist, ist der Standardwert für alle Geräte am USB- (BUS_USB) oder Bluetooth-Bus (BUS_BLUETOOTH) 0 , andernfalls 1 .

Diese Eigenschaft bestimmt standardmäßige Richtlinienentscheidungen in Bezug auf Aktivierungsereignisse.

Interne Eingabegeräte wecken die Anzeige im Allgemeinen nicht aus dem Ruhezustand auf, es sei denn, dies ist in der Tastenlayoutdatei oder in einer fest codierten Richtlinienregel ausdrücklich so konfiguriert. Diese Unterscheidung verhindert, dass Tastendrücke und Berührungen Ihr Telefon fälschlicherweise aufwecken, wenn es sich in Ihrer Tasche befindet. Normalerweise ist nur eine kleine Handvoll Weckschlüssel definiert.

Umgekehrt wecken externe Eingabegeräte das Gerät meist aggressiver auf, weil man davon ausgeht, dass sie während des Transports ausgeschaltet oder nicht eingesteckt sind. Beispielsweise ist das Drücken einer beliebigen Taste auf einer externen Tastatur ein guter Indikator dafür, dass der Benutzer möchte, dass das Gerät aktiviert wird und reagiert.

Es ist wichtig sicherzustellen, dass der Wert der Eigenschaft device.internal für alle internen Eingabegeräte richtig eingestellt ist.

Validierung

Stellen Sie sicher, dass Sie Ihre Eingabegerät-Konfigurationsdateien mit dem Tool Validate Keymaps validieren .