android 添加新的键值,自定义按键【转】
本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871
在Android中,上层可使用的键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处理呢?
对keypad来说,涉及到的文件有以下几个:
1,/vendor/qcom/7k_ffa_keypad.kl
首先在此文件中,添加新的键值信息:Example: key 123 WLS flag
注意:新加的键值不要与已有的重复。
2. kernel/arch/arm/mach-msm/keypad_surf_ffa.c
在keypad对应的键位添加自定义的键码 如 :123
3. frameworks/base/include/ui/keycodeLabels.h
在数组keycodes 中添加 新定义的信息
{ "MUTE", 91 }, { "WLS" , 92 }
枚举类型 KeyCode 中添加
kKeyCodeMute = 91
kKeyCodeWLS = 92
4. frameworks/base/core/res/res/values/attrs.xml
<enum name="KEYCODE_MUTE" value="91"/>
<enum name="KEYCODE_WLS" value="92" />
5. frameworks/base/core/Java/android/view/KeyEvent.java
public static final int KEYCODE_MUTE = 91;
public static final int KEYCODE_WLS = 92;
注意: private static final int LAST_KEYCODE = KEYCODE_MUTE;
应改为: private static final int LAST_KEYCODE = KEYCODE_WLS;
在函数 public final boolean isSystem() 中,同样需要添加:
case KEYCODE_SEARCH:
case KEYCODE_WLS:
//注意:现在(Android 2.3)这个函数调用的是frameworks\base\libs\ui\Input.cpp中的bool KeyEvent::isSystemKey(int32_t keyCode)
//这里使用的按键定义在./development/ndk/platforms/android-9/include/android/keycodes.h
通过以上的更改,新的键值就添加上去了,由于更改了 KeyEvent,影响到了API,
所以需要make update-api
如果对新键值进行处理,可以通过获取相应的keycode,对它进行处理;
对于按键事件的处理一般如下文件中
6. frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java
综上可知,我们可以根据需求定义自己的键值,并对键值所对应的事件信息进行合理化处理。
注:
7k_ffa_keypad.kl是专门给7k_ffa_keypad输入设备使用的keylayout文件,所以修改7k_ffa_keypad.kl 文件只是给键盘输入增加键值。如果是其他设备的输入,如x_input,而且当没有x_iput.kl存在的时候,那么默认的kl文件就是 qwerty.kl(android-root/development/emulator/keymaps/qwerty.kl)
这个很重要。也就是说需要实现明白添加的键值是否是7k_ffa_keypad的input event
我的理解:看了一下key character map的处理,是通过读取kcm文件然后使用驱动程序提供的ioctl函数去修改来自输入设备的扫描码和系统预定义的keycode的映射关系。 kl文件应该也可以这么理解。这样的话,对于硬件扫描码,只需要修改这个kl文件。上层得到的都是系统预定义的keycode。
重要补充:
映射关系:ir硬件扫描码在驱动里面被 映射为 kernel/include/Linux/input.h里面定义的某个键值。但是这个键值只在linux系统中使用。
Android通过源码目录下的device/xxx/xxx.kl( keylayout )文件完成linux键值到Android系统要使用的键值的映射
android 添加新的键值,自定义按键【转】的更多相关文章
- android 添加新的键值,自定义按键-2【转】
本文转载自:http://blog.csdn.net/mr_raptor/article/details/8053871 在Android中,上层可使用的键值默认情况下是92个,从0-91:一般情况下 ...
- Android下添加新的自定义键值和按键处理流程
Android下添加新的自定义键值和按键处理流程 说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...
- Android下添加新的自定义键值和按键处理流程【转】
本文转载自: Android下添加新的自定义键值和按键处理流程 说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...
- Android无线测试之—KEYCODE键值对应大全
KEYCODE列表电话键键名 描述 键值 KEYCODE_CALL 拨号键5 KEYCODE_ENDCALL 挂机键6 KEYCODE_HOME 按键Home3 KEYCODE_ME ...
- Android添加新按键
1.前言 在Android开发中可能会遇到添加新的按键的需求,本文将简单介绍如何在Android系统中完成一个新的按键的添加. 当系统有新的按键需要添加时,Linux内核下的键码到Android系统中 ...
- android sp文件一个键值保存多条信息
之前碰到过这样的问题,sp文件只能够append,或者清空.其实一个键值,通过,分割,或者替代可以实现多条信息的存储.下面是一个举例: package com.ctbri.weather.utils; ...
- GeneratedKeyHolder的作用:获得新建主键值
Spring利用GeneratedKeyHolder,提供了一个可以返回新增记录对应主键值的方法: int update(PreparedStatementCreator psc, KeyHolder ...
- cocos2d-x android 添加新场景报错: undefined reference to `vtable for XXX'
转载自 居家懒人 http://www.cnblogs.com/JD85/archive/2012/09/17/2688128.html 加入写了新场景SecondScene,结果在cpp文件里类名地 ...
- Android 添加新的Activity
1.右键, New一个Class ,文件名如:ParaSetActivity.java 注: Superclass要选择android.app.Activity ,没有直接写入android.app. ...
随机推荐
- dotnet core 发布配置(测试数据库和正式数据库自动切换)
一.起源 在进行项目开发时,常常要求开发环境,测试环境及正式环境的分离,并且不同环境运行的参数都是不一样的,比如监听地址,数据库连接信息等.当然我们把配置信息保存到一个文件中,每次发布的时候,可以先修 ...
- 初学Hibernate杂乱总结
1.如果在"one"方中(如部门)写有Set属性,但是没有在映射文件中配置,那么,在获取指定部门下的所有员工时,不会报错,但是,Set内的元素个数为0.输出为"[]&qu ...
- 运用<body>属性,渲染页面效果
新建一个HTML5文件,为<body>标签添加样式,代码如下: 01 <!doctype html> 02 <html> 03 <head> 04 &l ...
- avaScript中变量的声明和赋值
变量是指程序中一个已经命名的存储单元,它的主要作用就是为数据操作提供存放信息的容器.变量是相对常量而言的.常量是一个不会改变的固定值,而变量的值可能会随着程序的执行而改变.变量有两个基本特征,即变量名 ...
- 努比亚 Z17(Nubia NX563J) 解锁BootLoader 并刷入recovery
工具下载链接:https://pan.baidu.com/s/1mjEzcyG 备用下载链接:https://pan.baidu.com/s/1eTdx6Zg 密码:1d3r 本篇教程教你如何傻瓜式解 ...
- 图像局部显著性—点特征(Fast)
fast作为几乎最快的角点检测算法,一般说明不附带描述子.参考综述:图像的显著性检测--点特征 详细内容,请拜访原=文章:Fast特征点检测算法 在局部特征点检测快速发展的时候,人们对于特征的认识也越 ...
- 三维重建:SLAM的尺度和方法论问题
百度百科的定义.此文引用了其他博客的一些图像,如有侵权,邮件联系删除. 作为算法的SLAM,被称为同步相机位姿确定和地图构建.作为一个工程的SLAM,有众多的算法. 在计算机视觉中, 三维重建是指根据 ...
- Dispatch Queues and Thread Safety
Dispatch Queues and Thread Safety It might seem odd to talk about thread safety in the context of di ...
- Java基础学习笔记三 正则表达式和校验、Date、DateFormat、Calendar
正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex).正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串.在 ...
- Android LinearLayout整个布局设置不可点击
1,activity的xml布局(布局中有个Button按钮,点击按钮弹出一个popupwindow ) <?xml version="1.0" encoding=" ...