美文网首页ROM天地
手机按键坏了?通过修改系统文件就能解决

手机按键坏了?通过修改系统文件就能解决

作者: YARSICT工作室 | 来源:发表于2018-02-17 10:16 被阅读195次

手机电源键摔坏了?又没有HOME键点亮屏幕?下面这招让你不用去手机店也能解决。

图片来自YARSICT

修改手机按键布局映射方法,让音量+,-键也能像电源键关屏或点亮屏幕

键盘布局映射文件通常放在/system/usr/keylayout下

文件格式:

键映射文件通常以UTF8文本文件格式存储于设备,通常有如下特性:

注释:用#表示,以#开头的内容都将被忽略。

空白:所有的空行被忽略

键定义:键定义遵循如下格式key SCANCODE KEYCODE [FLAGS...],当扫描码是一个数字,键码定义在你描述的布局文件android.keylayout.xxx。

另外可以设置相关的FLAGS:

SHIFT: 当按下,自动加上SHIFT键值

ALT:当按下,自动加上ALT

CAPS:当按下,自动带上CAPS大写

WAKE:当按下,当设备进入睡眠的时候,按下这个键将唤醒,而且发送消息给应用层。

WAKE_DROPPED:当按下,且设备正处于睡眠,设备被唤醒,但是不发送消息给应用层。

原键盘布局映射文件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

注意,请使用EditPlus或者Notepad++这类软件来修改。

修改存盘后,用RE管理器将spade-keypad-v0.kl复制到/system/usr/keylayout下,然后重启手机,大功告成

有时候,我们还需要修改软键盘的键字符映射文件,以便能输入特殊字符,例如当我们输入$的时候,实际上是要输入¥。

下面就讲讲键字符映射文件的修改。

键字符映射位于:/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主要用于手机,手机一般是全键。

[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'    '
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          '+'    '+'    '+'    '+'    '+'    '+'

由于键字符映射文件在手机中不再是文本文件格式,做修改的话我们需要HexEdit或者UltraEdit这类支持16进制代码的工具。

修改前,我们要先查询http://www.ascii-code.com/,查到$对应的16进制HEX码为24,¥对应的16进制HEX码为A5。

然后用UltraEdit打开qwerty.kcm.bin

点选窗口右列的$,然后将左列的24修改为A5。如此循环改完。

最后存盘退出。用RE管理器将qwerty.kcm.bin复制到/system/usr/keychars下,然后重启手机。

赶紧试试吧!

相关文章

网友评论

    本文标题:手机按键坏了?通过修改系统文件就能解决

    本文链接:https://www.haomeiwen.com/subject/giymtftx.html