IR scancode到keyevent流程分析

参考转载:https://blog.csdn.net/jiuxiaoyunwu/article/details/51861233https://www.2cto.com/kf/201405/298944.html

https://www.cnblogs.com/dyufei/p/6612790.html

红外遥控按下时的IR key变化流程:

 

1. IR红外遥控按下时,安卓板子上接收器接收信号,*.dtsi文件(定义客户码,支持的IR厂商等) input.h文件(定义IR的scancode对应值);android会据此解析IR的scancode

位置:kernel/arch/arm64/boot/dts/realtek(我的是裁剪过得最小系统,位置不确定,但都在kernel下);
/android/frameworks/native/include/android/input.h

2.scancode经过*.kl(android/device/realtek/kylin)文件解析,会得到KeyCodeLable;

路径:android/device/realtek/kylin

    查看.kl文件名称方法:串口工具中输入命令getevent -i,如下图会得到name;kl文件和name同名;kl文件也就是键盘布局文件。

root@kylin32:/ # getevent -i
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 1: /dev/input/event0
  bus:      0000
  vendor    0000
  product   0000
  version   0000
  name:     "venus_IR_input"
  location: "venus/input0"
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): 0066  0067  0069  006a  006c  0071  0072  0073
                0074  0080  009a  009e  00a8  00cf  00d0  00e8
                0110  0160  0161  0165  0166  0174  0179  0197
                019c  0213  0214
    REL (0002): 0000  0001

3.keycodelable依靠InputEventLabels.h文件解析出keycode

android/frameworks/native/include/input

4.keycode经过KeycodeLabels.h文件中解析,执行keyevent动作。(如图所示)

路径
android/frameworks/native/include/input

tips:

如果不知道事件值,可以串口输入getevent,然后按下按键,如图

130|root@kylin32:/ # getevent
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 1: /dev/input/event0
  name:     "venus_IR_input"
could not get driver version for /dev/input/mice, Not a typewriter
/dev/input/event0: 0001 0067 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0067 00000000
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 006a 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 006a 00000000
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0074 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0074 00000000
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0160 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 0160 00000000
/dev/input/event0: 0000 0000 00000000
enter rtk_standby_main, watchdog sec 0  

得到一个67,6a,74,这是三个keyevent的16进制,转化为10进制分别为103,106,116

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值