键盘布局映射文件通常放在/system/usr/keylayout下
文件格式:
键映射文件通常以UTF8文本文件格式存储于设备,通常有如下特性:
注释:用#表示,以#开头的内容都将被忽略。
空白:所有的空行被忽略
键定义:键定义遵循如下格式key SCANCODE KEYCODE [FLAGS...],当扫描码是一个数字,键码定义在你描述的布局文件android.keylayout.xxx。

另外可以设置相关的FLAGS:
SHIFT: 当按下,自动加上SHIFT键值
ALT:当按下,自动加上ALT
CAPS:当按下,自动带上CAPS大写
WAKE:当按下,当设备进入睡眠的时候,按下这个键将唤醒,而且发送消息给应用层。
WAKE_DROPPED:当按下,且设备正处于睡眠,设备被唤醒,但是不发送消息给应用层。

下面我们以DHD为例,进行修改。
原键盘布局映射文件spade-keypad-v0.k如下:
key 102   HOME              WAKE_DROPPED
key 139   MENU              WAKE_DROPPED
key 158   BACK              WAKE_DROPPED
key 217   SEARCH            WAKE_DROPPED
key 116   POWER             WAKE_DROPPED
key 114   VOLUME_DOWN       WAKE
key 115   VOLUME_UP         WAKE

现在我们就来修改一下,让音量+键也能像电源键那样唤醒屏幕,修改后的内容如下:
key 102   HOME              WAKE_DROPPED
key 139   MENU              WAKE_DROPPED
key 158   BACK              WAKE_DROPPED
key 217   SEARCH            WAKE_DROPPED
key 116   POWER             WAKE_DROPPED
key 114   VOLUME_DOWN       WAKE
key 115   POWER             WAKE_DROPPED

嗯,这是网上的很流行的做法。下面说说个人实际做法。
首先要从 qwerty.kl 这个文件说起。 .kl就是 keylayout 的缩写,也就是键盘布局文件,而qwerty.kl这个文件是Android系统默认的全键盘布局文件,也就是说,刚开机进入Android系统时,系统默认读取该文件,读取里面的按键映射。【我的索爱X8的qwerty.kl文件内容如下】
# Copyright (c) 2009, Code Aurora Forum.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
key 158   BACK         WAKE_DROPPED
key 139   MENU         WAKE_DROPPED
key 102   HOME         WAKE_DROPPED
key 115   VOLUME_UP    WAKE
key 114   VOLUME_DOWN  WAKE
key 215   FOCUS
key 212   CAMERA
key 107   POWER        WAKE_DROPPED
可以看到,里面对Android手机的按键进行了一对一的功能映射,类似于函数的映射。
而里面我们要关注的内容只有这几个
key 115   VOLUME_UP    WAKE
key 114   VOLUME_DOWN  WAKE
WAKE:当按下,当设备进入睡眠的时候,按下这个键将唤醒,而且发送消息给应用层。
WAKE_DROPPED:当按下,且设备正处于睡眠,设备被唤醒,但是不发送消息给应用层。
但是,前提是手机里面没有用户或者第三方定义的 .kl文件,系统才会默认读取qwerty.kl文件。
例如HTC手机里面的按键映射文件为 spade-keypad-v0.kl,而我的索爱里面有两个= =!分别是:robyn_keypad.kl,  shakira_keypad.kl
【robyn_keypad.kl文件内容】
# Copyright (c) 2009, Code Aurora Forum.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
key 158   BACK         WAKE_DROPPED
key 139   MENU         WAKE_DROPPED
key 102   HOME         WAKE_DROPPED
key 115   VOLUME_UP    WAKE
key 114   VOLUME_DOWN  WAKE
key 215   FOCUS
key 212   CAMERA
key 107   POWER        WAKE_DROPPED
key 217   SEARCH       WAKE_DROPPED
key 116   POWER       WAKE_DROPPED
【shakira_keypad.kl文件内容】
# Copyright (c) 2009, Code Aurora Forum.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
key 158   BACK         WAKE_DROPPED
key 139   MENU         WAKE_DROPPED
key 102   HOME         WAKE_DROPPED
key 115   VOLUME_UP    WAKE
key 114   VOLUME_DOWN  WAKE
key 215   FOCUS
key 212   CAMERA
key 107   POWER        WAKE_DROPPED
key 217   SEARCH       WAKE_DROPPED
key 116   POWER       WAKE_DROPPED
可以看到,这两个文件的内容基本一样,作为主银我也不知道这两个究竟是调用哪一个。所以干脆三个一起修改,三个都将 key 115   VOLUME_UP    WAKE 修改为 key 115   POWER        WAKE_DROPPED
【强调一下,先将 qwerty.kl 或第三方的 .kl文件备份出来,在电脑端修改,然后再用RE管理器复制到/system/usr/keylayout下,请用EditPlus或者Notepad++这类软件来修改,主页君用的是sublime text2,这是因为这些文件保存格式为UTF-8,手机端修改会引起格式不对】
复制完后,记得修改权限,将这几个文件的权限都修改为: 群组,读写;用户,读写;其他,只读
否则的话 4虚拟键映射失效,因为布局文件无法读取。(本人结果是所有按键都不能用,相当麻烦- -)
修改权限的方法为:长按文件,然后选权限
弄完之后,重启手机,大功告成!
实际效果就是,音量键跟电源键一样,可以唤醒屏幕,也可以让屏幕休眠,但是音量键就没用了- -不过听歌时可以通过音乐软件调节音量,这是这种方法的一个BUG,有一些替代方法是使用手机软件,同时也是用音量键,但是这要安装这种软件,该软件就会一直驻在系统进程中,会很耗电,也会拉慢系统速度,所以两种方法随你选择。
这是我找到的一个软件,就是音量键唤醒屏幕的,没安装过
http://bbs.fengbao.com/forum.php?mod=viewthread&tid=1367747&reltid=277413&pre_pos=9&ext=
此外,还可以对添加手机按键映射,但这些已经涉及到底层驱动的问题了,需要在Linux下进行修改驱动,我还没弄到这么深,就不说了。
【最后,对一些有用的资料进行整合】
1、
有时候,我们还需要修改软键盘的键字符映射文件,以便能输入特殊字符,例如当我们输入$的时候,实际上是要输入¥。
下面就讲讲键字符映射文件的修改。

