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 Standard- Peripheriegeräten wie HID-Tastaturen und -Mäusen verwenden, da das standardmäßige Systemverhalten stellt in der Regel sicher, dass sie sofort einsatzfähig sind. Für integrierte Geräte, insbesondere Touchscreens, sind dagegen fast immer Konfigurationsdateien für Eingabegeräte erforderlich, um ihr Verhalten anzugeben.
Begründung
Android erkennt und konfiguriert die meisten Funktionen der Eingabegeräte automatisch basierend auf den Ereignistypen und Eigenschaften, die vom zugehörigen Linux-Kernel-Eingabegerätetreiber.
Wenn ein Eingabegerät beispielsweise den Ereignistyp und die Codes EV_REL
unterstützt
REL_X
und REL_Y
sowie den Ereignistyp EV_KEY
und BTN_MOUSE
klassifiziert Android das Eingabegerät
als Maus. Standardmäßig wird bei einer Maus ein Bildschirmcursor angezeigt, der die Bewegungen der Maus verfolgt und Berührungen simuliert, wenn auf die Maus geklickt wird. Auch wenn die Maus
unterschiedlich konfiguriert werden, reicht das Standardverhalten
Standard-Peripheriegeräten.
Bei bestimmten Eingabegeräten ist die Zuordnung nicht immer eindeutig. Zum Beispiel Multi-Touchpoint
Touchscreens und Touchpads unterstützen beide den Ereignistyp und die Codes EV_ABS
Mindestens ABS_MT_POSITION_X
und ABS_MT_POSITION_Y
. Die beabsichtigte
Die Nutzungen dieser Geräte sind sehr unterschiedlich und können nicht immer eindeutig ermittelt werden.
automatisch. Außerdem sind zusätzliche Informationen erforderlich, um die von Touchgeräten gemeldeten Druck- und Größeninformationen sinnvoll zu nutzen. Touchgeräte,
insbesondere bei integrierten Touchscreens. Meist werden IDC-Dateien benötigt.
Standort
Die Konfigurationsdateien für die Eingabegeräte sind nach USB-Anbieter, Produkt (und (optional Version) ID oder nach dem Namen des Eingabegeräts.
Die folgenden Pfade werden der Reihe nach verwendet.
/product/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
/system_ext/usr/idc/Vendor_XXXX_Product_XXXX_Version_XXXX.idc
/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
/product/usr/idc/Vendor_XXXX_Product_XXXX.idc
/system_ext/usr/idc/Vendor_XXXX_Product_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
/product/usr/idc/device-name.idc
/system_ext/usr/idc/device-name.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 mit Ausnahme von „0“ bis „9“, „a“ bis „z“, „A“ bis „Z“, „-“ oder „_“ durch „_“ ersetzt.
Syntax
Eine Konfigurationsdatei für das Eingabegerät ist eine Nur-Text-Datei, die aus folgenden Eigenschaften besteht: Aufgaben und Kommentare.
Properties
Property-Zuweisungen bestehen jeweils aus einem Property-Namen, einem =
, einem Property-Wert und einem Zeilenumbruch. Beispiel:
property = value
Property-Namen sind keine leeren literalen Text-IDs. Sie dürfen keine Leerzeichen. Jede Komponente des Eingabesystems definiert eine Reihe von Eigenschaften. die zur Konfiguration der Funktion verwendet werden.
Property-Werte sind nicht leere Stringliterale, Ganzzahlen oder Gleitkommazahlen.
Sie dürfen keine Leerzeichen oder die reservierten Zeichen \
oder "
enthalten.
Bei Attributnamen und -werten wird die Groß- und Kleinschreibung berücksichtigt.
Kommentare
Kommentarzeilen beginnen mit „#“ und gehen bis zum Ende der Zeile. Beispiel:
# A comment!
Leere Zeilen 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...
Allgemeine Eigenschaften
Die folgende Eigenschaft ist für alle Eingabegeräteklassen gleich.
Informationen zu den speziellen Eigenschaften der einzelnen Klassen finden Sie in der Dokumentation der jeweiligen Eingabegeräteklasse.
device.internal
Definition: device.internal
= 0
| 1
Gibt an, ob es sich bei dem Eingabegerät um eine interne integrierte Komponente oder um ein extern angeschlossenes (höchstwahrscheinlich abnehmbares) Peripheriegerät handelt.
-
Wenn der Wert
0
ist, ist das Gerät extern. -
Wenn der Wert
1
ist, ist das Gerät intern. -
Wenn kein Wert angegeben wird, ist der Standardwert
0
für alle Geräte im USB (BUS_USB) oder Bluetooth (BUS_BLUETOOTH), andernfalls1
.
Mit dieser Property werden Standardrichtlinienentscheidungen für Weck-Ereignisse festgelegt.
Interne Eingabegeräte wecken das Display in der Regel nicht aus dem Ruhemodus, es sei denn, dies ist in der Schlüssellayoutdatei oder in einer hartcodierten Richtlinienregel explizit konfiguriert. Dadurch wird verhindert, dass Ihr Smartphone durch Tastendrücke und Berührungen versehentlich aktiviert wird, wenn es in der Tasche ist. Normalerweise sind nur eine kleine Handvoll Wake-Schlüssel definiert.
Externe Eingabegeräte wecken das Gerät dagegen in der Regel aggressiver, da davon ausgegangen wird, dass sie während des Transports ausgeschaltet oder nicht angeschlossen sind. Wenn beispielsweise eine beliebige Taste auf einer externen Tastatur gedrückt wird, ist das ein guter Indikator dafür, dass der Nutzer möchte, dass das Gerät aktiviert wird und reagiert.
Der Wert der Property device.internal
muss für alle internen Eingabegeräte korrekt festgelegt sein.
Zertifizierungsstufe
Validieren Sie die Konfigurationsdateien für die Eingabegeräte unbedingt mit dem Validieren Sie Keymaps.