做android有两年了,所接触的都是系统源码;最近想想,应该记录下所学,所做的些事情。
通常来说,HID在android平台都是可以直接用的,至少80%的按键是OK的,这里所说的“标准按键”意思就是android原生的源码有定义的keycode,这里给出推荐标准HID的步骤。
AKEYCODE_HOME = 3, AKEYCODE_BACK = 4, AKEYCODE_CALL = 5, AKEYCODE_ENDCALL = 6, AKEYCODE_0 = 7, AKEYCODE_1 = 8, AKEYCODE_2 = 9, AKEYCODE_3 = 10, AKEYCODE_4 = 11, AKEYCODE_5 = 12, AKEYCODE_6 = 13, AKEYCODE_7 = 14, AKEYCODE_8 = 15, AKEYCODE_9 = 16,
1 、check HID键盘的按键,看是否有不正确的按键,如有控制台输入cmd:getevent
/dev/input/event0: 0004 0004 00000054
/dev/input/event0: 0001 009e 00000001
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0001 009e 00000000
/dev/input/event0: 0000 0000 00000000
1.1 : “0004”即是改按键的scancode,接下来查看linux\kernel\drivers\hid\hid-input.c,0004对应数组的“30”
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
};
1.2:继续检查Generic.kl/kcm,修改“30”所对应的字符
2、控制台下输入cmd shell@android:/ # cat proc/bus/input/devices
shell@android:/ # cat proc/bus/input/devices
I: Bus=0018 Vendor=3697 Product=0001 Version=0001N: Name="MStar Smart TV IR Receiver"P: Phys=/dev/irS: Sysfs=/devices/virtual/rc/rc0/input0U: Uniq=H: Handlers=kbd event0 B: PROP=0B: EV=13B: KEY=fc0000 0 fc900 143840 0 0 0 6000000 108000 1a8 c0004c01 9e37c0 48007 f8000000 10000ffcB: MSC=10
3、源码android\frameworks\base\data\keyboards目录下,Generic.kcm/Generic.kl各copy一份,更改“Generic”为“Vendor_3697_Product_0001”.kcm/kl;更改Android.mk3
4、重新编译源码,升级固件.... OK!