键字符映射位于:/system/usr/keychars下
比如对于一个特定的设备xxx,设置android.keychar.xxx系统属性,用全路径表示去描述所需的键字符映射。如果你没有描述任何一个键字符映射,系统将默认使用/system/usr/keychar/qwerty.kcm.bin
文件格式:
键字符映射文件以二进制减少加载时间的形式存储于设备中,键字符映射文件有如下特征:
注释:以#开始为注释
空行:所有的空行被忽略
列定义:当一个事件来临的时候按下组合键。这个事通常是MODIFIER_SHIFT,MODIFIER_CTRL,MODIFIER_ALT的组合。
O                     no modifiers
S                     MODIFIER_SHIFT
C                     MODIFIER_CONTROL
L                     MODIFIER_CAPS_LOCK
A                     MODIFIER_ALT

键值定义:键值定义遵循如下规则:

键 扫描码 字符[....]
扫描码和字符通常是一个十进制的值或者是UTF8字符,可以通过strtol的解析。

键字符文件的示例:
下面这个文件来自于android/src/device/product/generic/tuttle2.kcm,代表了一个完整的键字符文件。
以type开始的语句描述了你所要描述键盘的类型,大体分为三种
1:NUMERIC,12键的数字键盘
2:Q14:键盘包括所有的字符,但是可以一键多个字符。
3:QWERTY键盘包括了所有可能的字符和数字,类似于全键盘。

