我遇到一个问题,在Linux系统上我使用Qt插件fcitx-qt5,cup占用率高活着性能查的机器上使用扫码枪模拟键盘输入会出现字符串乱序问题,编写一个墨迹案件输入的脚本(见附件)也同样会出现乱序,我定位源码发现错误原因为filterEvent函数中dbus异步处理导致的,具体如下:
qDebug() << "filterEvent" << keyEvent->key() << keyEvent->text() << keyEvent->type(); //数据是正确的顺序
ProcessKeyWatcher *watcher = new ProcessKeyWatcher(
*keyEvent, qApp->focusWindow(), reply, proxy);
connect(watcher, &QDBusPendingCallWatcher::finished, this,
&QFcitxPlatformInputContext::processKeyEventFinished, Qt::DirectConnection);
return true;
然而在槽函数processKeyEventFinished里数据由于异步处理就会出现乱序,例如输入的事PECI932, 在槽函数里乱序就可能会出现ECI932P、PECI239等等;
请帮忙查看处理下,谢谢;