Файлы конфигурации устройств ввода (файлы .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, идентификатору продукта (и, возможно, версии) или по имени устройства ввода.
Следующие пути рассматриваются по порядку.
-
/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
При создании пути к файлу, содержащему имя устройства, все символы в имени устройства, кроме «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
установлено правильно для всех внутренних устройств ввода.
Валидация
Обязательно проверьте файлы конфигурации вашего устройства ввода с помощью инструмента «Проверка раскладки клавиатуры» .