下面是一个QWERTY全键盘的定义示例,因为android主要用于手机,手机一般是全键。
# Copyright 2007 The Android Open Source Project
[type=QWERTY]
# keycode   base    caps    fn      caps_fn number  display_label
A           'a'     'A'     '%'     0x00    '%'     'A'
B           'b'     'B'     '='     0x00    '='     'B'
C           'c'     'C'     '8'     0x00E7  '8'     'C'
D           'd'     'D'     '5'     0x00    '5'     'D'
E           'e'     'E'     '2'     0x0301  '2'     'E'
F           'f'     'F'     '6'     0x00A5  '6'     'F'
G           'g'     'G'     '-'     '_'     '-'     'G'
H           'h'     'H'     '['     '{'     '['     'H'
I           'i'     'I'     '$'     0x0302  '$'     'I'
J           'j'     'J'     ']'     '}'     ']'     'J'
K           'k'     'K'     '"'     '~'     '"'     'K'
L           'l'     'L'     '''     '`'     '''     'L'
M           'm'     'M'     '>'     0x00    '>'     'M'
N           'n'     'N'     '<'     0x0303  '<'     'N'
O           'o'     'O'     '('     0x00    '('     'O'
P           'p'     'P'     ')'     0x00    ')'     'P'
Q           'q'     'Q'     '*'     0x0300  '*'     'Q'
R           'r'     'R'     '3'     0x20AC  '3'     'R'
S           's'     'S'     '4'     0x00DF  '4'     'S'
T           't'     'T'     '+'     0x00A3  '+'     'T'
U           'u'     'U'     '&'     0x0308  '&'     'U'
V           'v'     'V'     '9'     '^'     '9'     'V'
W           'w'     'W'     '1'     0x00    '1'     'W'
X           'x'     'X'     '7'     0xEF00  '7'     'X'
Y           'y'     'Y'     '!'     0x00A1  '!'     'Y'
Z           'z'     'Z'     '#'     0x00    '#'     'Z'
COMMA       ','     ';'     ';'     '|'     ','     ','
PERIOD      '.'     ':'     ':'     0x2026  '.'     '.'
AT          [email=]'@'[/email]     '0'     '0'     0x2022  '0'     [email=]'@'[/email]
SLASH       '/'     '?'     '?'     '\'     '/'     '/'
SPACE       0x20    0x20    0x9     0x9     0x20    0x20
NEWLINE     0xa     0xa     0xa     0xa     0xa     0xa
# on pc keyboards
TAB         0x9     0x9     0x9     0x9     0x9     0x9
0           '0'     ')'     ')'     ')'     '0'     '0'
1           '1'     '!'     '!'     '!'     '1'     '1'
2           '2'     [email=]'@'[/email]     [email=]'@'[/email]     [email=]'@'[/email]     '2'     '2'
3           '3'     '#'     '#'     '#'     '3'     '3'
4           '4'     '$'     '$'     '$'     '4'     '4'
5           '5'     '%'     '%'     '%'     '5'     '5'
6           '6'     '^'     '^'     '^'     '6'     '6'
7           '7'     '&'     '&'     '&'     '7'     '7'
8           '8'     '*'     '*'     '*'     '8'     '8'
9           '9'     '('     '('     '('     '9'     '9'
GRAVE         '`'     '~'     '`'     '~'     '`'     '`'
MINUS         '-'     '_'     '-'     '_'     '-'     '-'
EQUALS        '='     '+'     '='     '+'     '='     '='
LEFT_BRACKET  '['     '{'     '['     '{'     '['     '['
RIGHT_BRACKET ']'     '}'     ']'     '}'     ']'     ']'
BACKSLASH     '\'     '|'     '\'     '|'     '\'     '\'
SEMICOLON     ';'     ':'     ';'     ':'     ';'     ';'
APOSTROPHE    '''     '"'     '''     '"'     '''     '''
STAR          '*'     '*'     '*'     '*'     '*'     '*'
POUND         '#'     '#'     '#'     '#'     '#'     '#'
PLUS          '+'     '+'     '+'     '+'     '+'     '+'

由于键字符映射文件在DHD中不再是文本文件格式,做修改的话我们需要HexEdit或者UltraEdit这类支持16进制代码的工具。
修改前,我们要先查询http://www.ascii-code.com/,查到$对应的16进制HEX码为24,¥对应的16进制HEX码为A5。
然后用UltraEdit打开qwerty.kcm.bin

2、修改精确电量。教程见http://bbs.anzhi.com/forum.php?mod=viewthread&tid=4874825

6. 修改音量键开屏。教程见 http://bbs.anzhi.com/thread-4859012-1-1.html
7. 修改搜索键锁屏。教程见 http://bbs.anzhi.com/forum.php?mod=viewthread&tid=4857191
8. 修改字体。安装字体管家 豌豆荚有

