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
, andernfalls1
.
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 .