9930|20

55

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE 多国语言输入的问题 [复制链接]

比方说,英文模式下,我打开一个记事本,输入A,它就会显示A的;但在法语情况下,我输入A,它应该显示D的,我该怎么做啊?是修改驱动代码还是修改什么啊?在哪里可以修改啊?

最新回复

非常有用,谢谢!  详情 回复 发表于 2010-4-7 15:01
点赞 关注

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
改键盘驱动,把scan code和virtual key重新映射一下。
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
添加新的输入法吧,
但也好象没有这么简单,首先必须支持相应的字库
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
这个不简单啊。连PC都难啊
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
语言应该与输入法对应啊
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 singlerace 的回复:
改键盘驱动,把scan code和virtual key重新映射一下。


我从来没有弄过键盘驱动的,我不知道怎么映射呢?能否指点一二,谢谢
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 2 楼 hzdysymbol 的回复:
添加新的输入法吧,
但也好象没有这么简单,首先必须支持相应的字库

比方说,我现在就只支持法语,那么理论上输入应该就是法语了吧?wince应该自带的吧?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 
学习了!!!!11
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
没有人回答,我继续顶!!!
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 6 楼 Seven_zhangxw 的回复:
引用 2 楼 hzdysymbol 的回复:
添加新的输入法吧,
但也好象没有这么简单,首先必须支持相应的字库

比方说,我现在就只支持法语,那么理论上输入应该就是法语了吧?wince应该自带的吧?

没太在意输入法,但我想CE不太可能支持这么多种输入法吧,每种语言的输入法都是不一样的
我们用中文的输入法还是第三方的
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
1,用Keyboard Layout Generator Tool (D:\WINCE500\PUBLIC\COMMON\OAK\BIN\I386\kbdgen.exe)生成法语键盘layout:
kbdgen.exe kbdfr.dll -o kbd_040c -i 0000040C
结果生成三个文件:
kbd_040c.reg:注册表文件
kbd_040cDL.cpp:scan code -> virtual key映射表
kbd_040cIL.cpp:virtual key -> wide character映射表

2,一般来说硬件平台确定了keyboard matrix也就确定了,kbd_040cDL.cpp不用改。如果你用的是标准法语键盘,应该直接就能用;如果不是你要改kbd_040cIL.cpp里aVkToWch2、aVkToWch3、aVkToWch4、aVkToWch5、aDeadKey等几个数组的定义。这几个数组控制各种组合按键的输出,比如用户按下A, Shift+A, Ctrl+Shift+A, Dead key+A,分别输出什么东西

3,用这两个文件和
D:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DEVICELAYOUTS\REMAP\NUMPADRMP\numpadrmp.cpp
做一个DLL,导出PS2_AT_0000040C和IL_0000040C函数

4,编辑注册表文件kbd_040c.reg,比如说你生成的DLL叫kbd_040c.dll:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\0000040C]
    "Layout File"="kbd_040c.dll"
    "Layout Text"="French"
    "PS2_AT"="kbd_040c.dll"

5,如果你同时支持英语和法语键盘,可以把法语设为第二键盘:
[HKEY_CURRENT_USER\Keyboard Layout\Preload\2]
    @="0000040C"

6,如果你还想运行时切换键盘,可以设置快捷键:
;Enabling ALT+SHIFT keyboard layout toggle short cut key
;   "Hotkey"="1" => ALT+SHIFT
;   "Hotkey"="2" => CTRL+SHIFT
;   "Hotkey"="3" => None
; The toggle key is disabled even if the key is not defined.
[HKEY_CURRENT_USER\keyboard layout\toggle]
    "Hotkey"="1"


5,最后把注册表文件和kbd_040c.dll加到BSP中。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
太佩服了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

13
 
10楼写的好! 多谢了
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

14
 
十楼太伟大了,我佩服至极。
我要给帖子加分。。
大家说我该给10搂多少分才合适?
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 Seven_zhangxw 的回复:
十楼太伟大了,我佩服至极。
我要给帖子加分。。
大家说我该给10搂多少分才合适?


写个感谢信吧,哈哈。这么牛的东西在哪里学来的呢?收藏
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

16
 
又出问题了
按照10楼的做法后,重新编译下载后,不能输入,没有反应,程序打印错误,错误内容如下:
SB Serial Function Class Enabled : Serial_Class
INFO: Plug: Mapped Irq 0x2 to SysIntr 0x20.
+USB Cable Plug in
S3C2450DISP::S3C2450DISP
--S3C2450DISP() 2D Accelerator Initialization Succeed
2D Sysintr : 34
--S3C2450DISP() 2D Acclerator Interrupt Initialization Succeed.
ERROR: c:\wince500\public\common\oak\drivers\keybd\laymgr\laymgr.cpp line 3793: Keyboard: Could not activate the default input method 0000040C. Keyboard will not function correctly.
ERROR: c:\wince500\public\common\oak\drivers\keybd\laymgr\laymgr.cpp line 1407: KeybdDriverVKeyToUnicode: No input language installed
......
Lyg.p: Called with hkl = 0x0000040c
Lyg.p: Called with hkl = 0x0000040c
ERROR: c:\wince500\public\common\oak\drivers\keybd\laymgr\laymgr.cpp line 1596: MapVirtualKey: No input language installed
ERROR: c:\wince500\public\common\oak\drivers\keybd\laymgr\laymgr.cpp line 1407: KeybdDriverVKeyToUnicode: No input language installed



已经添加了CreateMUI 040c了,
已经包含了mui.bib了,
已经添加了fonts了,
已经添加了french input methods

那么问题出在什么地方呢?
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 14 楼 gooogleman 的回复:
引用 13 楼 Seven_zhangxw 的回复:
十楼太伟大了,我佩服至极。
我要给帖子加分。。
大家说我该给10搂多少分才合适?


写个感谢信吧,哈哈。这么牛的东西在哪里学来的呢?收藏


是啊,牛人真多啊.
可惜我帖子只能加分100分.
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
我感觉如果想支持一款语言,需要在系统平台中加入其语言包,在选择平台语种时,

需要加入需要的国家。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

19
 
kbd_040c.dll要导出PS2_AT_0000040C和IL_0000040C这两个函数,要不然layout manager找不到入口。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

20
 

犯了一个低级错误,得意忘了形,把driver给漏掉加载了。。。。

结贴!

每个人都有分,功能大者多拿分。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名赢【小米双肩包、contigo水杯】 | TI MSPM0 系列 MCU 再添新成员
了解TI 前沿新品——高性能与高性价比的优秀组合 MSPM0G351x / MSPM0L111x,4月24日(周四)上午10:00直播~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 2

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表