修改键盘布局映射方法

  • 格式:doc
  • 大小:26.50 KB
  • 文档页数:7

修改键盘布局映射方法,让音量+键也能像电源键那样关屏及点亮屏幕键盘布局映射文件通常放在/system/usr/keylayout下文件格式:键映射文件通常以UTF8文本文件格式存储于设备,通常有如下特性:注释:用#表示,以#开头的内容都将被忽略。

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

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

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

原键盘布局映射文件spade-keypad-v0.k如下:key 102 HOME WAKE_DROPPEDkey 139 MENU WAKE_DROPPEDkey 158 BACK WAKE_DROPPEDkey 217 SEARCH WAKE_DROPPEDkey 116 POWER WAKE_DROPPEDkey 114 VOLUME_DOWN WAKEkey 115 VOLUME_UP WAKE现在我们就来修改一下,让音量+键也能像电源键那样唤醒屏幕,修改后的内容如下:key 102 HOME WAKE_DROPPEDkey 139 MENU WAKE_DROPPEDkey 158 BACK WAKE_DROPPEDkey 217 SEARCH WAKE_DROPPEDkey 116 POWER WAKE_DROPPEDkey 114 VOLUME_DOWN WAKEkey 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 modifiersS MODIFIER_SHIFTC MODIFIER_CONTROLL MODIFIER_CAPS_LOCKA 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_labelA '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 0x20NEWLINE 0xa 0xa 0xa 0xa 0xa 0xa# on pc keyboardsTAB 0x9 0x9 0x9 0x9 0x9 0x90 '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进制代码的工具。