我正在执行一项任务,该任务花费的时间比预期的要长,因为xmodmap
无法与其他命令(例如setxkbmap
等等)结合使用。我的目标是将Right_Control
密钥从“分配”control
更改mod3
为“按照xmodmap
术语”
感谢这篇文章,我能够将其分配给该键:使用 setxkbmap 交换 Left Shift 和 Left Control
问题是现在我仍然将 Right_Control 分配给 "control" ,我需要删除这个分配
总结一下我所遵循的步骤:
(请注意,我之前使用 fa 作为我的自定义布局,我已经在 /usr/shareX11/xkb/symbols/fa 等中有文件...)
mkdir -p ~/.xkb/symbols/keymap
mkdir -p ~/.xkb/symbols/
sudo vi ~/.xkb/symbols/assigningmod3
包括
partial modifier_keys
xkb_symbols "assign_rctl_to_mod3" {
modifier_map Mod3 { <RCTL> };
};
然后
setxkbmap -print > ~/.xkb/keymap/fa
sudo vi ~/.xkb/keymap/fa
并添加了下划线部分
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+fa+inet(evdev)+assigningmod3(assign_rctl_to_mod3)" };
xkb_geometry { include "pc(pc105)" }; ----------------------------------
};
然后将此行包含在我的 .xinitrc 中
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/fa $DISPLAY 2> /dev/null
现在重新启动我的 X11Server 现在的问题是,当我检查xmodmap
我的分配时
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
----------------
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Control_R (0x69)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
正如您所看到的,我已经强调了仍需要删除的分配,但另一方面mod3
已正确分配。如果我跟踪我可能需要修改的位置,则将其修改为/usr/share/X11/xkb/symbols/level3
第 92 行的键的原始分配
xkb_symbols "switch" {
key <RCTL> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
include "level3(modifier_mapping)"
};
但我真的没有信心去调整那里的任何东西。你知道如何分配吗?
答案1
xmodmap
尽管在调用加载整个模板文件时您可能会遇到一些问题。通过使用xmodmap
on删除此键分配是完全可以的,.xinitrc
只需在下面xkbcomp
的调用中添加以下行即可
/usr/bin/xmodmap -e 'remove control = Control_R'