在我的应用程序中,我想使用组合键检查GTK key_press事件<Ctrl><Shift><#>。
我的代码:(在这种情况下是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()
Run Code Online (Sandbox Code Playgroud)
Gtk处理按键的方式,实际按键(例如“ a”)和Shift键组合为大写字母A。因此,当按下Shift键时,数字符号键将替换为QWERTZ布局上的撇号键。此组合的event.keyval是39(撇号),而不是35(数字符号)。因此,因为<Ctrl><Shift><#>我需要检查数字符号(而不是数字符号)的大写形式,这在不同的键盘布局上可能会有所不同,因此我无法对其进行硬编码。
问题如下:
>>> 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
Run Code Online (Sandbox Code Playgroud)
我无法使用这些功能获得大写字母。关于如何获取<shift><whateverkey>组合结果的任何想法,哪里keyval_to_upper()失败?