escape 不起作用,xev 检测到奇怪的事件

escape 不起作用,xev 检测到奇怪的事件

我在 EndeavourOS-i3wm 系统中遇到了一个奇怪的问题。退出键根本不起作用。我没有重新配置任何键盘设置或弄乱 xkbmap。当我尝试在 Doom Emacs 中打开文件时出现此问题。我可能同时按下了多个键,但我不完全确定。

Super+ESC 会执行与其绑定的操作,但在大多数软件中,按下 ESC 后什么也不会发生。奇怪的是,它似乎也是特定于应用程序的:ESC 确实会关闭 rofi 菜单,但它在 Rstudio、VIM、EMACS、firefox 中仍然不执行任何操作...

如果我运行 xev,然后按退出键,我得到

FocusOut event, serial 34, synthetic NO, window 0x3000001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  111 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

当我得到这个时,它会随机开始自发工作:

KeyPress event, serial 34, synthetic NO, window 0x3400001,
    root 0x798, subw 0x0, time 983421, (-228,520), root:(1057,532),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
mbLookupString gives 1 bytes: (1b) "
FilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x3400001,
    root 0x798, subw 0x0, time 983529, (-228,520), root:(1057,532),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
FilterEvent returns: False

之后sudo showkey -> ESC,我得到

keycode   1 press
keycode   1 release

跑步setxkbmap没有任何作用。 etc/X11/xorg.conf.d/00-keyboard.conf:

# Read and parsed by systemd-localed. It's probably wise not to edit this file
# manually too freely.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "br"
EndSection

跑步setxkbmap -print -verbose 10让我得到这个:

Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     br
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+br+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+br+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

如果我恢复到以前的时移快照,一切都很好,而且这种情况发生在不同的键盘上,这让我发疯。

是否有可能键盘映射以某种特定的方式被搞砸了,以至于只制动 ESC 键?

** 更新 **

阅读@dirkt的回答后,我发现哪个软件正在窃取ESC键。我在隐藏的暂存器 i3wm 缓冲区中打开了 fromScratch 软件。它非常棒,并且可以作为一个 hacky 解决方案来拥有一个弹出浮动的 fromScratch 应用程序。这是偷逃。杀死它就可以解决问题。

答案1

部分答案(之前至少被问过一次,无论是在这里还是在超级用户上):

FocusOut和事件FocusIn意味着有一些其他应用程序正在运行,正在窃取按键ESC

更改键盘布局根本不会影响这一点。

通常,这由“语言”扩展使用,允许使用现有键盘布局上的组合键键入外语字符。但原则上它可以是任何东西,甚至是你的窗口管理器(我不熟悉)。

因此,您需要找出正在运行的应用程序正在窃取事件。xlsclients或者ps可能有帮助。通过终止或卸载应用程序进行系统调试。只有您可以做到这一点,问题中没有足够的信息来找出这一点。

相关内容