Android4.0添加按键以及key映射

1.简述

     对于android系统一般情况都是采用触摸屏,但有时也会在开发中碰到全键盘或Numeric+function键盘的项目。对于这样的项目就要添加新的按键,以及按键重新来映射。这样如何处理呢?个人开发经验来看,先了解本BLOG内转的几篇关于KEVENT流程和framework,这样开发起来就更得心应手了。这里简单介绍input Flow:
 
      用户APP Component
            |
     TextKeyListener/MultiTapListener
             |
        ACTIVITY
             |
       发到VIEW
               |
       Dispatch to IME (先发到输入法)
                |
        ViewRoot
                 |
WindowManagerService(PhoneWindowManager拦截一些KEY)
                 |
Framework input service( inputdispatch/inputRead)
                 |
 Kernel driver[/dev/input(x)]


2.添加按键及映射

      如果系统有新的按键那么就添加并上报到上层去,首先你要确定键盘是通过DEV下哪个inputevent和调用的哪个KL。可以通过
      cat /proc/fcat  /proc/bus/input/devices

      I: Bus=0000 Vendor=0000 Product=0000 Version=0000
      N: Name="ft5x06_ts"
      P: Phys=
      S: Sysfs=/devices/virtual/input/input0
      U: Uniq=
      H: Handlers=kbd event0 cpufreq
      B: PROP=0
      B: EV=b
      B: KEY=400 0 0 0 0 0 40000800 40 0 0 0
      B: ABS=6650000 0
颜色Name就是对应的KL文件名,如果你的系统内没有设置KL,系统会自动找Generic。最好设置自己对应的KL文件映射表。而红色S代表是的键盘会成驱动input0内上报键值。接下来就要添加新的按键。底层上报的是Scancode会通过你的KL文件转换成Android上层使用的虚拟KEYCODE。主要是现在KL文件内添加:

1)KL文件进行映射:
     key 150   MY_NEW_KEY

2)frameworks/base/native/include/android/keycodes.h(添加定义)
 AKEYCODE_MY_NEW_KEY 223

3)如果想让此按键为系统按键
frameworks/base/libs/ui/Input.cpp
KeyEvent::isSystemKey()function 添加

4)frameworks/base/core/java/android/view/KeyEvent.java(添加new keycode)
5)  frameworks/base/include/ui/KeycodeLabels.h添加new keycode)
6)  frameworks/base/core/res/res/values/attrs.xml
7)  external/webkit/Source/WebKit/android/plugins/ANPKeyCodes.h(如果然BROWSE能收到就在这里也定义)

这样修改后已OK,就make update-api 可以测试了。当然numeric+function一些按键要根据自己的功能来修改。要支持输入法,输入法也得修改。
来源: <http://jimmyhavedream.blog.163.com/blog/static/53085833201341595854307/>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值