android 键盘 码,Android键盘输出增加按键码
開發過程中免不得需要增加或減少按鍵碼值,在Android2.3系統事件處理部分,主要向上層提供統一的按鍵碼(KeyCode),這個按鍵碼是一個整數,在上層的JAVA程序中主要通過這個值來判斷系統的實現。
關于輸入事件的處理前面已經講過,請參考:http://www.linuxidc.com/Linux/2012-01/50691.htm
這里主要講android事件的處理過程,需要經過兩個轉換步驟:
1、鍵掃描碼ScanCode是由linux的Input驅動框架定義的整數類型,可參考input.h頭文件
在步驟一中將其值轉換成表示按鍵的字符串
鍵盤布局文件(*.kl)將完成第一步的轉換,放在/system/usr/keylayout/下面
舉例如下:
input.h 中字母鍵定義:
#define KEY_Q 16
#define KEY_W 17
#define KEY_E 18
#define KEY_R 19
#define KEY_T 20
#define KEY_Y 21
#define KEY_U 22
#define KEY_I 23
#define KEY_O 24
#define KEY_P 25
而qwert.kl中定義如下:
ScanCode + 字符串值
key 16??? Q
key 17??? W
key 18??? E
key 19??? R
key 20??? T
key 21??? Y
key 22??? U
key 23??? I
key 24??? O
key 25??? P
2、通過查找KEYCODES數組,將literal字符串轉換成value的整型值,即轉換到KeyCode值了
片段如下,右邊的值是android系統中使用的KeyCode值:(文件路徑:frameworks/base/include/ui/KeycodeLabels.h)
static const KeycodeLabel KEYCODES[] = {
...
{ "A", 29 },
{ "B", 30 },
{ "C", 31 },
{ "D", 32 },
{ "E", 33 },
{ "F", 34 },
{ "G", 35 },
{ "H", 36 },
{ "I", 37 },
{ "J", 38 },
{ "K", 39 },
{ "L", 40 },
{ "M", 41 },
{ "N", 42 },
{ "O", 43 },
{ "P", 44 },
{ "Q", 45 },
{ "R", 46 },
{ "S", 47 },
{ "T", 48 },
{ "U", 49 },
{ "V", 50 },
{ "W", 51 },
{ "X", 52 },
{ "Y", 53 },
{ "Z", 54 },
...
};
右邊的值在android中定義如下:(文件路徑:frameworks/base/include/android/keycodes.h)
/*
* Key codes.
*/
enum {
AKEYCODE_A?????????????? = 29,
AKEYCODE_B?????????????? = 30,
AKEYCODE_C?????????????? = 31,
AKEYCODE_D?????????????? = 32,
AKEYCODE_E?????????????? = 33,
AKEYCODE_F?????????????? = 34,
AKEYCODE_G?????????????? = 35,
AKEYCODE_H?????????????? = 36,
AKEYCODE_I?????????????? = 37,
AKEYCODE_J?????????????? = 38,
AKEYCODE_K?????????????? = 39,
AKEYCODE_L?????????????? = 40,
AKEYCODE_M?????????????? = 41,
AKEYCODE_N?????????????? = 42,
AKEYCODE_O?????????????? = 43,
AKEYCODE_P?????????????? = 44,
AKEYCODE_Q?????????????? = 45,
AKEYCODE_R?????????????? = 46,
AKEYCODE_S?????????????? = 47,
AKEYCODE_T?????????????? = 48,
AKEYCODE_U?????????????? = 49,
AKEYCODE_V?????????????? = 50,
AKEYCODE_W?????????????? = 51,
AKEYCODE_X?????????????? = 52,
AKEYCODE_Y?????????????? = 53,
AKEYCODE_Z?????????????? = 54,
總結
以上是生活随笔為你收集整理的android 键盘 码,Android键盘输出增加按键码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是SP?
- 下一篇: 4.29 笔记+day7作业