입력 기기 구성 파일

입력 장치 구성 파일(.idc 파일)에는 입력 장치 동작에 영향을 미치는 기기별 구성 속성이 포함됩니다.

HID 키보드 및 마우스와 같은 일반적인 주변기기에는 입력 장치 구성 파일이 필요 없는 경우가 일반적이며, 이는 기본 시스템 동작으로도 주변기기가 즉시 작동하기 때문입니다. 반면에 내장형 기기, 특히 대부분의 터치 스크린에는 동작 지정을 위한 입력 장치 구성 파일이 필요합니다.

이유

Android는 연결된 Linux 커널 입력 장치 드라이버에 의해 보고된 이벤트 유형 및 속성에 따라 대부분의 입력 장치 기능을 자동으로 감지하고 구성합니다.

예를 들어 입력 장치가 EV_REL 이벤트 유형과 코드 REL_XREL_Y는 물론 이벤트 유형 EV_KEYBTN_MOUSE까지 지원하는 경우, Android는 입력 장치를 마우스로 분류합니다. 마우스의 기본 동작은 마우스의 움직임을 추적하고 마우스 클릭 시의 터치를 시뮬레이션하는 온스크린 커서를 표현하기 위함입니다. 마우스는 다른 방식으로 구성할 수 있지만 일반적인 마우스 주변기기에는 기본 동작만으로도 충분합니다.

입력 장치의 특정 클래스는 좀 더 모호합니다. 예를 들어 멀티터치 터치 스크린과 터치 패드는 둘 다 적어도 EV_ABS 이벤트 유형과 코드 ABS_MT_POSITION_XABS_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이면 내부 기기입니다.

  • 값이 지정되지 않은 경우 기본값은 USB(BUS_USB) 또는 블루투스(BUS_BLUETOOTH) 버스의 모든 기기에 0이며, 나머지 경우에는 1입니다.

이 속성은 절전 모드 해제 이벤트에 관한 기본 정책을 결정합니다.

일반적으로 내부 입력 장치는 키 레이아웃 파일 또는 하드코딩된 정책 규칙에서 명시적으로 구성되지 않은 이상 기기의 절전 모드를 해제하지 않습니다. 이러한 차이는 주머니에 있는 휴대전화의 절전 모드가 키 누름 및 터치에 의해 해제되지 않도록 합니다. 보통은 소수의 절전 모드 해제 키만 정의됩니다.

반대로 외부 입력 장치는 기기의 절전 모드를 좀 더 적극적으로 해제하는 경우가 일반적입니다. 이는 기기가 이동 도중 꺼져 있거나 연결되지 않았다고 가정되기 때문입니다. 예를 들어 외부 키보드의 키를 누르는 행동은 기기가 절전 모드에서 해제되어 응답하는 것을 사용자가 원한다는 의미입니다.

모든 내부 입력 장치에 device.internal 속성의 값이 올바르게 설정되었는지 확인하는 것이 중요합니다.

유효성 검사

키맵 유효성 검사 도구를 사용하여 입력 장치 구성 파일의 유효성을 검사하세요.