fcitx / fcitx5

maybe a new fcitx.
1.61k stars 118 forks source link

Esc键被接管 #634

Closed JustinWuCN closed 1 year ago

JustinWuCN commented 1 year ago

Describe the bug 电脑的esc键会突然失效,导致vi无法退出编辑模式. 但按ctl+esc键可以调出系统菜单.

使用xev查看键值,按esc键时会显示:

MotionNotify event, serial 48, synthetic NO, window 0x3400001,
    root 0x55a, subw 0x3400002, time 103743610, (54,19), root:(56,42),
    state 0x0, is_hint 0, same_screen YES

EnterNotify event, serial 48, synthetic NO, window 0x3400001,
    root 0x55a, subw 0x0, time 103743618, (94,43), root:(96,66),
    mode NotifyNormal, detail NotifyInferior, same_screen YES,
    focus YES, state 0

KeymapNotify event, serial 48, synthetic NO, window 0x0,
    keys:  2   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   

从网上搜索到的资料,大多说与快捷键有关. https://unix.stackexchange.com/questions/198416/missing-keypress-event https://forums.bunsenlabs.org/viewtopic.php?id=6975

但是查看lxhotkey程序,里面并没有增加跟esc相关的快捷键.

这个问题从9月中开始出现.出现问题后我逐次更换软件,尝试找出是哪个软件拦截了esc键. 10月25日把fcitx换成ibus.开机到现在,esc键还能正常工作. 因此,我猜测是fcitx导致.

我使用的是archlinux+lxde+fcitx5,会定时更新到新版本.如果是fcitx的问题,应该是在9月中的一次更新引入的问题.

JustinWuCN commented 1 year ago

使用的是五笔输入法.

wengxt commented 1 year ago

几个问题: 1、你在遇见这个问题的时候,切换输入法是否能恢复? 2、切换到别的程序再切换回来,是否能恢复?

JustinWuCN commented 1 year ago

恢复不了.我把输入法重启还是不能恢复. 好像是系统里的某些设置被改了.

wengxt commented 1 year ago

你是否有过去残留的 ~/.Xmodmap 配置一类?或者曾经配置过交换 esc / ctrl 之类的配置?

另外请贴一下 fcitx5-diagnose 的输出 (在 fcitx5 运行时)

JustinWuCN commented 1 year ago

.Xmodmap我只交换了Caps和Ctrl键.

最后一行,是出现问题后我把右Alt映射为Esc键所新增加.

remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

keycode 108 = Escape NoSymbol Escape

fcitx5-diagnose晚上附上.

wengxt commented 1 year ago

我怀疑你有什么 xkb option 或者你的 xmodmap 本身产生了问题。另外并不建议使用 xmodmap,如果同等功能可以用 xkb option 来实现。

例如 KDE 可以这样配置

图片

JustinWuCN commented 1 year ago

sorry. 不是fcitx的问题.今天在使用ibus的情况下,也出现了esc键失效的情况. 我还要再查查看是哪个应用导致的.

JustinWuCN commented 1 year ago

之前用gnome时,可以有窗口设置Ctrl和Caps的交换.但是换成LXDE后,找不到可以设置的窗口.只能用xmodmap来设置了.

wengxt commented 1 year ago

之前用gnome时,可以有窗口设置Ctrl和Caps的交换.但是换成LXDE后,找不到可以设置的窗口.只能用xmodmap来设置了.

你可以找个对应的地方执行 setxkbmap -option ....