我想将左 alt 键用作 Shift 键,但重新映射的尝试失败了。使用以下 .Xmodmap 文件(我从我的文件中获取了十六进制代码keysymdef.h
以消除此可能的错误源):
!0xffe9 = Alt_L
remove mod1 = 0xffe9
!0xffe1 = Shift_L
keycode 64 = 0xffe1
add shift = 0xffe1
并且运行
xmodmap ./.Xmodmap
运行正常。当我运行xev
并按下左 Alt 键时,我得到:
KeyPress event, serial 33, synthetic NO, window 0x3e00001,
root 0x2af, subw 0x0, time 136342090, (2225,316), root:(2253,374),
state 0x10, keycode 64 (keysym 0xffe1, Shift_L), same_screen YES,
XKeysymToKeycode returns keycode: 50
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
这似乎是正确的。运行xmodmap -p
也给了我看似不错的输出:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e), Shift_L (0x40)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
不过,我不能使用 alt 键来切换字母。它仍然像以前一样工作。我正在运行 Ubuntu 18.04。
我不知道为什么。其他命令工作正常,例如xmodmap -e "keycode 38 = 0x33"
正确地将我的“a”键重新映射到“3”。
答案1
升级到 KUbuntu 20.04 后,运行相同的命令现在可以正常工作。问题可能出在 Ubuntu 18 上,也可能是我持有的一些损坏的软件包造成的。