在添加按鍵之前,需要了解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