【问题标题】:Why does Qt5 ignore xkb mapping?为什么 Qt5 忽略 xkb 映射?
【发布时间】:2014-03-29 23:16:49
【问题描述】:

我试图在 Qt5 和 X11 下的我自己开发的 QWidget 派生小部件中捕获 keyPressEvents。我在我的应用程序中声明了一个受保护的函数keyPressEvent,并且我收到了预期的QKeyEvent *event。但是当访问由event->key()event->text() 按下的键时,返回值会忽略有效的xkb 映射!例如。因为我使用的是德沃夏克键盘布局,所以键【Y】映射到“F”。所以如果我在我的应用程序中按下物理键【Y】,我希望得到“f”,但我没有;我得到text()=="y"key()==89。将此与预期返回的 xev 进行对比:

KeyPress event, serial 37, synthetic NO, window 0x2c00001,
    root 0x90, subw 0x0, time 10101528, (102,85), root:(1562,106),
    state 0x0, keycode 29 (keysym 0x66, f), same_screen YES,
    XLookupString gives 1 bytes: (66) "f"
    XmbLookupString gives 1 bytes: (66) "f"
    XFilterEvent returns: False

这是 Qt5 中的错误还是我做错了什么?

我的键盘映射是通过 xkbcomp ~/.xkbmap :0 加载的。

请注意,在 Qt4 下,程序按预期工作。

【问题讨论】:

标签: qt5 x11


【解决方案1】:

正如之前所说,这是 Qt 中的一个错误。

已经在这两个变更集中进行了处理:

后者被合并,预计到Qt 5.3,即scheduled for 7th May 2014

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多