面试一句话记住你:更改Android设备的键盘映射 | 企鹅君's Blog

来源:百度文库 编辑:九乡新闻网 时间:2024/04/25 19:40:31

其实此文是一年之前应一个Milestone机友的求助(返回键失灵,希望用搜索键替代返回键)而写的,后来又发到了论坛上,现在拿来就是为了充充门面,让本博客显得有点牛逼的样子。

此文是以Milestone(XT702)为参照所写,其原理适用于大部分基于Android的设备(包含但不限于手机),但是又因Android设备的高度定制性,此方法不可能完全适用于所有Android设备,映射值需要参考对应设备的映射表,不能混用。

Android 使用标准的 linux 输入事件设备(/dev/input/)和驱动按键定义在 linux 内核include/linux/input.h 中,但是 android 系统没有直接使用映射后的值,而是对其再进行了一次映射。从内核标准键值到android 所用的键值映射表定义在 android 文件系统的 /system/usr/keylayout目录下。Android标准的键值映射表文件为 qwerty.kl,定义如下:

KEY 键值ID 映射值 Flag key 1 BACK WAKE_DROPPED key 2 1 key 3 2 key 4 3 key 5 4 key 6 5 key 7 6 key 8 7 key 9 8 key 10 9 key 11 0 key 12 MINUS key 13 EQUALS key 14 DEL key 15 TAB key 16 Q key 17 W key 18 E key 19 R key 20 T key 21 Y key 22 U key 23 I key 24 O key 25 P key 26 LEFT_BRACKET key 27 RIGHT_BRACKE key 28 ENTER key 30 A key 31 S key 32 D key 33 F key 34 G key 35 H key 36 J key 37 K key 38 L key 39 SEMICOLON key 40 APOSTROPHE key 42 SHIFT_LEFT key 43 BACKSLASH key 44 Z key 45 X key 46 C key 47 V key 48 B key 49 N key 50 M key 51 COMMA key 52 PERIOD key 53 SLASH key 54 SHIFT_RIGHT key 56 ALT_LEFT key 57 SPACE key 59 MENU WAKE_DROPPED key 60 SOFT_RIGHT WAKE key 61 CALL WAKE_DROPPED key 62 ENDCALL WAKE_DROPPED key 100 ALT_RIGHT key 102 HOME WAKE key 103 DPAD_UP WAKE_DROPPED key 105 DPAD_LEFT WAKE_DROPPED key 106 DPAD_RIGHT WAKE_DROPPED key 107 ENDCALL WAKE_DROPPED key 108 DPAD_DOWN WAKE_DROPPED key 114 VOLUME_DOWN key 115 VOLUME_UP key 116 POWER WAKE key 127 SEARCH WAKE_DROPPED key 139 MENU WAKE_DROPPED key 150 EXPLORER key 155 ENVELOPE key 158 BACK WAKE_DROPPED key 212 CAMERA key 215 AT key 217 SEARCH WAKE_DROPPED key 227 STAR key 228 POUND key 229 MENU WAKE_DROPPED key 230 SOFT_RIGHT WAKE key 231 CALL WAKE_DROPPED key 232 DPAD_CENTER WAKE_DROPPED key 399 GRAVE

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

只要打开qwerty.kl,将其中对应的Key的ID后面的键值改为需要的键值即可。再用rootexplorer等具有系统文件操作功能的文件管理器把qwerty.kl移动到根目录的/system/usr/keylayout/里覆盖同名文件即可。(电脑端建议使用notepad++等文本编辑器打开qwerty.kl文件)

例如:用搜索键替代返回键:

key 127    SEARCH            WAKE_DROPPED
key 217    SEARCH            WAKE_DROPPED

参看上面的键值映射表可以知道返回键的键值定义为BACK。 然后需要将qwerty.kl中的对应位置改成

key 127    BACK            WAKE_DROPPED
key 217    BACK            WAKE_DROPPED

将该文件回拷到手机上时最好先放到手机内非/sdcard/的目录,修改好相应的权限(CHOMD 644以上)之后再拷入/system/usr/keylayout/ ,然后重启即可。

为了安全起见,在操作之前最好对手机进行nandroid备份。

参考这种方法,基本可以实现将任意键修改为你所需要的功能。