标题:实在没办法了。。。求教嵌入式QT鼠标和键盘的设置
作者:flyleier
日期:2017-03-03 11:50
内容:
小弟最近在做嵌入式QT的开发,但是鼠标不支持热插拔,就是如果在QT程序启动前插好鼠标,鼠标可以用,QT程序启动后,再插入鼠标,鼠标就不能用;键盘的大写无法锁定,就是Capslock灯已经亮了,但是在QT程序里面输入,还是小写的字符。鼠标和键盘都是USB的。
平台:IMX6
Qt版本:qt4.8.5
linux版本:3.0.35
如果各位大神有过之类经验的,望不吝赐教!
#1 [大漠之鹰 03-16 11:03]
可以看一下鼠标键盘初始化的代码,最好单步调试一下,就可以看到问题
#2 [大漠之鹰 03-17 09:31]
QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, const QString &device)
: m_handler(h), m_fd(-1), m_tty_fd(-1), m_orig_kbmode(K_XLATE)
{
setObjectName(QLatin1String("LinuxInputSubsystem Keyboard Handler"));
QString dev = QLatin1String("/dev/input/event1");
int repeat_delay = -1;
int repeat_rate = -1;
int grab = 0;
QStringList args = device.split(QLatin1Char(':'));
foreach (const QString &arg, args) {
if (arg.startsWith(QLatin1String("repeat-delay=")))
repeat_delay = arg.mid(13).toInt();
else if (arg.startsWith(QLatin1String("repeat-rate=")))
repeat_rate = arg.mid(12).toInt();
else if (arg.startsWith(QLatin1String("grab=")))
grab = arg.mid(5).toInt();
else if (arg.startsWith(QLatin1String("/dev/")))
dev = arg;
}
m_fd = QT_OPEN(dev.toLocal8Bit().constData(), O_RDWR, 0);
if (m_fd >= 0) {
::ioctl(m_fd, EVIOCGRAB, grab);
if (repeat_delay > 0 && repeat_rate > 0) {
int kbdrep[2] = { repeat_delay, repeat_rate };
& ..
#3 回 大漠之鹰 的帖子 [flyleier 03-23 09:04]
大漠之鹰:QWSLinuxInputKbPrivate::QWSLinuxInputKbPrivate(QWSLinuxInputKeyboardHandler *h, const QString &device)
: m_handler(h), m_fd(-1), m_tty_fd(-1), m_orig_kbmode(K_XLATE)
{
setObjectName(QLatin1String("LinuxI .. (2017-03-17 09:31)
谢谢回复,我看了这么多天,还是没有解决,我放弃了从Qt方面改了,看看从内核方便能不能解决这个问题。
#4 [wangmingxiao 08-21 11:23]
这个都是从内核驱动入手才对