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

Max*_*aev 7 keyboard-layout qt

最近在我的 Ubuntu 13.10 中使用 Unity 更新后出现的问题。

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

并非所有 Qt 程序都有这个问题——例如,KDevelop 没有。

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

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

ene*_*dil 2

看起来这是 Qt 事件处理系统中用于更改 keynoard 布局的错误:bugzilla link

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=23202https://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
Run Code Online (Sandbox Code Playgroud)