How to identify which IDC file used by Input Device in Android ?

Input device configuration files (.idc files) contain device-specific configuration properties that affect the behavior of input devices. IDC files can be used to override the default behavior of input devices as assigned by device drivers.

Normally IDC files is not compulsory to be used by input devices, but if we want to change some default behavior of input device which normally can be changed only by modifying kernel driver or source code, compile and flash the new firmware, then IDC files are of great use. So, IDC files are nothing but some configuration files (as name suggests) which can be used to change device behavior without modifying source code.

To identify which IDC file is assigned with some input device, we can use following steps,

$ adb shell dumpsys input

From the output of this command, look for “Event Hub State:” then “Devices:” and look for your device name string at after device number.. for example: “2 : My Input Device Name”

Now, below “My Input Device Name” we can see different options such as “path” , “location” , “identifier” etc, there look for “ConfigurationFile” option.

If you see “ConfigurationFile” as empty, it means this input device is not using any IDC file. and if you see some string, it shows the path and name of the IDC file which you can then refer to.

You can also use command,

$ adb shell dumpsys input | grep ConfigurationFile

Just to quickly check if any of the device is using IDC file, but this will not give the name of exact device if some IDC file is assigned to, so we need to analyze complete “dumpsys input” results anyways.

As an example, we can see the output as below, ( Start looking for results from top )

$ dumpsys input                                                                                                                                                                              
INPUT MANAGER (dumpsys input)

Input Manager State:
  Interactive: true
  System UI Visibility: 0x8008
  Pointer Speed: 0
  Pointer Gestures Enabled: true
  Show Touches: false
  Pointer Capture Enabled: false

Event Hub State:
  BuiltInKeyboardId: -2
  Devices:

    6: goodix_fp
      Classes: 0x00000001
      Path: /dev/input/event2
      Enabled: true
      Descriptor: b8e81eb0c718c3bacb9a7d5e43de3875d7c3ce9a
      Location: 
      ControllerNumber: 0
      UniqueId: 
      Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
      KeyLayoutFile: /vendor/usr/keylayout/goodix_fp.kl
      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
      ConfigurationFile: /vendor/usr/idc/goodix_fp.idc
      HaveKeyboardLayoutOverlay: false
      VideoDevice: <none>

Reference : https://source.android.com/docs/core/interaction/input/input-device-configuration-files

Leave a Comment