Fichiers de configuration du périphérique d'entrée

Les fichiers de configuration des périphériques d'entrée (fichiers .idc ) contiennent des propriétés de configuration spécifiques au périphérique qui affectent le comportement des périphériques d'entrée.

Les fichiers de configuration des périphériques d'entrée ne sont généralement pas nécessaires pour les périphériques standard tels que les claviers et les souris HID, car le comportement par défaut du système garantit généralement qu'ils fonctionneront immédiatement. D'autre part, les périphériques intégrés intégrés, en particulier les écrans tactiles, nécessitent presque toujours des fichiers de configuration de périphérique d'entrée pour spécifier leur comportement.

Raisonnement

Android détecte et configure automatiquement la plupart des fonctionnalités des périphériques d'entrée en fonction des types d'événements et des propriétés signalés par le pilote de périphérique d'entrée du noyau Linux associé.

Par exemple, si un périphérique d'entrée prend en charge le type d'événement EV_REL et les codes REL_X et REL_Y ainsi que le type d'événement EV_KEY et BTN_MOUSE , alors Android classera le périphérique d'entrée comme une souris. Le comportement par défaut d'une souris est de présenter un curseur à l'écran qui suit les mouvements de la souris et simule les touchers lorsque la souris est cliquée. Bien que la souris puisse être configurée différemment, le comportement par défaut est généralement suffisant pour les périphériques de souris standard.

Certaines classes de périphériques d'entrée sont plus ambiguës. Par exemple, les écrans tactiles multipoints et les tablettes tactiles prennent tous deux en charge le type d'événement EV_ABS et les codes ABS_MT_POSITION_X et ABS_MT_POSITION_Y au minimum. Cependant, les utilisations prévues de ces appareils sont très différentes et ne peuvent pas toujours être déterminées automatiquement. De plus, des informations supplémentaires sont nécessaires pour donner un sens aux informations de pression et de taille signalées par les appareils tactiles. Par conséquent, les appareils tactiles, en particulier les écrans tactiles intégrés, ont généralement besoin de fichiers IDC.

Emplacement

Les fichiers de configuration du périphérique d'entrée sont localisés par fournisseur USB, ID de produit (et éventuellement de version) ou par nom de périphérique d'entrée.

Les chemins suivants sont consultés dans l'ordre.

  • /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

Lors de la construction d'un chemin de fichier contenant le nom de l'appareil, tous les caractères du nom de l'appareil autres que '0'-'9', 'a'-'z', 'A'-'Z', '-' ou '_' sont remplacés par '_'.

Syntaxe

Un fichier de configuration de périphérique d'entrée est un fichier en texte brut composé d'attributions de propriétés et de commentaires.

Propriétés

Les affectations de propriété consistent chacune en un nom de propriété, un = , une valeur de propriété et une nouvelle ligne. Comme ça:

property = value

Les noms de propriété sont des identificateurs de texte littéral non vides. Ils ne doivent pas contenir d'espaces blancs. Chaque composant du système d'entrée définit un ensemble de propriétés qui sont utilisées pour configurer sa fonction.

Les valeurs de propriété sont des littéraux de chaîne non vides, des entiers ou des nombres à virgule flottante. Ils ne doivent pas contenir d'espaces ou de caractères réservés \ ou " .

Les noms et les valeurs des propriétés sont sensibles à la casse.

commentaires

Les lignes de commentaires commencent par '#' et continuent jusqu'à la fin de la ligne. Comme ça:

# A comment!

Les lignes vides sont ignorées.

Exemple

# 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...

Propriétés communes

La propriété suivante est commune à toutes les classes de périphérique d'entrée.

Reportez-vous à la documentation de chaque classe de périphérique d'entrée pour plus d'informations sur les propriétés spéciales utilisées par chaque classe.

device.internal

Définition : device.internal = 0 | 1

Spécifie si le périphérique d'entrée est un composant interne intégré par opposition à un périphérique connecté à l'extérieur (le plus souvent amovible).

  • Si la valeur est 0 , l'appareil est externe.

  • Si la valeur est 1 , le périphérique est interne.

  • Si la valeur n'est pas spécifiée, la valeur par défaut est 0 pour tous les périphériques sur le bus USB (BUS_USB) ou Bluetooth (BUS_BLUETOOTH), 1 sinon.

Cette propriété détermine les décisions de stratégie par défaut concernant les événements de réveil.

Les périphériques d'entrée internes ne sortent généralement pas l'écran du mode veille, sauf s'ils sont explicitement configurés pour le faire dans le fichier de disposition des touches ou dans une règle de politique codée en dur. Cette distinction empêche les pressions sur les touches et les touches de réveiller faussement votre téléphone lorsqu'il est dans votre poche. Habituellement, il n'y a qu'une petite poignée de touches de réveil définies.

À l'inverse, les périphériques d'entrée externes réveillent généralement l'appareil de manière plus agressive car ils sont supposés être éteints ou non branchés pendant le transport. Par exemple, appuyer sur n'importe quelle touche d'un clavier externe est un bon indicateur que l'utilisateur souhaite que l'appareil se réveille et réponde.

Il est important de s'assurer que la valeur de la propriété device.internal est définie correctement pour tous les périphériques d'entrée internes.

Validation

Assurez-vous de valider vos fichiers de configuration de périphérique d'entrée à l'aide de l'outil Validate Keymaps .