在我的应用程序中,我想使用组合键<Ctrl><Shift><#>
检查GTK key_press事件。
我的代码:(在这种情况下,Python,但问题是与语言无关,我猜)
def on_key_press(self, widget, event):
if ((event.keyval == Gdk.KEY_numbersign) \ # The problem
and (event.state & Gdk.ModifierType.SHIFT_MASK) \
and (event.state & Gdk.ModifierType.CONTROL_MASK)):
dosomethingamazing()
Gtk处理按键的方式,实际的键(例如&#34; a&#34;)和shift键组合成一个大写的A.所以当QWERTZ布局上的numberign键被替换为撇号键时按下shift键。
此组合的event.keyval是39(撇号),而不是35(numbersign)。
因此,对于<Ctrl><Shift><#>
,我需要检查numberign的大写等价物,而不是在不同的键盘布局上可能有所不同的numbersign,因此我无法对其进行硬编码。
问题如下:
>>> Gdk.keyval_to_upper(35) # 35 is the Key Value for numbersign
35
>>> Gdk.keyval_is_upper(35)
True
>>> Gdk.keyval_is_lower(35)
True
我无法使用这些函数获得大写等效项。有关如何获取<shift><whateverkey>
组合结果的任何想法,其中keyval_to_upper()
失败了吗?