Les fichiers de configuration des périphériques d'entrée (fichiers .idc
) contiennent des propriétés de configuration spécifiques à l'appareil 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 standards tels que les claviers et les souris HID, car le comportement système par défaut garantit généralement qu'ils fonctionneront dès le départ. En revanche, les appareils 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.
Justification
Android détecte et configure automatiquement la plupart des fonctionnalités des périphériques d'entrée en fonction des types et des propriétés d'événements signalés par le pilote de périphérique d'entrée du kernel Linux associé.
Par exemple, si un appareil d'entrée est compatible avec 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
, Android classifie l'appareil d'entrée comme une souris. Le comportement par défaut d'une souris est de présenter un curseur à l'écran qui suit ses mouvements et simule les pressions lorsque l'utilisateur clique dessus. 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 standards.
Certaines classes de périphériques d'entrée sont plus ambiguës. Par exemple, les écrans tactiles multipoint et les pavés tactiles sont tous deux compatibles avec le type d'événement EV_ABS
et les codes ABS_MT_POSITION_X
et ABS_MT_POSITION_Y
au minimum. Toutefois, 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 interpréter les informations sur la pression et la taille fournies par les appareils tactiles. Par conséquent, les appareils tactiles, en particulier les écrans tactiles intégrés, nécessitent généralement des fichiers IDC.
Position
Les fichiers de configuration des périphériques d'entrée sont situés par fournisseur USB, par ID de produit (et éventuellement de version) ou par nom du périphérique d'entrée.
Les chemins suivants sont consultés dans l'ordre.
/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
Lorsque vous créez un chemin d'accès au fichier contenant le nom de l'appareil, tous les caractères du nom de l'appareil, à l'exception de '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 texte brut composé d'attributions de propriétés et de commentaires.
Propriétés
Chaque attribution de propriété se compose d'un nom de propriété, d'un =
, d'une valeur de propriété et d'un saut de ligne. Comme ceci :
property = value
Les noms de propriété sont des identifiants de texte littéraux non vides. Elles ne doivent pas contenir d'espaces. Chaque composant du système d'entrée définit un ensemble de propriétés qui permettent de configurer sa fonction.
Les valeurs de propriété sont des littéraux de chaîne non vides, des entiers ou des nombres à virgule flottante.
Elles ne doivent pas contenir d'espace ni les caractères réservés \
ou "
.
Les noms et les valeurs des propriétés sont sensibles à la casse.
Commentaires
Les lignes de commentaire commencent par "#" et se poursuivent jusqu'à la fin de la ligne. Comme ceci :
# 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 d'appareils d'entrée.
Pour en savoir plus sur les propriétés spéciales utilisées par chaque classe, consultez la documentation de chaque classe d'appareil d'entrée.
device.internal
Définition:device.internal
= 0
| 1
Indique si l'appareil d'entrée est un composant intégré interne par opposition à un périphérique externe (le plus souvent amovible).
-
Si la valeur est
0
, l'appareil est externe. -
Si la valeur est
1
, l'appareil est interne. -
Si la valeur n'est pas spécifiée, la valeur par défaut est
0
pour tous les appareils sur le bus USB (BUS_USB) ou Bluetooth (BUS_BLUETOOTH),1
dans le cas contraire.
Cette propriété détermine les décisions de règles par défaut concernant les événements de réveil.
En règle générale, les périphériques d'entrée internes ne réveillent pas l'écran de veille, sauf s'ils sont explicitement configurés pour le faire dans le fichier de mise en page des touches ou dans une règle de stratégie codée en dur. Cette distinction empêche les pressions sur les touches de réveiller votre téléphone de manière involontaire lorsqu'il est dans votre poche. En règle générale, seules quelques clés de réveil sont 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 on suppose qu'ils sont éteints ou non branchés pendant le transport. Par exemple, appuyer sur une 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
Veillez à valider les fichiers de configuration de vos périphériques d'entrée à l'aide de l'outil Valider les claviers.