在http://blog.csdn.net/cuityanxi/article/details/17916165 我有写出怎样添加一个标准的HID,实际应用中经常有些特殊的功能键要处理,譬如“www”(两年前自己有给客户加过),本文就针对“www”如何添加做一个详细的说明吧。
这里我就假设大家已经看过http://blog.csdn.net/cuityanxi/article/details/17916165
1、控制台获取“www”的物理按键值:0x6A
2、查看/kernel/drivers/hid/hid-input.c,6A对于“195”
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,197,184,195,196,187,188,189,190,
3、编辑Generic.kl,增加
key 195 KEY_WWW
4、KeyEvent,java
a、增加:public static final int KEYCODE_KEY_WWW = 211;
b、
names.append(KEYCODE_CALCULATOR, "KEYCODE_CALCULATOR");
names.append(KEYCODE_KEY_WWW, "KEYCODE_KEY_WWW");
c、
public final boolean dispatch(Callback receiver, DispatcherState state,
Object target) {
switch (mAction) {
case ACTION_DOWN: {
...
//yanxi add start forQT163 HID input(www )
boolean res;
if(KEYCODE_KEY_WWW == mKeyCode)
{
if( ((META_SHIFT_RIGHT_ON | META_SHIFT_ON)&this.mMetaState) == (META_SHIFT_RIGHT_ON | META_SHIFT_ON))
{
mScanCode = 195;//.com key value define in generic.kl
//this.mKeyCode = KEYCODE_POUND;//Mark to use generic.kcm define
res = receiver.onKeyDown(mKeyCode, this);
//Log.v("test3","mKeyCode:"+mKeyCode);
}
else
{
this.mKeyCode = KEYCODE_W;
mScanCode = 17;//define in generic.kl
receiver.onKeyDown(mKeyCode, this);
receiver.onKeyDown(mKeyCode, this);
res = receiver.onKeyDown(mKeyCode, this);
}
}//yanxi add end for soniq QT163 HID input(www .com)
else
{
res = receiver.onKeyDown(mKeyCode, this);
}
5、/external/webkit/Source/WebKit/android/plugins/ANPKeyCodes.h
kKEY_WWW_ANPKeyCode = 211,
6、/frameworks/base/core/res/res/values/attrs.xml
<enum name="KEYCODE_KEY_WWW" value="211" />
7、frameworks/base/include/ui/KeycodeLabels.h
{ "KEY_WWW", 211 },
8、frameworks/base/native/include/android/keycodes.h
AKEYCODE_KEY_WWW = 211,
完...