在做比如遥控器按键开发时,或者想自己改改按键映射到不同的key上,需要如何进行查看和配置?步骤如下:

通过 getevent -l 找到对应的设备,之后利用 getevent -i 找到 vendorproduct ID,之后利用这些信息去找到对应的 kl 文件,然后按自己的想法去改这个文件就行了,那我们一步一步来。

getevent -l

利用 getevent 命令行工具获取当前输入设备有哪些

getevent -l

再试着按下遥控器按键就能知道对应是哪个设备了

getevent_l

如图所示,我们知道了这款设置是 /dev/input/event8,接着我们来获取更详细的信息

getevent -i

利用这个命令获取 vendorproduct ID

getevent -i /dev/input/event8

vendor

如图我们就知道了设备对应的 vendorproduct ID 了,接着我们按如下的顺序进行查找

  • /odm/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
  • /vendor/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
  • /system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
  • /data/system/devices/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
  • /odm/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
  • /vendor/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
  • /system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
  • /data/system/devices/keylayout/Vendor_XXXX_Product_XXXX.kl
  • /odm/usr/keylayout/DEVICE_NAME.kl
  • /vendor/usr/keylayout/DEVICE_NAME.kl
  • /system/usr/keylayout/DEVICE_NAME.kl
  • /data/system/devices/keylayout/DEVICE_NAME.kl
  • /odm/usr/keylayout/Generic.kl
  • /vendor/usr/keylayout/Generic.kl
  • /system/usr/keylayout/Generic.kl
  • /data/system/devices/keylayout/Generic.kl

当构建包含设备名称的文件路径时,设备名称中除“0-9”、“a-z”、“A-Z”、“-”或“_”之外的所有字符将替换为“_”。

系统提供了一个特殊的内置常规按键布局文件,名为 Generic.kl。此按键布局旨在支持各种标准外部键盘和操纵杆。请勿修改常规按键布局!

打开 kl 文件就能看到映射的 keycode 是哪个了,如下所示:

keymap

如果你的设备支持 root 的话,可以执行 adb rootadb remount 将这个 kl 文件映射修改然后试试吧。

参考链接

https://source.android.com/devices/input/key-layout-files