Android Input kl文件实现键值映射

Android Keyevent定义在KeyEvent.java 截图对应 public static final int KEYCODE_SYSRQ = 120;

adb shell input keyevent SYSRQ

Linux Scancode定义在input-event-codes.h #define KEY_SCALE 120可以看到是不对应的
本来想通过指纹双击实现截图功能,发现上报scancode 120不行,后来才得知Android与Linux的code是有差异的,
最开始想的本办法是同时上报Linux Scancdoe音量下键和电源键 KEY_VOLUMEDOWN + KEY_POWER,后来才得知有键值隐射kl文件

根据以上流程图可以得知fingerprint 是没有vendorid 和prodcutid的,所以直接传的是name: uinput-fpc ,所有对应的文件为uinput-fpc.kl
指纹的HAL 注册input设置的流程如下,后面上报后就通过EventHub.cpp来处理了, 看流程图

(1)open /dev/uinput 
(2)ioctl UI_SET_EVBIT -> set_bit
(2)ioctl UI_SET_KEYBIT -> set_bit
(3)write udev->name(uinput-fpc) ->  uinput_setup_device_legacy 
(4)ioctl UI_DEV_CREATE  -> input_register_device
(5)write ev.type ev.code ev.value -> uinput_inject_event -> input_event

# Double Tap
-key 306   BUTTON_C
+key 306   SYSRQ
adb push uinput-fpc.kl system/usr/keylayout

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40405527/article/details/130329521