我全新安装了 Xubuntu 22.04,但遇到了一些问题。我使用Super+Letter键定义了一些自定义键盘快捷键,但其中一些不起作用。我之前使用的是 Xubuntu 16.04,没有遇到这个问题。
问题
举一个简单的例子,Super+W快捷键不会启动我的网络浏览器:如果焦点窗口是终端,它会打印w
(就像我只按下了 一样w)。
- 重要细节:我有一个外部 AZERTY 键盘(所以w键位于左键的正上方Super)。
- 有趣的细节 1:如果我更改与此快捷方式关联的命令,它会运行良好......直到下次重新启动。
- 有趣的细节 2:一些带有Super+ 的快捷方式Letter可以使用,具体取决于Letter我使用的键。
受此问题影响的信件
为了更全面地了解情况,我使用键盘上的所有字母测试了快捷键,并查看了终端窗口以查看是否打印了字母。以下是打印的字母(因此带有Super+ 这些键的快捷键不起作用):
-----yuio-
q---ghjk-m
wxcvbn
我将它们表示在键盘的行上(3 行字母),这-
意味着相应的字母不会打印任何内容(因此使用这些字母的快捷方式可以工作)。
如果有助于理解,以下是起作用的字母(我的终端窗口中没有打印字母):
azert----p
-sdf----l-
------
更多细节
我试着看看会发生什么,然后发现了xev
命令。这是按下+
的结果(快捷方式不起作用):xev -event keyboard
SuperW
KeyPress event, serial 28, synthetic NO, window 0x4c00001,
root 0x6c9, subw 0x0, time 7273892, (165,-11), root:(1036,524),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x4c00001,
root 0x6c9, subw 0x0, time 7274156, (165,-11), root:(1036,524),
state 0x50, keycode 52 (keysym 0x77, w), same_screen YES,
XLookupString gives 1 bytes: (77) "w"
XmbLookupString gives 1 bytes: (77) "w"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x4c00001,
root 0x6c9, subw 0x0, time 7274244, (165,-11), root:(1036,524),
state 0x50, keycode 52 (keysym 0x77, w), same_screen YES,
XLookupString gives 1 bytes: (77) "w"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x4c00001,
root 0x6c9, subw 0x0, time 7274396, (165,-11), root:(1036,524),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
xev -event keyboard
以下是和Super+的结果W的重新定义执行的命令后(快捷方式有效):
KeyPress event, serial 28, synthetic NO, window 0x5000001,
root 0x6c9, subw 0x0, time 8245188, (166,-9), root:(1037,526),
state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeymapNotify event, serial 28, synthetic NO, window 0x0,
keys: 4294967241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 28, synthetic NO, window 0x5000001,
root 0x6c9, subw 0x0, time 8245796, (166,-9), root:(1037,526),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
我的分析
我猜系统无法处理某些Super+Letter键组合。重新定义快捷键后,它就可以正常工作了。所以有些不同,但我不知道是什么(而且这不是永久性的,因为问题在重启后再次出现)。
我清楚地看到事件keymapNotify
没有触发,但我不知道为什么(我也不知道它是如何工作的)。
我希望有人能帮助我。如果您需要更多详细信息,请随时询问。