在Android 系统中定义了大量的物理和虚拟按键,比如返回键,home键,数字键等。现在有这样一个需求,要在现有的开发板上添加一个新的物理按键。
在添加按键之前,需要了解Andorid 系统的按键软件架构,以物理按键为例。
1. 按键驱动层
将物理按键的键值上报给按键框架层。在手机的文件系统中,有这样的一个目录 /dev/input,按键框架层,就是通过检测这个目录,看是否有按键值上报。
2. 按键框架层
<1>将驱动中定义个的按键值映射成按键码.(*.kcl)
<2>将按键码映射成用户可见的字符.(*.kcm)
3. 按键应用层
应用层在onKeyUp,onKeyDown 中识别的就是keyCode.
按键值映射文件 *.kl
如Generic.kl,qwerty.kl 等。
key 123 BACK, 这句话的意思是 将驱动上报的键值 123 映射城按键码 BACK,BACK 有自己的值(KeycodeLabel.h).
按键字符映射文件 *.kcm
将按键码映射成多个可显示的用户可以看到的字符。
如 qwerty.kcm(全键盘)
META Keys:就是ALT、SHIFT、CAPS_LOCK 这几个键。
key A {
label: 'A'
number: '2'
base: 'a'
shift, capslock: 'A'
alt: '#'
shift+alt, capslock+alt: none
}
label 表示显示的字符 'A"
number 表示这个按键码对应的数字,如在 九宫格中,按下包含a的那个键时,对应的数字键就是2
base 表示,ALT,SHIFT,CAPS_LOCK 这些按键没有被按下时,需要显示的字符
shift,capslock 表示shift或者capslock 被按下时,需要显示的字符
在添加按键之前,需要了解Andorid 系统的按键软件架构,以物理按键为例。
1. 按键驱动层
将物理按键的键值上报给按键框架层。在手机的文件系统中,有这样的一个目录 /dev/input,按键框架层,就是通过检测这个目录,看是否有按键值上报。
2. 按键框架层
<1>将驱动中定义个的按键值映射成按键码.(*.kcl)
<2>将按键码映射成用户可见的字符.(*.kcm)
3. 按键应用层
应用层在onKeyUp,onKeyDown 中识别的就是keyCode.
按键值映射文件 *.kl
如Generic.kl,qwerty.kl 等。
key 123 BACK, 这句话的意思是 将驱动上报的键值 123 映射城按键码 BACK,BACK 有自己的值(KeycodeLabel.h).
按键字符映射文件 *.kcm
将按键码映射成多个可显示的用户可以看到的字符。
如 qwerty.kcm(全键盘)
META Keys:就是ALT、SHIFT、CAPS_LOCK 这几个键。
key A {
label: 'A'
number: '2'
base: 'a'
shift, capslock: 'A'
alt: '#'
shift+alt, capslock+alt: none
}
label 表示显示的字符 'A"
number 表示这个按键码对应的数字,如在 九宫格中,按下包含a的那个键时,对应的数字键就是2
base 表示,ALT,SHIFT,CAPS_LOCK 这些按键没有被按下时,需要显示的字符
shift,capslock 表示shift或者capslock 被按下时,需要显示的字符
其他的类似。
转自:http://blog.csdn.net/lsdmx2016/article/details/8606851