Android新增一個新的按鍵Key
android/frameworks/base/core/res/res/values/Vendor_0f30_Product_0008.kl
注意:0f30是該Input裝置的VID,0008是裝置的PID
key 88 BUTTON_A
key 87 MENU WAKE_DROPPED
key 68 SEARCH
key 67 EXPLORER
# EHK help key
key 66 DATASHEET
# EHK abc key
key 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
<enum name="KEYCODE_CAPTURE" value="223" />
<enum name="KEYCODE_DATASHEET" value="224" />
<enum name="KEYCODE_DICTIONARY" value="225" />
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;
}
}
}
相關推薦
Android新增一個新的按鍵Key
1、首先先在對應的kl檔案中新增新按鍵的鍵值以及它對應的Keycode android/frameworks/base/core/res/res/values/Vendor_0f30_Product_0008.kl 注意:0f30是該Input裝置的VID,0008是裝
Android新增一個新分割槽
mediatek/build/tools/ptgen/MT6582/partition_table_MT6582.xls 在android分割槽前加上一個分割槽config,為從android分區劃分出來的8MB的分割槽,android分割槽要相應減少8MB; 例如:下
AliOS-Things--EMW3060--nano--新增一個新模組
https://github.com/alibaba/AliOS-Things/wiki/Add-a-new-component-example.zh 一、新增一個元件:info_a 架構簡介 |----AliOS-Things |----example
Ardupilot 新增一個新的引數在地面站上顯示(Adding a New Parameter to Copter)
目錄 目錄 摘要 一.ardupilot官網增加一個新的引數 1.官方連結 2.文件翻譯 二.重點函式的理解與分析 摘要 本節主要記錄自己在ardupilot多
使用layui 做後臺管理介面,在Tab中的連結點選後新增一個新TAB的解決方法
給連結或按鈕 新增 onclick="self.parent.addTab('百度','http://www.baidu.com','icon-add')" 如: <a href="javascript:void(0)" title="google" onclick="s
CentOS 7中新增一個新使用者並授權
CentOS 7中新增一個新使用者並授權 [日期:2016-11-26] 來源:Linux社群 作者:woshimrf [字型:大 中 小] 前言 筆記本安裝了一個CentOS,
java 判斷集合是否存在某個元素,如果存在新增一個新元素
public static void main(String[] args){ List list = new ArrayList(); list.add("a"); //Object obj = new String(); list.add("b
給kali的metasploit下新增一個新的exploit
首先在/usr/share/metasploit-framework/modules/exploits/目錄下新建一個自定義資料夾,例如fwdtest 仿造exploits目錄下的其他exp(rb檔案)編寫自己的exp.rb指令碼(這邊用0day安全:軟體漏洞分析技術裡的
往已有陣列新增一個新的鍵值對
$taskList=$this->model->table('task')->where('user_id = '.$this->user_id)->select(); //dump($taskList); $n=0; $ar
筆記三:ASP.NET MVC 新增一個新頁面,執行顯示HTTP 404。您正在查詢的資源(或者它的一個依賴項)可能已被移除,或其名稱已更改,或暫時不可用。請檢查以下 URL 並確保其拼寫正確。
原操作:直接View下對應資料夾中新增頁面,執行時報錯。解決方案:1.刪除之前建立的頁面,然後找到該資料夾對應的控制器Controller。2.新增以下: public ActionResult path_show() { return V
Mysql學習(一)新增一個新的使用者並用golang操作Mysql
Mysql新增一個新的使用者並賦予許可權 新增一個自己的使用者到mysql 首先我們需要先用root使用者登入mysql,但是剛安裝完沒有密碼,我們先跳過密碼 [email protected]:~/Git_Project/Go_Test$ sudo mysqld_
Android新增一個音訊型別及雙音訊輸出的實現
Android新增一個音訊型別及雙音訊輸出的實現 2016年01月18日 18:08:44 這歌聲無聊可是輝煌 閱讀數:7946 android定義了很多種音訊型別,完整定義在native層如下,system\core\include\system\audio.h檔案中:
[RK3399][Android7.1]除錯筆記 --- 新增一個新的Product/Device
Platform: RK3399 OS: Android 7.1 Board: Firefly-RK3399 標準實現是要建立device/<company>/<device
Android 開啟一個新執行緒
package com.example.che; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.widget.Tex
Android新增一個開機完成後執行的指令碼
在調式一個模組驅動的時候載入驅動模組失敗,但是在系統起來後可以手動載入成功,因此想到在android 啟動完成後通過 執行指令碼來載入驅動模組 1.編寫相關的指令碼,比如device/softwinner/common/prebuild/tools 在該目
在MTK6572當中如何增加一個新按鍵,而且此按鍵值在虛擬按鍵當中可以使用
7.修改XML檔案描述符framework/base/core/res/res/values/attr.xml <enum name="KEYCODE_SMS" value="220" /> 8.增加測試驗證log在android framework\base\policy\src\com\a
[Linux學習--使用者管理]centos中新增一個新使用者,並授權
前言 有時候給root使用者不太方便,新建一個用於並賦予許可權這個做法相對好些 建立新使用者 建立一個使用者名稱為:cmj [[email protected] ~]# adduser cmj 為這個使用者初始化密碼,linux會判斷密碼複雜度,不過可以
Android 新增一個搜尋功能
從android3.0以後,使用SearchView元件,可以在app bar新增一個搜尋功能,你可以定義SearchView什麼時候顯示,什麼時候不顯示。 新增SearchView在App Bar上 首先你要新建一個 menu 檔案,(所有要在bar中
Apollo如何新增一個新的CAN裝置
how_to_add_a_new_can_device 在自動機除錯的領域,使用CAN介面的應用非常廣泛,這一塊,在Apollo中也有所體現,今天我們就來結合程式碼分析一下Apollo中的CAN資料互動流程,以及分享如何在Apollo中新增一個新的CAN裝置
在centos7中新增一個新使用者,並授權
前言 筆記本裝了一個centos,想要讓別人也可以登入訪問,用自己的賬號確實不太好,於是準備新建一個使用者給他。 建立新使用者 建立一個使用者名稱為:zhangbiao [[email protected] ~]# adduser zhangbiao