Archivos de configuración del dispositivo de entrada

Los archivos de configuración del dispositivo de entrada (archivos .idc) contienen información específica del dispositivo de configuración que afectan el comportamiento de los dispositivos de entrada.

Por lo general, los archivos de configuración del dispositivo de entrada no son necesarios como el mouse y los teclados HID, ya que el comportamiento por lo general, garantiza que funcionarán de inmediato. Por otro lado, con dispositivos integrados, en particular, pantallas táctiles y casi siempre requerir archivos de configuración del dispositivo de entrada para especificar su comportamiento.

Justificación

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 la entidad asociada Controlador de dispositivos de entrada del kernel de Linux.

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. Si bien el mouse puede configurar de forma diferente, el comportamiento predeterminado suele ser suficiente para 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, el objetivo los usos de estos dispositivos son muy diferentes y no siempre se pueden determinar automáticamente. Además, se requiere información adicional para interpretar 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 ubican por proveedor USB, producto (y (versión opcional) o por nombre de dispositivo de entrada.

Las siguientes rutas se consultan 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 que no sean "0" a "9", "a" a "z", "A" a "Z", "-" o "_" se reemplazan por "_".

Sintaxis

Un archivo de configuración del 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 nueva línea. Me gusta:

property = value

Los nombres de propiedades son identificadores de texto literal que no están vacíos. No deben incluir espacio 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 literales de string no vacíos, 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 la presión y el tacto de teclas activen falsamente tu teléfono cuando la llevas en el bolsillo. Por lo general, solo se definen unas pocas claves 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 establecer el valor de la propiedad device.internal 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.