1
我想在Qt5和X11下我的本土QWidget派生窗口部件中捕獲keyPressEvents。我已經在我的應用程序中聲明瞭受保護的功能keyPressEvent
,並且我收到了預期的QKeyEvent *event
。但是,當訪問由event->key()
或event->text()
按下的鍵時,返回值將忽略有效的xkb映射!例如。因爲我使用的是德沃夏克鍵盤佈局,所以鍵【Y】映射到「F」。所以如果我在我的應用程序中按下物理按鍵【Y】,我希望得到「f」,但我沒有;我得到text()=="y"
和key()==89
。與預期回報的xev對比:爲什麼Qt5忽略xkb映射?
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下,程序按預期工作。
如果這可以用最新的Qt重現,我會說:[提交bug報告](http://bugreports.qt-project.org/)。 – peppe
似乎已經有錯誤報告:https://bugreports.qt-project.org/browse/QTBUG-32322。不幸的是,還沒有接受修復。 :-( –