为什么 setxkbmap 将键与其他键组合在一起?

l0b*_*0b0 7 xorg keyboard xkb

我刚刚找到了一个手动设置撰写键的提示:

setxkbmap -option compose:caps
Run Code Online (Sandbox Code Playgroud)

不幸的是,在运行这几次按键之后,就像按下了撰写键一样。例如,要获得波浪号,我现在必须按Shift-~ 两次,而且我无法再弄清楚如何获得单引号或双引号 - 当我按该键两次(按 Caps Lock)时,我得到一个单引号´(没有Shift) 或¨(with Shift) 字符。

$ setxkbmap -print 
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us(dvorak-intl)+inet(evdev)+level3(ralt_switch)+compose(caps)"  };
    xkb_geometry  { include "pc(pc105)" };
};
Run Code Online (Sandbox Code Playgroud)

将撰写键设置为更流行的Right-Alt没有帮助 - 结果与以下设置相同:

$ setxkbmap -print 
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us(dvorak-intl)+inet(evdev)+level3(ralt_switch)+compose(ralt)"  };
    xkb_geometry  { include "pc(pc105)" };
};
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,即使在禁用组合键后setxkbmap -option,键仍然是乱七八糟的。

在具有 GNOME 3 和类似设置的另一台机器上,它工作得很好(Caps Lock, a,a产生å,而一次按下Shift-~产生~):

$ setxkbmap -print 
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us(dvorak-alt-intl)+ch:2+inet(evdev)+compose(caps)" };
    xkb_geometry  { include "pc(pc105)" };
};
Run Code Online (Sandbox Code Playgroud)

可能是 LXDE 的问题——下周我会测试一下。

l0b*_*0b0 3

事实证明,问题实际上是键盘布局 -切换到英语(德沃夏克替代国际无死键)(XKBVARIANT="dvorak-alt-intl"/etc/default/keyboard)修复了它。

不幸的是,我找不到仅为我的用户设置此功能的方法。