Pliki konfiguracyjne urządzenia wejściowego

Pliki konfiguracji urządzeń wejściowych (pliki .idc ) zawierają właściwości konfiguracyjne specyficzne dla urządzenia, które wpływają na zachowanie urządzeń wejściowych.

Pliki konfiguracyjne urządzeń wejściowych zazwyczaj nie są potrzebne w przypadku standardowych urządzeń peryferyjnych, takich jak klawiatury i myszy HID, ponieważ domyślne zachowanie systemu zwykle zapewnia, że ​​będą działać po wyjęciu z pudełka. Z drugiej strony wbudowane urządzenia wbudowane, zwłaszcza ekrany dotykowe, prawie zawsze wymagają plików konfiguracyjnych urządzenia wejściowego, aby określić ich zachowanie.

Racjonalne uzasadnienie

System Android automatycznie wykrywa i konfiguruje większość możliwości urządzeń wejściowych na podstawie typów zdarzeń i właściwości zgłaszanych przez skojarzony sterownik urządzenia wejściowego jądra systemu Linux.

Na przykład, jeśli urządzenie wejściowe obsługuje typ zdarzenia EV_REL i kody REL_X i REL_Y , a także typ zdarzenia EV_KEY i BTN_MOUSE , system Android zaklasyfikuje urządzenie wejściowe jako mysz. Domyślnym zachowaniem myszy jest wyświetlanie kursora na ekranie, który śledzi ruchy myszy i symuluje dotknięcia po kliknięciu myszą. Chociaż mysz można skonfigurować inaczej, zachowanie domyślne jest zwykle wystarczające dla standardowych urządzeń peryferyjnych myszy.

Niektóre klasy urządzeń wejściowych są bardziej niejednoznaczne. Na przykład ekrany wielodotykowe i panele dotykowe obsługują co najmniej typ zdarzenia EV_ABS i 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. Ponadto wymagane są dodatkowe informacje, aby zrozumieć informacje o ciśnieniu i rozmiarze zgłaszane przez urządzenia dotykowe. Dlatego urządzenia dotykowe, zwłaszcza wbudowane ekrany dotykowe, zwykle potrzebują plików IDC.

Lokalizacja

Pliki konfiguracyjne urządzenia wejściowego są zlokalizowane według dostawcy USB, identyfikatora produktu (i opcjonalnie wersji) lub według nazwy urządzenia wejściowego.

Poniższe ścieżki są konsultowane w kolejności.

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

Podczas konstruowania ścieżki pliku zawierającej nazwę urządzenia wszystkie znaki w nazwie urządzenia inne niż „0”-„9”, „a”-„z”, „A”-„Z”, „-” lub „_” zastępuje się '_'.

Składnia

Plik konfiguracyjny urządzenia wejściowego to zwykły plik tekstowy zawierający przypisania właściwości i komentarze.

Nieruchomości

Każde przypisanie właściwości składa się z nazwy właściwości, znaku = , wartości właściwości i nowego wiersza. Lubię to:

property = value

Nazwy właściwości to niepuste literalne identyfikatory tekstowe. Nie mogą zawierać spacji. Każdy komponent systemu wejściowego definiuje zestaw właściwości, które są używane do konfigurowania jego funkcji.

Wartości właściwości to niepuste literały ciągu, liczby całkowite lub liczby zmiennoprzecinkowe. Nie mogą zawierać spacji ani zastrzeżonych znaków \ ​​lub " .

W nazwach i wartościach właściwości rozróżniana jest wielkość liter.

Uwagi

Wiersze komentarza zaczynają się od „#” i kontynuują do końca wiersza. Lubię to:

# A comment!

Puste linie 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...

Wspólne właściwości

Następująca właściwość jest wspólna dla wszystkich klas urządzeń wejściowych.

Zapoznaj się z dokumentacją każdej klasy urządzenia wejściowego, aby uzyskać informacje o specjalnych właściwościach używanych przez każdą klasę.

device.internal

Definicja: device.internal = 0 | 1

Określa, czy urządzenie wejściowe jest wbudowanym komponentem wewnętrznym, a nie podłączonym zewnętrznie (najprawdopodobniej wymiennym) urządzeniem peryferyjnym.

  • Jeśli wartość wynosi 0 , urządzenie jest zewnętrzne.

  • Jeśli wartość wynosi 1 , urządzenie jest wewnętrzne.

  • Jeśli wartość nie zostanie określona, ​​wartością domyślną jest 0 dla wszystkich urządzeń na magistrali USB (BUS_USB) lub Bluetooth (BUS_BLUETOOTH), w przeciwnym razie 1 .

Ta właściwość określa domyślne decyzje dotyczące zasad dotyczących zdarzeń wybudzania.

Wewnętrzne urządzenia wejściowe zazwyczaj nie wybudzają wyświetlacza z trybu uśpienia, chyba że zostało to wyraźnie skonfigurowane w pliku układu klucza lub w zakodowanej na sztywno regule zasad. To rozróżnienie zapobiega niepożądanemu wybudzaniu telefonu przez naciśnięcie klawiszy i dotknięcie, gdy znajduje się on w kieszeni. Zwykle zdefiniowana jest tylko niewielka liczba kluczy wybudzania.

I odwrotnie, zewnętrzne urządzenia wejściowe zwykle bardziej agresywnie budzą urządzenie, ponieważ zakłada się, że są wyłączone lub nie są podłączone podczas transportu. Na przykład naciśnięcie dowolnego klawisza na klawiaturze zewnętrznej jest dobrym wskaźnikiem, że użytkownik chce, aby urządzenie się obudziło i zareagowało.

Ważne jest, aby upewnić się, że wartość właściwości device.internal jest ustawiona poprawnie dla wszystkich wewnętrznych urządzeń wejściowych.

Walidacja

Sprawdź poprawność plików konfiguracyjnych urządzenia wejściowego za pomocą narzędzia Sprawdź poprawność map klawiszy .