• 5274阅读
  • 3回复

usb keyboard在板子上的问题 [复制链接]

上一主题 下一主题
离线cn_q_t
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-15
是这样,我的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还不支持热插拔。你们又是如何处理的呢?

谢谢!


离线cn_q_t
只看该作者 1楼 发表于: 2009-07-16
这个可能是QtCore的一个bug,后续的Qt版本不知道是否修改了,但是这里确实是存在。
Qeventdispatcher_unix.cpp中的定时器有个地方overflow了。
离线shiroki

只看该作者 2楼 发表于: 2009-07-16
你找到具体是哪几行代码吗? 能说得具体一点吗?
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线cn_q_t
只看该作者 3楼 发表于: 2009-07-17
那个getTime()中,得到times()的值后,马上*10。这个地方,是很有可能越界的。
本来就是一个unsigned int类型,然后再乘以10,这种情况是可能越级的。
这里修改后,下面的repairTimeIfNeed()就没有必要用了。
快速回复
限100 字节
 
上一个 下一个