关闭

Android 外接键盘的按键处理

标签: android输入法网络c
11249人阅读 评论(3) 收藏 举报
分类:

Android是默认支持键盘的,但是支持的不够好,所以需要我们自己根据自己的键盘来修改。

Android键盘的默认配置路径是sdk/emulator/keymaps

有两个最重要的文件:

qwerty.kl 默认的KeyLayout文件,是映射键盘物理矩阵的ScanCode到系统的KeyCode的一个关系。这个需要我们事先知道我们的键盘矩阵值。如果厂家不提供,就自己一个一个Log打印。

 

这个文件的格式,很多网络的资料都提供,可以了解下。下面只简单的说明

key 158   BACK                   WAKE_DROPPED
key 230   SOFT_RIGHT        WAKE

 

第一列Key 表示一行有效的开始,注释行用#开头

第二列表示Scancode ,是键盘物理设备的矩阵扫描码值

第三列表示系统里面的按键码Keycode,这样物理键盘和操作系统就对应起来了。

第四列表示KeyCode的Flag信息,可有可无,一般有三种状态

 

空                               没有附加信息

WAKE                         当机器处理Sleep状态,可以唤醒,按键信息继续被处理

WAKE_DROPPED        当机器处于Sleep状态,可以唤醒,但是丢弃按键信息

 

这里是一一映射的关系。需要根据键盘的不同来处理。

 

如果是正规的做法,ScanCode对应键盘值在不同的国家键盘中时不会变的,例如常用的US键盘。但是有时没有UK的矩阵,只能用US的,

这个时候就需要我们软件去更改这个ScanCode和KeyCode的映射关系。严重不推荐这种非标准化做法。

 

 

 

qwerty.kcm 默认的KeyCharacterMap文件。这个文件的作用就是我们在处理单独按键或者组合键的时候,系统输入显示的字符。记住这里是字符,里面以Unicode(UTF8)码值存在。这个问题困扰了我很久。

这里把一些常用的字符列出来。大家可以参考他们的Unicode值,填入到矩阵列表总即可。

下面简单的描述下这个格式:

# keycode       display number  base    caps    fn      caps_fn
                                                       
A                         'A'         '2'          'a'        'A'     '#'        0x00

 

 

这里第一列KeyCode就是我们通过.kl文件的ScanCode转换过来的了。

KeyCode  提供给系统的KeyCode

display     键盘上显示的字符(丝印)

number    一般不需要

base        不使用组合键默认显示的字符

caps         Shift + 按键            显示的字符

fn             Alt    + 按键            显示的字符

caps_fn    Shift +Alt+按键      显示的字符

 

 

其中base,caps,fn,caps_fn都可以通过Unicode码制来表示。例如你可以写

'A',也可以写0x41.

 

一般键盘中会有很多的组合键,可能会碰见各种奇怪的字符,这里我列举以下字符,他们的Unicode可以通过

http://www.unicodemap.org/search.asp?search=

复制你所需要的字符,然后可以查询到字符对应的Unicode码制。

 

常用字符集合:

 

! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ / ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z {} ~ ¢ £ ¤ ¥§ ¨ a - ˉ ° ± 2 3 ′ μ · 1 o à á è é ê ì í D ò ó × ù ú ü Y T à á a è é ê ì í e ò ó ÷ ù ú ü y t ā ā ē ē ě ě ī ī ń ň ō ō ū ū ∥ ǎ ǎ ǐ ǐ ǒ ǒ ǔ ǔ ǖ ǖ ǘ ǘ ǚ ǚ ǜ ǜ ɑ ɡ ˇ ˉ ˊ ˋ ˙ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Ё А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я ё‐ - - - ‖ ‘ ' " " ‥ ... ‰ ′ ″ ‵ ※  ̄ ℃ ℅ ℉ № ℡ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ← ↑ → ↓ ↖ ↗ ↘ ↙ ∈ ∏ ∑ ∕ ° √ ∝ ∞ ∟ ∠ ∣ ∥ ∧ ∨ ∩ ∪ ∫ ∮ ∴ ∵ ∶ ∷ ~ ∽ ≈ ≌ ≒ ≠ ≡ ≤ ≥ ≦ ≧ ≮ ≯ ⊕ ⊙ ⊥ ⊿ ⌒ 壹 二 ③ 四 伍 ⑥ 七 ⑧ ⑨ ⑩ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟ ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ ╭ ╮ ╯ ╰ ╱ ╲ ╳ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊ ▋ ▌ ▍ ▎ ▏ ▓ ▔ ▕ ■ □ ▲ △ ▼ ▽ ◆ ◇ ○ ◎ ● ◢ ◣ ◤ ◥ ★ ☆ ☉ ♀ ♂、 。 〃 々 〆 〇 〈 〉 《 》 「 」 『 』 【 】 〒 〓 〔 〕 〖 〗 〝 〞 〡 〢 〣 〤 〥 〦 〧 〨 〩 ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て で 之 ど な に ぬ ね の は ば ぱ ひ び ぴ 子 ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ ゐ ゑ を ん ゛ ゜ ゝ ゞ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ 兒 レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ ヶ ー ヽ ヾ ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ 日 ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ ㈱ ㊣ ㎎ ㎏ ㎜ ㎝ ㎞ ㎡ ㏄ ㏎ ㏑ ㏒ ㏕ ︰ ︱ ︳ ︴ ︵ ︶ ︷ ︸ ︹ ︺ ︻ ︼ ︽ ︾ ︿ ﹀ ﹁ ﹂ ﹃ ﹄ ﹉ ﹊ ﹋ ﹌ ﹍ ﹎ ﹏ ﹐ ﹑ ﹒ ﹔ ﹕ ﹖ ﹗ ﹙ ﹚ ﹛ ﹜ ﹝ ﹞ ﹟ ﹠ ﹡ ﹢ ﹣ ﹤ ﹥ ﹦ ﹨ ﹩ ﹪ ﹫ ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ¢ £ ¬  ̄ ¦
真 筆 特 殊 文 字
丨 丩 丬丶 丷 丿 乀 乙 乂 乄 乆 乛 亅 亠 亻 冂 冫冖 凵 刂 讠 辶 釒 钅 阝 飠 牜 饣卩 卪 厸 厶 厽 孓 宀 川 巜 彳 廴 三 彐 彳 忄 扌 攵 氵灬 爫 犭 病 癶 礻 糹 纟 罒岡 耂 艹 虍 言 西 兦 亼 亽 亖 亗 盲 凸 凹 卝 卍 卐 匸 皕 旡 玊 尐 幵 木囘 囙 囚 四 囜 囝 回 囟 因 女 團 団 囤 亢 囦 囧 囨 雲 囪 囫 囬 園 化 囯 困 囪 囲 図 圍 掄 囶 囷 正 囹 固 囻 囼 國 圖 囿 圀 圁 圂 圃 吾 圅 圓 圇 圈 幸 青 國 圌 圍 園 圏 圐 圑 員 圓 圔 圕 圖 圗 團 圙 圚 圛 圈 圝 圞
字 符 組 合
、 ︶ㄣ ┈┾ べ_ ╄→ ^o^ ^ǒ^ ╭ァ _ _/~↘ ▄︻┻┳═壹 じò ぴé ; ┢┦ (*^﹏^*)

 

 

 

不仅仅是键盘,很多的输入法耶需要来处理这个动作的部分。

 

 

 

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:394304次
    • 积分:5298
    • 等级:
    • 排名:第5131名
    • 原创:120篇
    • 转载:67篇
    • 译文:5篇
    • 评论:77条
    最新评论