设为首页 加入收藏

TOP

按键从Linux到Android
2014-11-24 02:33:47 来源: 作者: 【 】 浏览:0
Tags:按键 Linux Android

按键从Linux到Android
  
Android 与 Linux分隔线
  Android也定义了一套码,叫作键盘码,通过一个/system/usr/keylayout/来将两套码对应起来。目前调试的是全志的A10的BSP包。这里用的是sun4i-keyboard.kl。(如果没有其它*.kl,则是默认的qwerty.kl)
  
  Linux上传的Code是0x00d9对应10进制217,打开sun4i-keyboard.kl后可以看到映射关系:


按键从Linux到Android
  
  可以看出对应的是BRIGHTNESS_DOWN,Android中只认BRIGHTNESS_DOWN(这里成为字串),Linux中的Code至此为止。 (在Android源码中也能找到这个映射文件可以依名字搜索找到其位置)
  
Android源码中添加该按键
  如果Android中frameworks/base/core/java/android/view/KeyEvent.java有要添加的功能,比如HOME,则只修改*.kl映射按键即可修改或者添加映射。
  
  如果KeyEvent.java中本没有要添加按键的功能,就可以在KeyEvent.java的KeyEvent类最后依葫芦画瓢添加:
  
  如不知道功能的键盘码是多少可以到这里找到。
  
  然后根据KeyEvent类最后的添加键提示,每个文件都添加上:
// NOTE: If you add a new keycode here you must also add it to:
// isSystem()
// frameworks/base/native/include/android/keycodes.h
// frameworks/base/include/ui/KeycodeLabels.h
// external/webkit/Source/WebKit/android/plugins/ANPKeyCodes.h
// frameworks/base/core/res/res/values/attrs.xml
// emulator
// LAST_KEYCODE
// KEYCODE_SYMBOLIC_NAMES
//
// Also Android currently does not reserve code ranges for vendor-
// specific key codes. If you have new key codes to have, you
// MUST contribute a patch to the open source project to define
// those new codes. This is intended to maintain a consistent
  // set of key code definitions across all Android devices.
  添加后,Android应用程序就可以通过onKeyDown检测到了检测到这个按键了。至于这个按键具体功能的实现比如这里的BRIGHTNESS_DOWN(亮度减)功能,要修改frameworks/base/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java。根据具体需求实现。
  
关于重启(Reset)键


这个“按键”一般是通过直接连接CPU芯片上的复位实现重启功能的。这个直接操作的是CPU,Android(或者Linux)是无法去检测和控制这个“按键”的。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于S3C2440的Linux-3.6.6移植 下一篇Android之Handler消息机制

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: