无法更改某些 Qt 程序中的键盘布局

无法更改某些 Qt 程序中的键盘布局

我的 Ubuntu 13.10 最近使用 Unity 更新后出现了这个问题。

在 Qt Creator 3.0.1 或我自己用 Qt 5.2.1(来自 qt-project.org)编译的程序中输入内容时,我无法更改键盘布局。例如,如果当前布局是En我启动程序时使用的,那么即使我切换到俄语,也只能在其中输入英文字母。如果我按Alt+ Shift,托盘图标会从 变为EnRu并且它适用于大多数程序,但不适用于某些 Qt 程序。要更改布局,我必须重新启动程序或从另一个程序的输入字段复制粘贴!

并非所有 Qt 程序都存在此问题 — 例如,KDevelop 就没有。

将 Ubuntu 从 13.10 升级到 14.04 beta 并不能解决这个问题(虽然它修复了另一个错误,影响了 LibreOffice 俄语布局的快捷方式)。

什么原因导致这种奇怪的行为?

答案1

这看起来像是 Qt 的事件处理系统中的一个错误,用于更改键盘布局:Bugzilla 链接

Gatis Paeglis 添加了一条评论 - 03/Dec/13 1:47 PM 这不是 Qt 中的错误,正如开发人员所建议的那样https://mail.gnome.org/archives/desktop-devel-list/2013-September/msg00046.html 同一资源表明,问题的原因是 Qt 不监听 XkbNewKeyboardNotify 事件 - 这是错误的。XkbNewKeyboardNotify 与键盘布局更改无关。XkbNewKeyboardNotify 事件是在实际硬件连接或断开连接时触发的,而不是在键盘布局更改时触发的。实际问题出在 Xlib 中,如https://bugs.freedesktop.org/show_bug.cgi?id=23202以及https://bugreports.qt-project.org/browse/QTBUG-30911。我们希望有一天 xcb 平台插件不再需要依赖 Xlib,这样我们就可以直接使用 xcb 事件循环。这也应该解决“键盘布局检测”问题。以下是关于 xcb 插件中 Xlib 依赖关系的讨论http://lists.qt-project.org/pipermail/development/2013-July/011965.html

据说,它只影响基于 GTK 的桌面环境,因此您可能需要切换到 KDE。您可以这样做:

sudo apt-get install kubuntu-desktop

相关内容