在android中,上层可使用的键值默认情况下是92个,从0-91;一般情况下,这些 键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个 新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处 理呢? 这里以imx515平台为例来说明 key 59 ? ?OFFHOOK 转载:http://blog.csdn.net/longfeey/archive/2010/11/04/5987137.aspx
?对keypad来说,涉及到的文件有以下几个:
1. ? ?vendor/fsl/imx51_BBG/mxckpd.kl
? 首先在此文件中,添加新的键值信息:
Example:
key 60 ? ?ONHOOK
key 61 ? ?HANDFREE
key 62 ? ?PSTNCALLIN
注意:新加的键值不要与已有的重复。
2. ? ?kernel_imx/drivers/input/keyboard/imx51-key.c
在键盘驱动中定义相应的键盘扫描码
static unsigned short imx51_keypad_keycode[IMX51_KEY_NUM] =
{
? ?/*F1*/ ? 1, /*PSTN*/ ? ? 43, /*转移*/ ? ?8, /*1*/ ?9, /*6 */ 50, /***/ ? ? 14, /*音量》*/ 56,
? ?/*F2*/ ? 2, /*留言模式*/ 44, /*画中画*/ 45, /*2*/ 10, /*7 */ 51, /*# */ ? ?16, /*方向上*/ 17,
? ?/*F3*/ ? 3, /*画面切换*/ ?5, /*隐私*/ ? 46, /*3*/ 11, /*8 */ 52, /* 重播*/ ?53, /*方向下*/ 18,
? ?/*F4*/ ? 4, /*注销*/ ? ? ?6, /*静音*/ ? 47, /*4*/ 12, /*9 */ 13, /* 免提*/ ?54, /*方向左*/ 19,
? ?/*F5*/ ?41, /*保持*/ ? ? ?7, /*闪断*/ ? 48, /*5*/ 49, /*0 */ 15, /* 音量《*/55, /*方向右*/ 20,
? ?/*取消*/57, /*菜单*/ ? ? 58,
? ?/* offhook */ ?59, ?/* onhook */ 60, ?/* ?免提 */61, ?/* 来电 */62
};
3. ? ? 在frameworks/base/include/ui/KeycodeLabels.h
1)在数组keycodes 中添加 新定义的信息,
要在{NULL, 0}之前添加
static const KeycodeLabel KEYCODES[] = {
...
...
? ?{ "OFFHOOK", 92 },
? ?{ "ONHOOK", 93 },
? ?{ "HANDFREE", 94 },
? ?{ "PSTNCALLIN",95 },
? ?// NOTE: If you add a new keycode here you must also add it to:
? ?// ? (enum KeyCode, in this file)
? ?// ? frameworks/base/core/java/android/view/KeyEvent.java
? ?// ? tools/puppet_master/PuppetMaster.nav_keys.py
? ?// ? frameworks/base/core/res/res/values/attrs.xml
? ?{ NULL, 0 }
}
2)枚举类型 KeyCode 中添加
typedef enum KeyCode {
...
...
? ?kKeyCodeOFFHOOK = 92,
? ?kKeyCodeONHOOK = 93,
? ?kKeyCodeHANDFREE = 94,
? ?kKeyCodePstnCallIn = 95
}KeyCode;
4. ? ?frameworks/base/core/res/res/values/attrs.xml
添加如下
<enum name="KEYCODE_OFFHOOK" value="92" />
<enum name="KEYCODE_ONHOOK" value="93" />
<enum name="KEYCODE_HANDFREE" value="94" />
<enum name="KEYCODE_PSTNCALLIN" value="95" />
5. ?frameworks/base/core/java/android/view/KeyEvent.java
? ?public static final int KEYCODE_OFFHOOK ? ? ? ? = 92;
? ?public static final int KEYCODE_ONHOOK ? ? ? ? ?= 93;
? ?public static final int KEYCODE_HANDFREE ? ? ? ?= 94;
? ?public static final int KEYCODE_PSTNCALLIN ? ? ?= 95;
?注意: ? ? ? private static final int LAST_KEYCODE ? ?= KEYCODE_MUTE;
? ? ? ? ? ? ?应改为: ? ?private static final int LAST_KEYCODE ? ? ? ? ? = KEYCODE_PSTNCALLIN;
在函数 public final boolean isSystem() 中,同样需要添加:
? ? ? ?case KEYCODE_OFFHOOK:
? ? ? ?case KEYCODE_ONHOOK:
? ? ? ?case KEYCODE_HANDFREE:
? ? ? ?case KEYCODE_PSTNCALLIN:
?通过以上的更改,新的键值就添加上去了,由于更改了 KeyEvent,影响到了API,
? ? ? ? ? ? 所以需要make update-api
? ? ? ? ? ?如果对新键值进行处理,可以通过获取相应的keycode,对它进行处理;
? ? ? ? ? ?对于按键事件的处理一般如下文件中
6. ? frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java
? ? ? ? ?综上可知,我们可以根据需求定义自己的键值,并对键值所对应的事 件信息进行合理化处理。
注:
vendor/fsl/imx51_BBG/mxckpd.kl 是专门给imx515输入设备使用的keylayout文 件,所以修改mxckpd.kl 文件只是给键盘输入增加键值。如果是其他设备的输入, 如x_input,而且当没有x_iput.kl存在的时候,那么默认的kl文件就是 qwerty.kl(android-root/development/emulator/keymaps/qwerty.kl)
这个很重要。也就是说需要实现明白添加的键值是否是mxckpd.kl的input event
详细解决方案
android 中怎么添加新的键值(转载)
热度:92 发布时间:2016-05-01 16:49:19.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- RIM 替 Android 开发者提供免费的 PlayBook!2月13日前
- android 动态设立控件高度
- Android test project 编译方法
- android -相机使用教程(1)解决方法