让android支持AZERTY法语键盘
来源:互联网 发布:葫芦娃摇钱树元宝算法 编辑:程序博客网 时间:2024/05/17 03:57
环境描述:
硬件:m790CB法语键盘
软件:android4.0
问题描述:
应客户需求,需要增加系统对法语外界键盘的支持,法语键盘的整体布局以及一些特殊的字符输出都是和美式键盘有所不同的。
解决方法:
不同的按键输出不同信息主要是和键盘映射文件Generic.kcm,Generic.kl有关,存在android-4.0.3_r1_dev/frameworks/base/data/keyboards目录下,首先根据AZERTY布局的法语键盘下载一份Generic.kl和Generic.kcm的文件,然后根据我们实际的键盘上的键值做具体的微调。
其中Generic.kl是键盘布局文件,就是SCANCODE(十进制整数)和KEYCODE(字符串)的对应关系,第一行,表示keyboard格式,第二行,表示SCANCODE,第三行,表示KEYCODE。有关按键KEYCODE表示,网上有资料。
key1 ESCAPE
key2 1
key3 2
key4 3
key5 4
key6 5
key7 6
key8 7
key9 8
key10 9
key11 0
key12 MINUS
key13 EQUALS
key14 DEL
key15 TAB
当键盘上某个按键的输出不对时,需要修改kl文件。当按下输出错误的按键时,通过串口getevent可以得到SCANCODE的十六进制数,转换为十进制,然后修改对应的KEYCODE值。 Generic.kcm是按键映射字符文件,一个按键在不同情况下可以输出不同信息,小写,大写,数字,符号等。当某个按键和ctrl,shift或者alt组合输出有误时,一般需要修改kcm文件。kcm文件内容如下:
key0 {
label,number: '0'
base: '0'
shift: ')'
ctrl,alt, meta: none
}
这是按键0的输出信息,label值和number值分别是按键标号和getNumber(上层调用)返回该键代表的数值。base值表示不按下任何其他组合键时的输出字符,shift,ctrl,alt,meta值分别表示他们和按键0组合输出时的字符,meta键根据法语键盘,暂时将它定为键盘上的AltGr键。
这时出现了一个问题,当按键2被按下的时候,应该是显示'é',但是,如果直接将'é'放在那个位置,是不能正确输出的。
key 2 {
label, number: '2'
base: '\u00e9'
shift: '2'
ctrl, alt: none
meta: '~'
}
原因应该是字符编码的问题,在ASCII字符编码中并没有é字符,所以它不能正确地被解析。为什么使用'\u00e9'就能够正确地显示,估计kcm文件也支持ISO8859-1 (Latin 1)编码,而在ISO8859-1中,é对应于\u00e9。
相关资源参考:
HowTochange QWERTY to AZERTY for USB/Bluetooth keyboard
http://forum.xda-developers.com/showthread.php?t=1082408
按键KEYCODE表示
http://hi.baidu.com/%D0%FE%D4%C6%B7%C9/blog/item/c724a74fadafabf5d62afce9.html
ASCII/ ISO 8859-1 (Latin-1) Table with HTML Entity Names
http://cs.stanford.edu/~miles/iso8859.html
- 让android支持AZERTY法语键盘
- 法语键盘的使用方法
- android 支持键盘导航
- 法语
- 让android支持表情
- Android源码加入键盘支持
- 让android支持多屏幕分辨率
- 让android studio 支持Lambda
- 让Android studio支持java8
- 让Android WiFi支持中文
- win7虚拟机iOS坑爹法语键盘冲突解决方法
- 【Android版】免费JFrench离线法语词典
- android 如何让文本框置于键盘上面
- Android如何让EditText不弹出键盘
- QWERTY,QWERTZ和AZERTY
- 让Android也支持华为EM770模块
- 让Android的emulator支持web camera
- 让自己的Android应用支持appwidget
- CWnd::NotifyWinEvent 函数不接受 4 个参数的解决方案
- 二极管基本知识
- 黑马程序员 银行调度管理系统
- Suse 服务启动顺序
- 24种语言执行外部命令的方法
- 让android支持AZERTY法语键盘
- Java程序员从笨鸟到菜鸟之(八十二)细谈Spring(十一)深入理解spring+struts2整合(附源码)
- zend studio 9 字体,颜色,快捷键等相关设置
- 关于oracle数据库重装后或ip改变后连接失败的问题解决
- 关于Python的Type,Module,Class
- 生成Code128A,Code128B,Code128C,EAN128条码
- Flex 仪表盘
- C# Expression 表达式树 缓存
- XmlHelper