Pliki konfiguracji urządzeń wejściowych (pliki .idc
) zawierają właściwości konfiguracji specyficzne dla urządzenia, które wpływają na jego działanie.
W przypadku standardowych urządzeń peryferyjnych, takich jak klawiatury i myszy HID, pliki konfiguracji urządzeń wejściowych zwykle nie są potrzebne, ponieważ domyślne działanie systemu zapewnia, że będą one działać od razu po podłączeniu. Z drugiej strony wbudowane urządzenia, zwłaszcza ekrany dotykowe, prawie zawsze wymagają plików konfiguracji urządzenia wejściowego, aby określić ich działanie.
Uzasadnienie
Android automatycznie wykrywa i konfiguruje większość funkcji urządzenia wejściowego na podstawie typów zdarzeń i właściwości zgłaszanych przez powiązany sterownik urządzenia wejściowego jądra Linuxa.
Jeśli na przykład urządzenie wejściowe obsługuje typ zdarzenia EV_REL
i kody REL_X
oraz REL_Y
, a także typ zdarzenia EV_KEY
i kod BTN_MOUSE
, Android sklasyfikuje je jako mysz. Domyślne działanie myszy polega na wyświetlaniu kursora na ekranie, który śledzi ruchy myszy i symuluje dotknięcia po kliknięciu myszą. Chociaż mysz można skonfigurować inaczej, w przypadku standardowych urządzeń peryferyjnych z myszą domyślne zachowanie jest zwykle wystarczające.
Niektóre klasy urządzeń wejściowych są bardziej niejednoznaczne. Na przykład ekrany dotykowe i touchpady obsługują co najmniej typ zdarzenia EV_ABS
oraz kody ABS_MT_POSITION_X
i ABS_MT_POSITION_Y
. Jednak przeznaczenie tych urządzeń jest zupełnie inne i nie zawsze można je określić automatycznie. Dodatkowo potrzebne są dodatkowe informacje, aby zinterpretować informacje o ciśnieniu i rozmiarze przekazywane przez urządzenia dotykowe. Dlatego urządzenia dotykowe, zwłaszcza te z wbudowanym ekranem dotykowym, zwykle wymagają plików IDC.
Lokalizacja
Pliki konfiguracji urządzenia wejściowego są zlokalizowane według identyfikatora dostawcy USB, identyfikatora produktu (i opcjonalnie wersji) lub nazwy urządzenia wejściowego.
Poniższe ścieżki są sprawdzane kolejno.
/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
Podczas tworzenia ścieżki pliku zawierającej nazwę urządzenia wszystkie znaki w nazwie urządzenia inne niż „0–9”, „a–z”, „A–Z”, „–” lub „_” są zastępowane znakiem „_”.
Składnia
Plik konfiguracji urządzenia wejściowego to zwykły plik tekstowy zawierający przypisania właściwości i komentarze.
Właściwości
Przypisania właściwości składają się z nazwy właściwości, znaku =
, wartości właściwości i nowego wiersza. Na przykład:
property = value
Nazwy właściwości to niepuste identyfikatory tekstowe. Nie mogą zawierać spacji. Każdy komponent systemu wejściowego definiuje zestaw właściwości, które służą do konfigurowania jego działania.
Wartości właściwości to niepuste ciągi tekstowe, liczby całkowite lub liczby zmiennoprzecinkowe.
Nie mogą zawierać spacji ani znaków \
ani "
.
W nazwach i wartościach właściwości wielkość liter ma znaczenie.
Komentarze
Linie komentarzy zaczynają się od znaku „#” i trwają do końca linii. Na przykład:
# A comment!
Puste wiersze są ignorowane.
Przykład
# 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...
Właściwości wspólne
Właściwość ta jest wspólna dla wszystkich klas urządzeń wejściowych.
Informacje o właściwościach specjalnych używanych przez poszczególne klasy urządzeń wejściowych znajdziesz w dokumentacji dotyczącej każdej klasy.
device.internal
Definicja: device.internal
= 0
| 1
Określa, czy urządzenie wejściowe jest wewnętrznym komponentem wbudowanym, a nie podłączonym zewnętrznie (najprawdopodobniej wymiennym) urządzeniem peryferyjnym.
-
Jeśli wartość to
0
, urządzenie jest zewnętrzne. -
Jeśli wartość to
1
, urządzenie jest wewnętrzne. -
Jeśli wartość nie zostanie podana, domyślnie jest to
0
dla wszystkich urządzeń na magistrali USB (BUS_USB) lub Bluetooth (BUS_BLUETOOTH), a w przeciwnym razie1
.
Ta właściwość określa domyślne decyzje dotyczące zasad dotyczących zdarzeń aktywacji.
Wewnętrzne urządzenia wejściowe zwykle nie wybudzają wyświetlacza z trybu uśpienia, chyba że zostało to wyraźnie skonfigurowane w pliku układu kluczy lub w utwardzonej regułach zasad. To rozróżnianie zapobiega przypadkowemu wybudzaniu telefonu przez naciśnięcia i dotknięcia, gdy jest on w kieszeni. Zwykle zdefiniowanych jest tylko kilka kluczy aktywacji.
Z drugiej strony zewnętrzne urządzenia wejściowe zwykle wybudzają urządzenie bardziej agresywnie, ponieważ zakłada się, że są wyłączone lub nie są podłączone podczas transportu. Na przykład naciśnięcie dowolnego klawisza na zewnętrznej klawiaturze jest dobrym wskaźnikiem tego, że użytkownik chce, aby urządzenie się obudziło i zareagowało.
Ważne jest, aby wartość właściwości device.internal
była prawidłowo ustawiona na wszystkich wewnętrznych urządzeniach wejściowych.
Weryfikacja
Sprawdź poprawność plików konfiguracji urządzenia wejściowego za pomocą narzędzia Sprawdzanie map klawiszy.