Arquivos de configuração de entrada do dispositivo

Os arquivos de configuração de dispositivos de entrada (arquivos .idc) contêm propriedades de configuração específicas do dispositivo que afetam o comportamento dos dispositivos de entrada.

Arquivos de configuração de dispositivos de entrada geralmente não são necessários para periféricos padrão, como teclados e mouses HID, já que o comportamento padrão do sistema geralmente garante que eles funcionem imediatamente. Por outro lado, dispositivos integrados integrados, principalmente telas sensíveis ao toque, quase sempre exigem arquivos de configuração de dispositivos de entrada para especificar o comportamento deles.

Justificativa

O Android detecta e configura automaticamente a maioria dos recursos do dispositivo de entrada com base nos tipos de evento e nas propriedades que são informados pelo driver do dispositivo de entrada do kernel do Linux associado.

Por exemplo, se um dispositivo de entrada oferecer suporte ao tipo de evento EV_REL e aos códigos REL_X e REL_Y, bem como ao tipo de evento EV_KEY e BTN_MOUSE, o Android vai classificar o dispositivo de entrada como um mouse. O comportamento padrão de um mouse é apresentar um cursor na tela que rastreia os movimentos do mouse e simula toques quando o mouse é clicado. Embora o mouse possa ser configurado de maneira diferente, o comportamento padrão geralmente é suficiente para periféricos de mouse padrão.

Algumas classes de dispositivos de entrada são mais ambíguas. Por exemplo, telas sensíveis ao toque multitoque e touchpads oferecem suporte ao tipo de evento EV_ABS e aos códigos ABS_MT_POSITION_X e ABS_MT_POSITION_Y, no mínimo. No entanto, os usos pretendidos desses dispositivos são bastante diferentes e nem sempre podem ser determinados automaticamente. Além disso, outras informações são necessárias para entender as informações de pressão e tamanho informadas pelos dispositivos com tela touch. Portanto, dispositivos com tela touch, especialmente telas integradas, geralmente precisam de arquivos IDC.

Local

Os arquivos de configuração do dispositivo de entrada são localizados pelo fornecedor USB, pelo ID do produto (e, opcionalmente, da versão) ou pelo nome do dispositivo de entrada.

Os caminhos a seguir são consultados em ordem.

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

Ao criar um caminho de arquivo que contém o nome do dispositivo, todos os caracteres no nome do dispositivo, exceto '0'-'9', 'a'-'z', 'A'-'Z', '-' ou '_' são substituídos por '_'.

Sintaxe

Um arquivo de configuração de dispositivo de entrada é um arquivo de texto simples que consiste em atribuições de propriedade e comentários.

Propriedades

Cada atribuição de propriedade consiste em um nome de propriedade, um =, um valor de propriedade e uma nova linha. Curta:

property = value

Os nomes de propriedades são identificadores de texto literal não vazios. Elas não podem conter espaços. Cada componente do sistema de entrada define um conjunto de propriedades que são usadas para configurar a função.

Os valores de propriedade são literais de string não vazios, números inteiros ou números de ponto flutuante. Elas não podem conter espaços em branco ou os caracteres reservados \ ou ".

Os nomes e valores das propriedades diferenciam maiúsculas de minúsculas.

Comentários

As linhas de comentário começam com '#' e continuam até o final da linha. Curta:

# A comment!

As linhas em branco são ignoradas.

Exemplo

# 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...

Propriedades comuns

A propriedade a seguir é comum a todas as classes de dispositivo de entrada.

Consulte a documentação de cada classe de dispositivo de entrada para saber mais sobre as propriedades especiais usadas por cada classe.

device.internal

Definição:device.internal = 0 | 1

Especifica se o dispositivo de entrada é um componente interno integrado em vez de um periférico conectado externamente (provavelmente removível).

  • Se o valor for 0, o dispositivo é externo.

  • Se o valor for 1, o dispositivo será interno.

  • Se o valor não for especificado, o valor padrão será 0 para todos os dispositivos no barramento USB (BUS_USB) ou Bluetooth (BUS_BLUETOOTH), caso contrário, será 1.

Essa propriedade determina as decisões de política padrão relacionadas a eventos de ativação.

Dispositivos de entrada internos geralmente não ativam a tela do modo de suspensão, a menos que sejam explicitamente configurados para isso no arquivo de layout de chave ou em uma regra de política codificada. Essa distinção impede que pressionamentos de tecla e toques despertem o smartphone quando ele está no bolso. Normalmente, há apenas algumas chaves de ativação definidas.

Por outro lado, os dispositivos de entrada externos geralmente ativam o dispositivo de forma mais agressiva, porque eles são considerados desligados ou não conectados durante o transporte. Por exemplo, pressionar qualquer tecla em um teclado externo é um bom indicador de que o usuário quer que o dispositivo seja ativado e responda.

É importante garantir que o valor da propriedade device.internal seja definido corretamente para todos os dispositivos de entrada internos.

Validação

Valide os arquivos de configuração do dispositivo de entrada usando a ferramenta Validar keymaps.