I file di configurazione dei dispositivi di input (file .idc
) contengono proprietà di configurazione specifiche del dispositivo che influiscono sul comportamento dei dispositivi di input.
I file di configurazione dei dispositivi di input in genere non sono necessari per le periferiche standard come tastiere e mouse HID, poiché il comportamento predefinito del sistema garantisce in genere che funzionino immediatamente. D'altra parte, i dispositivi integrati incorporati, in particolare i touchscreen, richiedono quasi sempre file di configurazione dei dispositivi di input per specificare il loro comportamento.
Motivazione
Android rileva e configura automaticamente la maggior parte delle funzionalità dei dispositivi di input in base ai tipi di eventi e alle proprietà registrati dal driver del dispositivo di input del kernel Linux associato.
Ad esempio, se un dispositivo di input supporta il tipo di evento EV_REL
e i codici REL_X
e REL_Y
, nonché il tipo di evento EV_KEY
e BTN_MOUSE
, Android classificherà il dispositivo di input come mouse. Il comportamento predefinito per un mouse è presentare un cursore sullo schermo che ne monitora i movimenti e simula i tocchi quando viene fatto clic. Sebbene il mouse possa essere configurato in modo diverso, il comportamento predefinito è in genere sufficiente per le periferiche mouse standard.
Alcune classi di dispositivi di input sono più ambigue. Ad esempio, i touchscreen e i touchpad multi-touch supportano entrambi il tipo di evento EV_ABS
e i codici ABS_MT_POSITION_X
e ABS_MT_POSITION_Y
come minimo. Tuttavia, gli scopi previsti di questi dispositivi sono molto diversi e non possono sempre essere determinati automaticamente. Inoltre, sono necessarie informazioni aggiuntive per interpretare le informazioni su pressione e dimensioni registrate dai dispositivi touch. Pertanto, i dispositivi touch,
in particolare i touchscreen integrati, in genere richiedono file IDC.
Posizione
I file di configurazione del dispositivo di input si trovano in base al fornitore USB, all'ID prodotto (e facoltativamente alla versione) o al nome del dispositivo di input.
I seguenti percorsi vengono consultati in ordine.
/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
Quando viene creato un percorso file che contiene il nome del dispositivo, tutti i caratteri nel nome del dispositivo diversi da "0"-"9", "a"-"z", "A"-"Z", "-" o "_" vengono sostituiti da "_".
Sintassi
Un file di configurazione del dispositivo di input è un file di testo normale costituito da assegnazioni di proprietà e commenti.
Proprietà
Le assegnazioni delle proprietà sono costituite da un nome della proprietà, un =
, un valore della proprietà e una nuova riga. in questo modo:
property = value
I nomi delle proprietà sono identificatori di testo letterali non vuoti. Non devono contenere spazi. Ogni componente del sistema di input definisce un insieme di proprietà che vengono utilizzate per configurarne la funzione.
I valori delle proprietà sono letterali di stringa non vuoti, numeri interi o numeri in virgola mobile.
Non devono contenere spazi o i caratteri riservati \
o "
.
I nomi e i valori delle proprietà sono sensibili alle maiuscole.
Commenti
Le righe di commento iniziano con "#" e continuano fino alla fine della riga. in questo modo:
# A comment!
Le righe vuote vengono ignorate.
Esempio
# 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...
Proprietà comuni
La seguente proprietà è comune a tutti i tipi di dispositivi di input.
Fai riferimento alla documentazione di ogni classe di dispositivo di input per informazioni sulle proprietà speciali utilizzate da ogni classe.
device.internal
Definizione: device.internal
= 0
| 1
Specifica se il dispositivo di input è un componente interno integrato o una periferica collegata esternamente (molto probabilmente rimovibile).
-
Se il valore è
0
, il dispositivo è esterno. -
Se il valore è
1
, il dispositivo è interno. -
Se il valore non è specificato, il valore predefinito è
0
per tutti i dispositivi sul bus USB (BUS_USB) o Bluetooth (BUS_BLUETOOTH),1
in caso contrario.
Questa proprietà determina le decisioni di criteri predefinite relative agli eventi di risveglio.
In genere, i dispositivi di input interni non riattivano il display dalla modalità di sospensione, a meno che non sia esplicitamente configurato nel file di layout delle chiavi o in una regola del criterio hardcoded. Questa distinta impedisce che le pressioni dei tasti e i tocchi risveglino in modo involontario lo smartphone quando è in tasca. In genere sono definite solo poche chiavi di attivazione.
Al contrario, i dispositivi di input esterni di solito riattivano il dispositivo in modo più aggressivo perché si presume che siano spenti o non collegati durante il trasporto. Ad esempio, premere un tasto su una tastiera esterna è un buon indicatore del fatto che l'utente vuole che il dispositivo si risvegli e risponda.
È importante assicurarsi che il valore della proprietà device.internal
sia impostato correttamente per tutti i dispositivi di input interni.
Convalida
Assicurati di convalidare i file di configurazione del dispositivo di input utilizzando lo strumento Convalida mappa tasti.