标题:usb keyboard在板子上的问题
作者:cn_q_t
日期:2009-07-15 18:41
内容:
是这样,我的QT4.3.3运行在linux上,我已经export QWS_KEYBOARD=usb:/dev/input/event0 了。
系统启动起来,我使用键盘进行输入,大小写,选择都是正确的。
但是等了一会儿,再敲击键盘就没有反应了,系统没有死,不知道挂在什么地方了。
但是我telenet到板子上去,可以读取到/dev/input/event0的扫描码,证明kernel没有问题。但是QT的QSocketNotifier的event()函数为何没有将activated给emit出来,或者emit出来了,但是slot却没有接收到?
请问你们碰到过这类情况吗?是如何处理的?
我看qt的邮件列表里面说,目前qt 的usb keyboard还不支持热插拔。你们又是如何处理的呢?
谢谢!
#1 [cn_q_t 07-16 10:06]
这个可能是QtCore的一个bug,后续的Qt版本不知道是否修改了,但是这里确实是存在。
Qeventdispatcher_unix.cpp中的定时器有个地方overflow了。
#2 [shiroki 07-16 10:27]
你找到具体是哪几行代码吗? 能说得具体一点吗?
#3 [cn_q_t 07-17 16:46]
那个getTime()中,得到times()的值后,马上*10。这个地方,是很有可能越界的。
本来就是一个unsigned int类型,然后再乘以10,这种情况是可能越级的。
这里修改后,下面的repairTimeIfNeed()就没有必要用了。