Los archivos de configuración de dispositivos de entrada (archivos .idc
) contienen propiedades de configuración específicas del dispositivo que afectan el comportamiento de los dispositivos de entrada.
Los archivos de configuración del dispositivo de entrada normalmente no son necesarios para los periféricos estándar, como los teclados y ratones HID, ya que el comportamiento predeterminado del sistema generalmente garantiza que funcionarán de manera inmediata. Por otro lado, los dispositivos integrados incorporados, en particular las pantallas táctiles, casi siempre requieren archivos de configuración del dispositivo de entrada para especificar su comportamiento.
Razón fundamental
Android detecta y configura automáticamente la mayoría de las capacidades de los dispositivos de entrada en función de los tipos de eventos y las propiedades que informa el controlador del dispositivo de entrada del kernel de Linux asociado.
Por ejemplo, si un dispositivo de entrada admite el tipo de evento EV_REL
y codifica REL_X
y REL_Y
, así como el tipo de evento EV_KEY
y BTN_MOUSE
, Android clasificará el dispositivo de entrada como un mouse. El comportamiento predeterminado de un mouse es presentar un cursor en pantalla que rastrea los movimientos del mouse y simula toques cuando se hace clic en el mouse. Aunque el mouse se puede configurar de manera diferente, el comportamiento predeterminado suele ser suficiente para los periféricos de mouse estándar.
Ciertas clases de dispositivos de entrada son más ambiguas. Por ejemplo, las pantallas táctiles multitáctiles y los paneles táctiles admiten el tipo de evento EV_ABS
y los códigos ABS_MT_POSITION_X
y ABS_MT_POSITION_Y
como mínimo. Sin embargo, los usos previstos de estos dispositivos son bastante diferentes y no siempre se pueden determinar automáticamente. Además, se requiere información adicional para dar sentido a la información de presión y tamaño reportada por los dispositivos táctiles. Por lo tanto, los dispositivos táctiles, especialmente las pantallas táctiles integradas, generalmente necesitan archivos IDC.
Ubicación
Los archivos de configuración del dispositivo de entrada se ubican por proveedor de USB, ID de producto (y versión opcional) o por nombre de dispositivo de entrada.
Las siguientes rutas se consultan en orden.
-
/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
Al construir una ruta de archivo que contiene el nombre del dispositivo, todos los caracteres del nombre del dispositivo que no sean '0'-'9', 'a'-'z', 'A'-'Z', '-' o '_' se sustituyen por '_'.
Sintaxis
Un archivo de configuración de dispositivo de entrada es un archivo de texto sin formato que consta de asignaciones de propiedades y comentarios.
Propiedades
Cada una de las asignaciones de propiedad consta de un nombre de propiedad, un =
, un valor de propiedad y una nueva línea. Como esto:
property = value
Los nombres de propiedad son identificadores de texto literal no vacíos. No deben contener espacios en blanco. Cada componente del sistema de entrada define un conjunto de propiedades que se utilizan para configurar su función.
Los valores de propiedad son literales de cadena no vacíos, enteros o números de coma flotante. No deben contener espacios en blanco ni los caracteres reservados \
o "
.
Los nombres y valores de propiedad distinguen entre mayúsculas y minúsculas.
Comentarios
Las líneas de comentarios comienzan con '#' y continúan hasta el final de la línea. Como esto:
# A comment!
Las líneas en blanco se ignoran.
Ejemplo
# 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...
Propiedades comunes
La siguiente propiedad es común a todas las clases de dispositivos de entrada.
Consulte la documentación de cada clase de dispositivo de entrada para obtener información sobre las propiedades especiales utilizadas por cada clase.
device.internal
Definición: device.internal
= 0
| 1
Especifica si el dispositivo de entrada es un componente integrado interno en lugar de un periférico conectado externamente (probablemente extraíble).
Si el valor es
0
, el dispositivo es externo.Si el valor es
1
, el dispositivo es interno.Si no se especifica el valor, el valor predeterminado es
0
para todos los dispositivos en el bus USB (BUS_USB) o Bluetooth (BUS_BLUETOOTH),1
en caso contrario.
Esta propiedad determina las decisiones de política predeterminadas con respecto a los eventos de activación.
Los dispositivos de entrada internos generalmente no activan la pantalla desde el modo de suspensión a menos que estén configurados explícitamente para hacerlo en el archivo de diseño de teclas o en una regla de política codificada. Esta distinción evita que las pulsaciones de teclas y los toques activen falsamente el teléfono cuando está en el bolsillo. Por lo general, solo hay un pequeño puñado de claves de activación definidas.
Por el contrario, los dispositivos de entrada externos generalmente activan el dispositivo de manera más agresiva porque se supone que están apagados o no enchufados durante el transporte. Por ejemplo, presionar cualquier tecla en un teclado externo es un buen indicador de que el usuario desea que el dispositivo se despierte y responda.
Es importante asegurarse de que el valor de la propiedad device.internal
esté configurado correctamente para todos los dispositivos de entrada internos.
Validación
Asegúrese de validar los archivos de configuración de su dispositivo de entrada con la herramienta Validar mapas de teclas .