是否可以使用而不是交换左键Shift和左键?CTRLsetxkbmap
xmodmap
编辑
我已经切换到氟西汀,与我的键盘布局和自定义键盘映射相比,它在各个方面都比 IBus 效果更好。我强烈推荐它。
答案1
xmodmap
已过时;所以确实应该用xkb
工具来完成。
默认情况下,X11 文件中似乎不包含您想要的交换;所以你必须自己写。
这一页https://web.archive.org/web/20170825051821/http://madduck.net/docs/extending-xkb/帮助我理解并找到一种方法来做到这一点。
创建一个文件~/.xkb/keymap/mykbd
来放置 的输出setxkbmap
,它将作为您的基本键盘定义;例如:
setxkbmap -print > ~/.xkb/keymap/mykbd
然后,创建一个符号文件来定义您的密钥交换,例如将其放入~/.xkb/symbols/myswap
在那里,输入以下行:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
然后,编辑该~/.xkb/keymap/mykbd
文件,并将xkb_symbols
行更改为添加
+myswap(swap_l_shift_ctrl)
最后,您可以加载它xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
(不能使用“~”作为-I
参数)。
它可能会发出很多关于某些罕见键的未定义符号的警告,但您可以忽略它们(例如,将错误重定向到 dave: 2> /dev/null
)。
如果您希望能够轻松地在普通 ctrl/shift 和倒置 ctrl/shift 之间切换;只需在另一个文件下创建~/.xkb/keymap/
,无需额外的“myswap”选项,然后使用xkbcomp
.您可以制作两个小脚本来加载它们。
答案2
我遇到了一些映射LALT
到Control_L
使用的问题巴勃罗的解决方案,看来您modifier_map
还需要设置选项。
我从/usr/share/X11/xkb/symbols/altwin
- 查找xkb_symbols "ctrl_alt_win"
- 复制了一个模板并对其进行了修改以设置以下更改:
- LALT 键控制**
- LWIN 键与 Alt 键
- MENU 键至 Windows 键
最终~/.xkb/symbols/myswap
文件是:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
我还添加了-w0
命令xkbcomp
以避免打开新 shell 时出现任何警告输出。
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
**经常在 Mac 和 Linux 之间切换,我喜欢在 Linux 上有两个控制键来近似 Mac 键盘以增强我的肌肉记忆。