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