1、首先先在对应的kl文件中添加新按键的键值以及它对应的Keycode

android/frameworks/base/core/res/res/values/Vendor_0f30_Product_0008.kl

注意:0f30是该Input设备的VID,0008是设备的PID

key 88    BUTTON_Akey 87    MENU              WAKE_DROPPEDkey 68   SEARCHkey 67    EXPLORER# EHK help keykey 66   DATASHEET# EHK abc keykey 65   DICTIONARY

我们添加了两个按键key 65 和key 66,66和65这两个值是通过getevent命令打印转成十进制后的值

DATASHEET和DICTIONARY是我们自己定义的androidKeycode


2、在android Keycodes数组中加入我们新增加的keycode

a. android/frameworks/native/include/android/keycodes.h

    AKEYCODE_MEDIA_AUDIO_TRACK = 222,AKEYCODE_CAPTURE = 223,    AKEYCODE_DATASHEET = 224,// EHK HELP KEY    AKEYCODE_DICTIONARY = 225,

b.android/frameworks/native/include/input/KeycodeLabels.h

{ "CAPTURE", 222 },    { "DATASHEET", 224 },// EHK HELP KEY    { "DICTIONARY", 225 },

c. android/frameworks/base/core/java/android/view/KeyEvent.java

        names.append(KEYCODE_CAPTURE, "KEYCODE_CAPTURE");        names.append(KEYCODE_DATASHEET, "KEYCODE_DATASHEET");// EHK help key        names.append(KEYCODE_DICTIONARY, "KEYCODE_DICTIONARY");

d. android/frameworks/base/core/res/res/values/attrs.xml

                

3、android/frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java

      这里添加按键响应的具体动作:

 public int dispatchInputEvent(InputEvent event, Object token,            FinishedInputEventCallback callback, Handler handler) {        synchronized (mH) {            if (mCurMethod != null) {                if (event instanceof KeyEvent) {                    KeyEvent keyEvent = (KeyEvent)event;                    if (keyEvent.getAction() == KeyEvent.ACTION_DOWN                            && keyEvent.getKeyCode() == KeyEvent.KEYCODE_SYM                            && keyEvent.getRepeatCount() == 0) {                        //showInputMethodPickerLocked();                        return DISPATCH_HANDLED;                 } else if (keyEvent.getAction() == KeyEvent.ACTION_DOWN                            && keyEvent.getKeyCode() == KeyEvent.KEYCODE_DATASHEET                            && keyEvent.getRepeatCount() == 0) {                                 Log.d(TAG,"zhanbing kbd button pressed");                                 toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);                        return DISPATCH_HANDLED;                        }                }                if (DEBUG) Log.v(TAG, "DISPATCH INPUT EVENT: " + mCurMethod);                PendingEvent p = obtainPendingEventLocked(                        event, token, mCurId, callback, handler);                if (mMainLooper.isCurrentThread()) {                    // Already running on the IMM thread so we can send the event immediately.                    return sendInputEventOnMainLooperLocked(p);                }                // Post the event to the IMM thread.                Message msg = mH.obtainMessage(MSG_SEND_INPUT_EVENT, p);                msg.setAsynchronous(true);                mH.sendMessage(msg);                return DISPATCH_IN_PROGRESS;            }else{                                Log.d(TAG, "inputMethod be killed???  mCurId=" + mCurId+ "mWaitForBinding= " + mWaitForBinding);                                Log.d(TAG, "mCurMethod= " +mCurMethod);                                if((event instanceof KeyEvent) &&mWaitForBinding && mCurId!=null){                                        return DISPATCH_FORWARD;                                }else if((mBindSequence==-1)&&(event instanceof KeyEvent) &&mCurId==null){                                        //connection cleared                                        return DISPATCH_FORWARD;                                }                }        }






更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. 如何在后台运行Linux命令?
  3. No.11 使用firewall配置的防火墙策略的生效模式
  4. Android(安卓)的一些命令(补充中..)
  5. 扫描已匹配的蓝牙设备
  6. Android(安卓)logcat命令使用
  7. sqlite3 常用命令 for android
  8. ubuntu14.04 安装HAXM(KVM)提升android虚拟机Android(安卓)x8运
  9. [Android]关于Android(安卓)唯一设备号(ro.serialno)

随机推荐

  1. Android画图最基本的三个对象(Color,Paint,C
  2. 【android】巧用android:divider属性设置
  3. Android注入框架你应该知道的一切------
  4. Android中如何以编程方式(programmatical
  5. Android 接口回调机制详解
  6. android应用Theme(一)
  7. [置顶] Handler有何作用?如何使用?
  8. 中介者模式下的Android底部导航栏
  9. Android 的快速增长让一些开发人员担忧
  10. [置顶] Android(安卓)进程常驻(5)----开机