GTK:检查KeyEvent包括Shift键

5 gtk gdk

在我的应用程序中,我想使用组合键检查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()失败?