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.
Por lo general, los archivos de configuración de dispositivos de entrada no son necesarios para los periféricos estándar, como los teclados y los mouse HID, ya que el comportamiento predeterminado del sistema suele garantizar que funcionen de inmediato. Por otro lado, los dispositivos integrados, en particular las pantallas táctiles, casi siempre requieren archivos de configuración de dispositivos de entrada para especificar su comportamiento.
Justificación
Android detecta y configura automáticamente la mayoría de las capacidades del dispositivo de entrada según los tipos de eventos y las propiedades que informa el controlador de 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 del mouse es presentar un cursor en pantalla que rastrea sus movimientos y simula toques cuando se hace clic en él. Aunque el mouse se puede configurar de manera diferente, el comportamiento predeterminado suele ser suficiente para los periféricos de mouse estándar.
Algunas clases de dispositivos de entrada son más ambiguas. Por ejemplo, las pantallas táctiles y los paneles táctiles multitáctiles admiten, como mínimo, el tipo de evento EV_ABS
y los códigos ABS_MT_POSITION_X
y ABS_MT_POSITION_Y
. 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 comprender la información de presión y tamaño que informan los dispositivos táctiles. Por lo tanto, los dispositivos táctiles, en especial las pantallas táctiles integradas, suelen necesitar archivos IDC.
Ubicación
Los archivos de configuración del dispositivo de entrada se encuentran por proveedor USB, ID del producto (y, de manera opcional, versión) o por nombre del dispositivo de entrada.
Se consultan las siguientes rutas de acceso en orden.
/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
Cuando se construye una ruta de acceso de archivo que contiene el nombre del dispositivo, todos los caracteres del nombre del dispositivo, excepto los números del 0 al 9, las letras del a al z, las letras del A al Z, el guion o la _, se reemplazan 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 asignación de propiedad consta de un nombre de propiedad, un =
, un valor de propiedad y una línea nueva. Me gusta:
property = value
Los nombres de las propiedades 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 usan para configurar su función.
Los valores de propiedad son cadenas literales no vacías, números enteros o números de punto flotante.
No deben contener espacios en blanco ni los caracteres reservados \
o "
.
Los nombres y valores de las propiedades distinguen mayúsculas de minúsculas.
Comentarios
Las líneas de comentarios comienzan con "#" y continúan hasta el final de la línea. Me gusta:
# A comment!
Se ignoran las líneas en blanco.
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.
Consulta la documentación de cada clase de dispositivo de entrada para obtener información sobre las propiedades especiales que usa cada clase.
device.internal
Definición: device.internal
= 0
| 1
Especifica si el dispositivo de entrada es un componente interno integrado en lugar de un periférico conectado de forma externa (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 predeterminado es
0
para todos los dispositivos en el bus USB (BUS_USB) o Bluetooth (BUS_BLUETOOTH),1
de lo contrario.
Esta propiedad determina las decisiones de políticas predeterminadas en relación con los eventos de activación.
Por lo general, los dispositivos de entrada internos no activan la pantalla del modo de suspensión, a menos que se configuren de forma explícita para hacerlo en el archivo de diseño de claves o en una regla de política codificada. Esta distinción evita que las presiones de teclas y los toques activen el teléfono de forma incorrecta cuando está en el bolsillo. Por lo general, solo se definen unas pocas teclas de activación.
Por el contrario, los dispositivos de entrada externos suelen activar el dispositivo de forma más agresiva, ya que se supone que están apagados o no están conectados durante el transporte. Por ejemplo, presionar cualquier tecla de un teclado externo es un buen indicador de que el usuario quiere que el dispositivo se active y responda.
Es importante asegurarse de que el valor de la propiedad device.internal
se configure correctamente para todos los dispositivos de entrada internos.
Validación
Asegúrate de validar los archivos de configuración de tu dispositivo de entrada con la herramienta Validate Keymaps.