WEB开发网
开发学院手机开发Android 开发 Android事件处理:按键、触摸屏和滚动球的一些实现... 阅读

Android事件处理:按键、触摸屏和滚动球的一些实现细节

 2010-08-22 04:56:00 来源:WEB开发网   
核心提示:*/在内核键盘驱动文件 drivers/input/keyboard/pxa27x_keypad.c 中定义了设备名称:pxa27x-keypadstatic struct platform_driver pxa27x_keypad_driver = {.probe = pxa27x_keypad_probe,.rem
*/

在内核键盘驱动文件 drivers/input/keyboard/pxa27x_keypad.c 中定义了设备名称:pxa27x-keypad

static struct platform_driver pxa27x_keypad_driver = {

.probe = pxa27x_keypad_probe,

.remove = __devexit_p(pxa27x_keypad_remove),

.suspend = pxa27x_keypad_suspend,

.resume = pxa27x_keypad_resume,

.driver = {

.name = "pxa27x-keypad",

.owner = THIS_MODULE,

},

};

ANDROID_ROOT 为环境变量,在android的命令模式下通过 printenv 可以知道它为: system

所以 keylayoutFilename 为:/system/usr/keylayout/pxa27x-keypad.kl

pxa27x-keypad.kl 定义了按键映射,具体内容如下:

----------------------

# NUMERIC KEYS 3x4

key 2 1

key 3 2

key 4 3

key 5 4

key 6 5

key 7 6

key 8 7

key 9 8

key 10 9

key 11 0

key 83 POUND

key 55 STAR

# FUNCTIONAL KEYS

key 231 MENU WAKE_DROPPED

key 192 BACK WAKE_DROPPED

key 193 HOME WAKE

key 107 DEL WAKE

key 102 CALL WAKE_DROPPED

key 158 ENDCALL WAKE_DROPPED

key 28 DPAD_CENTER WAKE

key 115 VOLUME_UP

key 114 VOLUME_DOWN

----------------------

如果没有定义键盘映射文件,那么默认使用系统的 /system/usr/keylayout/qwerty.kl

可以修改 /system/usr/keylayout/qwerty.kl 文件改变Android公司的按键映射。

device->layoutMap->load(keylayoutFilename) 调用的是文件:

KeyLayoutMap.cpp (frameworksaselibsui)中的函数:

status_t KeyLayoutMap::load(const char* filename)通过解析 pxa27x-keypad.kl

把按键的映射关系保存在 :KeyedVector m_keys; 中。

当获得按键事件以后调用:

status_t KeyLayoutMap::map(int32_t scancode, int32_t *keycode, uint32_t *flags)

由映射关系 KeyedVector m_keys 把扫描码转换成andorid上层可以识别的按键。

上一页  4 5 6 7 8 9 

Tags:Android 事件 处理

编辑录入:coldstar [复制链接] [打 印]
赞助商链接