使用 xmodmap 返回“bad keysym”

使用 xmodmap 返回“bad keysym”

我将按如下方式重新映射我的键盘:

xmodmap -e "keycode 77= w W {" 
xmodmap -e "keycode 78= x X }"

xmodmap -e "keycode 24= a A @"
xmodmap -e "keycode 49= ` & 2"
xmodmap -e "keycode 65= space space _"

xmodmap -e "keycode 111= Up Up Down"
xmodmap -e "keycode 113= Left Left Right"


xmodmap -e "keycode 51= * \" \' "

xmodmap -e "keycode 113= Left Left Right"
xmodmap -e "keycode 113= Left Left Right"

但是 xmodmap 返回给我:

xmodmap: commandline:1: 键符列表中的键符名称“XF86XK_{”不正确

我在网上看到我应该首先删除密钥,但我想知道这是否会产生一些错误,所以在尝试移动之前,我会向社区询问一些建议,

谢谢

答案1

关于你提到的错误,使用xmodmap -e "keycode 77 = w W braceleft"

从 xev 命令获取键符。

KeyPress event, serial 37, synthetic NO, window 0x2200001,
    root 0x195, subw 0x0, time 470232, (535,249), root:(623,392),
    state 0x2001, keycode 34 (keysym 0x7b, braceleft), same_screen YES,
    XKeysymToKeycode returns keycode: 16
    XLookupString gives 1 bytes: (7b) "{"
    XmbLookupString gives 1 bytes: (7b) "{"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x2200001,
    root 0x195, subw 0x0, time 470424, (535,249), root:(623,392),
    state 0x2001, keycode 34 (keysym 0x7b, braceleft), same_screen YES,
    XKeysymToKeycode returns keycode: 16
    XLookupString gives 1 bytes: (7b) "{"
    XFilterEvent returns: False

如果我理解正确的话,你的密钥代码 77 是Num_Lock

因此,您需要将Num_Lock密钥w W设为braceleft

为了达成这个..

  1. xmodmap -e "remove Mod2 = Num_Lock"这将从 Num_Lock 键中删除修饰符 Num_Lock。

注意:将 Num_Lock 键符分配给任何其他键码,否则您将失去 Num_Lock。(此阶段不涉及此内容)

  1. xmodmap -e "keycode 77 = NoSymbol NoSymbol w W braceleft"

您不需要担心删除修改器,因为上述两个更改在注销或重新启动后不会保留。

交换 Num_Lock 和 braceleft 键符号的示例

$ xmodmap -e "remove Mod2 = Num_Lock"
$ xmodmap -e "keycode 34 = bracketleft Num_Lock"
$ xmodmap -e "add Mod2 = Num_Lock"
$ xmodmap -e "keycode 77 = braceleft"
$

相关内容