在QT2.3.7的src/kernel目录下的qwskeyboard.cpp加入了自己的键盘驱动。
自己的键盘上定义了0~9,小数点,回车,回退,删除,Tab等几个键,重新编译qt,把新的QT库放到了板子上,发现数字键和小数点键不能工作,其他键没有问题。
仔细研究了qt的键盘驱动部分,发现了一个问题,处理键盘调用了一个函数叫做processKeyEvent。这个函数有5个参数,其中第一个参数是unicode,第二个参数是keycode。自己定义的键盘驱动是从标准的101键盘驱动派生,发现101键盘定义了一个KeyMap,数字键的unicode码就是数字键对应的ASCII码。而自己定义的键盘驱动中,数字键的unicode变量是0。
更改自己的键盘驱动,定义数字键的unicode变量为对应的ASCII码,问题搞定。