Inserisci i file di configurazione del dispositivo

I file di configurazione del dispositivo di input (file .idc ) contengono proprietà di configurazione specifiche del dispositivo che influiscono sul comportamento dei dispositivi di input.

I file di configurazione del dispositivo di input in genere non sono necessari per periferiche standard come tastiere e mouse HID poiché il comportamento predefinito del sistema di solito garantisce che funzionino immediatamente. D'altra parte, i dispositivi incorporati incorporati, in particolare i touch screen, richiedono quasi sempre file di configurazione del dispositivo di input per specificarne il comportamento.

Fondamento logico

Android rileva e configura automaticamente la maggior parte delle funzionalità del dispositivo di input in base ai tipi di evento e alle proprietà segnalate 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 consiste nel presentare un cursore sullo schermo che tiene traccia dei movimenti del mouse e simula i tocchi quando si fa clic con il mouse. Sebbene il mouse possa essere configurato in modo diverso, il comportamento predefinito è generalmente sufficiente per le periferiche del mouse standard.

Alcune classi di dispositivi di input sono più ambigue. Ad esempio, i touch screen multi-touch e i touch pad supportano entrambi il tipo di evento EV_ABS e i codici ABS_MT_POSITION_X e ABS_MT_POSITION_Y come minimo. Tuttavia, gli usi previsti di questi dispositivi sono abbastanza diversi e non possono essere sempre determinati automaticamente. Inoltre, sono necessarie ulteriori informazioni per dare un senso alle informazioni sulla pressione e sulle dimensioni riportate dai dispositivi touch. Quindi i dispositivi touch, in particolare i touch screen integrati, di solito necessitano di file IDC.

Posizione

I file di configurazione del dispositivo di input si trovano in base al fornitore USB, all'ID del prodotto (e facoltativamente alla versione) o al nome del dispositivo di input.

I seguenti percorsi sono consultati in ordine.

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

Quando si costruisce 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 '_' sono sostituiti da '_'.

Sintassi

Un file di configurazione del dispositivo di input è un file di testo semplice costituito da assegnazioni di proprietà e commenti.

Proprietà

Ciascuna assegnazione di proprietà consiste in un nome di proprietà, un = , un valore di proprietà e una nuova riga. Come questo:

property = value

I nomi delle proprietà sono identificatori di testo letterali non vuoti. Non devono contenere spazi bianchi. Ciascun componente del sistema di input definisce un insieme di proprietà che vengono utilizzate per configurarne la funzione.

I valori delle proprietà sono stringhe letterali, numeri interi o numeri in virgola mobile non vuoti. Non devono contenere spazi bianchi o caratteri riservati \ o " .

I nomi e i valori delle proprietà fanno distinzione tra maiuscole e minuscole.

Commenti

Le righe di commento iniziano con '#' e continuano fino alla fine della riga. Come questo:

# 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 proprietà seguente è comune a tutte le classi di dispositivi di input.

Fare riferimento alla documentazione di ciascuna classe di dispositivi di input per informazioni sulle proprietà speciali utilizzate da ciascuna classe.

device.internal

Definizione: device.internal = 0 | 1

Specifica se il dispositivo di input è un componente integrato interno anziché 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), altrimenti 1 .

Questa proprietà determina le decisioni dei criteri predefiniti riguardanti gli eventi di riattivazione.

I dispositivi di input interni generalmente non riattivano il display dalla modalità di sospensione a meno che non siano esplicitamente configurati per farlo nel file di layout della chiave o in una regola dei criteri hardcoded. Questa distinzione impedisce alla pressione dei tasti e ai tocchi di riattivare in modo spurio il telefono quando è in tasca. Di solito sono definite solo una piccola manciata di tasti di riattivazione.

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, la pressione di un tasto qualsiasi su una tastiera esterna è un buon indicatore del fatto che l'utente desidera che il dispositivo si riattivi 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 Validate Keymaps .