音量键唤醒屏幕--解决电源键坏掉的情况相关推荐

  1. 音量键唤醒屏幕方法技术

    方法一. 通过本教程的修改,你可以实现: 1.屏幕关闭状态下使用音量+-键即可唤醒屏幕,注意是唤醒,也就是点亮屏幕. 2.音量键本身的音量调整功能不被破坏.(目前大部分通过修改QWERTY文件来   ...

  2. Android 11.0 framework 增加音量+音量-键唤醒屏幕的功能

    目录 1.概述 2.framework 增加音量+音量-键唤醒屏幕的功能的核心代码

  3. linux 点亮屏幕,按电源键屏幕唤醒和屏幕睡眠流程(从上层到kernel)

    粘贴如下: 一. 屏幕的唤醒 首先inputread在读取到有keyboard事件上报后,会调用到keydispatch的notifykey,去询问wm是否会对这次按键特殊处理,如果WM不处理,则此处 ...

  4. android 声音键获取,android手机电源键和声音键自己本身如何刷机

    一.线刷 用刷机工具,比如刷机精灵.刷机大师.卓大师.甜椒.深度刷机.奇兔刷机. 二.卡刷 进入Recovery模式方法: 方法一:如果手机是开机状态,请先关机,抠下电池再装上,在关机情况下,同时按住 ...

  5. Android 长按电源键和短按电源键的详细处理流程

    1 Android Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCOD ...

  6. Home键监听与电源键

    Home键监听 编写广播接收器 private final BroadcastReceiver homePressReceiver = new BroadcastReceiver() {final S ...

  7. Android 按power键唤醒屏幕流程

    http://blog.csdn.net/shadow_dance/article/details/8070252 屏幕唤醒流程: /framework/base/policy下面KeyguardVi ...

  8. win10电脑睡眠后无法唤醒屏幕解决方法

    解决方法: 设备管理器->系统设备->Intel(R) Management Engine Interface 双击Intel(R) Management Engine Interface ...

  9. 计算机强制关机原理,解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于“按电源键强制关机对硬件无危害”的...

    解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于"按电源键强制关机对硬件无危害"的 2020-08-10 10:21:40 36点赞 186收藏 64评论 本文背景 ...

最新文章

  1. Python 包安装和 postgresql 的一些问题
  2. 【Python-ML】SKlearn库学习曲线和验证曲线
  3. 26、Power Query-日期与时间数据处理实例(统计出某年各月各周的借书人数)
  4. Python爬虫(十三)_案例:使用XPath的爬虫
  5. java多线程原子操作_Java 多线程 - 原子操作CAS
  6. mysql常用命令英文词汇_MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档
  7. 某银行软件中心产品开发流程
  8. C#:Md5和Sha1两种加密方式
  9. 小米wifi怎么创建虚拟服务器,小米路由器玩法:一键安装LLMP 建自己的网站
  10. mumu模拟器安装xposed
  11. python四分位数_Python:获取四分位数的数组索引
  12. 华为交换机SNMPv2配置步骤
  13. 双月楼月饼荣获茂名在线月饼品鉴佳绩
  14. 我给新加坡华人送外卖,一趟5000块
  15. 我学习编程的好的学习方法!
  16. 小白也能看懂的零信任SDP介绍
  17. COTS应用程序开发框架简介(二)
  18. vue让你理解npm run dev 和 npm run serve
  19. window8 添加美式键盘
  20. GB/T28181协议视频平台EasyGBS视频快照优化,减少服务器性能消耗

热门文章

  1. Ubuntu安装Mplayer和多媒体解码器
  2. 用Echart完成第七次人口普查
  3. http和dubbo接口调用主动设置超时时间
  4. mysql从安全文件密码_Mysql必读MySQL安全输入密码的一些操作介绍
  5. seo模拟点击软件_SEO点击软件是否对网站排名有帮助
  6. 协众信息技术设计 平面设计构成的八大形式
  7. Java 设计模式之责任链模式实现的三种方式
  8. QT的MVC和MVD架构简述
  9. 高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现
  10. 计算机毕业设计Java智慧校园系统前端(源码+系统+mysql数据库+lw文档)