kl键盘映射文件得到keycode基础知识

榜首列:keycode,由kernel层发出,经*.kl键盘映射文件得到keycode;

base列:META_KEY没有被激活时的状况,即MetaState==0时映射的字符;

caps列:毫无疑问,是SHIFT或CAPS_LOCK被激活时的状况,此刻MetaState==1时,映射的字符;

fn列:ALT被激活,对应MetaState==2时映射的字符;

caps_fn列:ALT,SHIFT或CAPS_LOCK同时被激活时映射的字符;此刻MetaState==3;

number列:getNumber(mKeyCode)回来该键代表的数值;

./base/core/java/android/view/KeyEvent.java:871:

public char getNumber() {

return KeyCharacterMap.load(mDeviceId).getNumber(mKeyCode);

Display列:同上,由getDisplay回来;

经过这种方式,完成了一键对应多个字符的输出,

准备基础知识:

怎么完成了一键对应多个字符的输出

假如你的键盘是全键盘(包含了ALT、SHIFT、CAPS_LOCK功能键)基本上用Android默认的键盘映射文件qwerty.kcm,qwerty.kl就能够了。假如需求修正按键映射字符能够修正kcm 文件, 假如不幸遇上NC的产品设计人员,拍脑袋搞出一个残缺不全的键盘出来,就要动点心思改改Android framework层了。无奈,刚好这种事被我碰上了~~~~ 只有SHIFT键位,只好用SHIFT来回切换来完成小写字母、大写字母、数字符号三种输入,就像输入法软件盘相同完成三种输入形式。

一、什么是META Keys:便是ALT、SHIFT、CAPS_LOCK了

Qwerty键盘映射语句完成方位在:frameworks/base/core/java/android/text/method/QwertyKeyListener.java文件中

int i = event.getUnicodeChar(getMetaState(content));//getMetaState(content)分别为0,1,2,3 对应

getUnicodeChar(int meta)函数完成坐落文件frameworks/base/core/java/android/view/KeyEvent.java:

/base/core/java/android/view/KeyCharacterMap.java:139:

unsigned short KeyCharacterMap::get(int keycode, int meta)

您还需重视的文件有MetaKeyKeyListener.java,在该文件中人为地、暴力地改动MetaKey的状况或回来值。

二、 长按按键时,弹出带音标的候选字符

代码:public final int getRepeatCount() { return mRepeatCount; }

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License