安卓 蓝牙遥控器键值配对 kl文件

  • Post author:
  • Post category:其他



场景:厂商送过来的蓝牙遥控器有可能linux上不对应,例如蓝牙的source 被识别为F1键,这时需要重新配置kl


kl知识参考 https://www.jianshu.com/p/1b0ae800b5bf

cat /proc/bus/input/devices

getevent -l

getevent -i

dumpsys input


先说怎么修改

1.蓝牙遥控器连接

2.输入 dumpsys input 可以找到对应的kl文件(kl是标准linux与anroid键值映射文件)

3.输入getevent -l 按下source 可以实时打印键值

如下

//————source

/dev/input/event4: EV_MSC MSC_SCAN 0007003a

/dev/input/event4: EV_KEY


KEY_F1


DOWN

/dev/input/event4: EV_SYN SYN_REPORT 00000000

/dev/input/event4: EV_MSC MSC_SCAN 0007003a

/dev/input/event4: EV_KEY


KEY_F1


UP

/dev/input/event4: EV_SYN SYN_REPORT 00000000

4.打开 对应的kl文件


key 59 F1 ——-发现F1 是59,至于59怎么来的 还要看0007003a


key 60 F2

key 61 F3

key 62 F4

key 63 F5

key 64 F6


4.1修改为key 59 KEY_SOURCE

,就可以适配遥控器。

—————————- 下面是解读 0007003a ———————–

5. 0007003a 首先确认是0007是键盘 类型

./hisilicon/bigfish/sdk/source/kernel/linux-4.9.y/include/linux/hid.h:163:#define HID_UP_CONSUMER 0x000c0000

#define HID_UP_KEYBOARD 0x00070000 键盘


6. 003a 其实就是数组的下标,最终找到的值就是59,和kl文件的值对应(说明kl是标准linux与anroid键值映射文件)要怎么理解:因为linux可以分配很多合法键值,且不仅仅只有安卓系统再用,所以kl其实就是要找到linux合法键值(即59),且分配安卓的key(即F1),59又是怎么来的就是遥控器发送的0x0007003a ,


在hid-input.c中有个函数hidinput_configure_usage,会根据不同的hid执行不同的代码,为0007(HID_UP_KEYBOARD)时会处理

hid_keyboard

[256]的数组,把扫描码转换为10进制后就是该数组的下标,数组下标的数组元素就是linux键值

// 对应的就是3a,什么意思 3代表行(0,1,2,3)a代表列(就是0到10)


挺巧妙的用法,因为linux中数组排序就是一行16个(就是16进制的运用,要是你喜欢10进制也一样效果) 所以3代表第三行 a是第10列可以快速找到要的数值


static const unsigned char hid_keyboard[256] = {


0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38,

50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3,

4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26,

27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64,

65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106,

105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71,

72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190,

191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113,

115,114,unk,unk,unk,121,unk, 89, 93,124, 92, 94, 95,unk,unk,unk,

122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,111,unk,unk,unk,

unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,179,180,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,

unk,unk,unk,unk,unk,unk,unk,unk,111,unk,unk,unk,unk,unk,unk,unk,

29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,

150,158,159,128,136,177,178,176,142,152,173,140,unk,unk,unk,unk

};



版权声明:本文为u013762045原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。