Файлы конфигурации устройства ввода (файлы .idc
) содержат специфические для устройства свойства конфигурации, влияющие на поведение устройств ввода.
Файлы конфигурации устройства ввода обычно не нужны для стандартных периферийных устройств, таких как HID-клавиатуры и мыши, поскольку поведение системы по умолчанию обычно гарантирует, что они будут работать сразу после установки. С другой стороны, встроенные встроенные устройства, особенно сенсорные экраны, почти всегда требуют файлов конфигурации устройства ввода для определения их поведения.
Обоснование
Android автоматически обнаруживает и настраивает большинство возможностей устройства ввода на основе типов и свойств событий, о которых сообщает соответствующий драйвер устройства ввода ядра Linux.
Например, если устройство ввода поддерживает тип события EV_REL
и коды REL_X
и REL_Y
, а также тип события EV_KEY
и BTN_MOUSE
, то Android классифицирует устройство ввода как мышь. По умолчанию мышь представляет собой курсор на экране, который отслеживает движения мыши и имитирует прикосновения при щелчке мыши. Хотя мышь можно настроить по-разному, для стандартных периферийных устройств мыши обычно достаточно поведения по умолчанию.
Определенные классы устройств ввода более неоднозначны. Например, мультисенсорные экраны и сенсорные панели поддерживают как минимум тип события EV_ABS
и коды ABS_MT_POSITION_X
и ABS_MT_POSITION_Y
. Однако предполагаемое использование этих устройств весьма различно и не всегда может быть определено автоматически. Кроме того, требуется дополнительная информация, чтобы понять информацию о давлении и размере, сообщаемую сенсорными устройствами. Следовательно, сенсорным устройствам, особенно встроенным сенсорным экранам, обычно требуются файлы IDC.
Расположение
Файлы конфигурации устройства ввода располагаются по производителю USB, идентификатору продукта (и, возможно, версии) или по имени устройства ввода.
Следующие пути рассматриваются по порядку.
-
/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
При построении пути к файлу, который содержит имя устройства, все символы в имени устройства, кроме «0»-«9», «a»-«z», «A»-«Z», «-» или «_», заменены на «_».
Синтаксис
Файл конфигурации устройства ввода представляет собой обычный текстовый файл, состоящий из назначений свойств и комментариев.
Характеристики
Каждое назначение свойств состоит из имени свойства, =
, значения свойства и новой строки. Как это:
property = value
Имена свойств — это непустые буквенные текстовые идентификаторы. Они не должны содержать пробелов. Каждый компонент системы ввода определяет набор свойств, которые используются для настройки его функции.
Значения свойств представляют собой непустые строковые литералы, целые числа или числа с плавающей запятой. Они не должны содержать пробелов или зарезервированных символов \
или "
.
Имена и значения свойств чувствительны к регистру.
Комментарии
Строки комментариев начинаются с «#» и продолжаются до конца строки. Как это:
# A comment!
Пустые строки игнорируются.
Пример
# 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...
Общие свойства
Следующее свойство является общим для всех классов устройств ввода.
Обратитесь к документации каждого класса устройств ввода для получения информации о специальных свойствах, используемых каждым классом.
device.internal
Определение: device.internal
= 0
| 1
Указывает, является ли устройство ввода внутренним встроенным компонентом, а не внешним (скорее всего, съемным) периферийным устройством.
Если значение равно
0
, устройство является внешним.Если значение равно
1
, устройство является внутренним.Если значение не указано, значение по умолчанию равно
0
для всех устройств на шине USB (BUS_USB) или Bluetooth (BUS_BLUETOOTH), в противном случае —1
.
Это свойство определяет решения политики по умолчанию в отношении событий пробуждения.
Внутренние устройства ввода обычно не выводят дисплей из спящего режима, если это явно не настроено в файле раскладки клавиш или в жестко заданном правиле политики. Это различие предотвращает ложное пробуждение телефона при нажатии клавиш и прикосновениях, когда он находится в вашем кармане. Обычно определено лишь небольшое количество ключей пробуждения.
И наоборот, внешние устройства ввода обычно более агрессивно пробуждают устройство, поскольку предполагается, что они выключены или не подключены к сети во время транспортировки. Например, нажатие любой клавиши на внешней клавиатуре — хороший показатель того, что пользователь хочет, чтобы устройство проснулось и ответило.
Важно убедиться, что значение свойства device.internal
установлено правильно для всех внутренних устройств ввода.
Проверка
Обязательно проверьте файлы конфигурации вашего устройства ввода с помощью инструмента Validate Keymaps .