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

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值