我已经看到很多关于如何重新映射键的问题,但不知何故我的问题是它从不重新映射永久。
这是我的~/bootstrap-custom.sh
#!/bin/sh
# remaps Caps Lock to Ctrl
/usr/bin/setxkbmap -option "ctrl:nocaps"
我已将其添加source ~/boostrap-custom.sh
到我的启动应用程序中。
映射工作正常。
然而:
- 映射不会在启动时加载,或者至少会被启动应用程序后运行的某些程序覆盖。
- 每次我插入键盘时,映射似乎都会被遗忘。
有什么方法可以使映射永久存在,但保持相同的方法(xkbmap)?
答案1
这可能只是一个部分解决方案(老实说,我不知道它对键盘拔出/重新插入有何反应),但由于您已经有一个可以执行您想要的操作的脚本,所以这可能已经足够接近了。
启动时,X11 会执行几个特殊程序(如果它们存在于系统中)。就我们的目的而言,最有趣的可能是〜/ .xsession,它是在您通过显示管理器登录后执行的,这是当今图形环境的正常设置。(以前您通常登录到 shell,然后运行命令startx
来启动 X;如果是这样,您使用~/.xinitrc目的相同。
我们可以利用它来虚拟执行命令,无论您使用什么显示管理器(gdm、gdm3、kdm 等)和桌面环境(GNOME、Xfce、KDE 等)。
- 创建一个名为的文件
.xsession
并将其放在您的主目录中。 - 添加以下内容:
#!/bin/bash
/usr/bin/setxkbmap -option "ctrl:nocaps"
- 保存并将文件设置为模式 755(
chmod 755 ~/.xsession
) - 注销并重新登录,或重新启动
这应该会在登录时设置您的键盘映射。它还应该执行得足够晚,以便 setxkbmap 能够真正发挥作用。
如果由于某种原因此方法无法奏效,登录到文本终端(Ctrl++ for any F2 in [F1..F6] 应该是你的朋友)并通过发出命令来删除该Alt文件。F2rm ~/.xsession
作为参考,这是我的 ~/.xsession,它以模式 755 将我带入 Xfce4 会话(这可以作为“已知的良好”示例):
#!/bin/sh
xscreensaver &
exec xfce4-session
最后的指令exec
用给定的命令替换脚本本身。任何不能立即退出的指令都需要在后台运行,因此&
。(我希望 setxkbmap 几乎立即退出,因此不需要在后台运行。)
答案2
您可以尝试将 shell 代码放入您的.profile
文件中,或者更复杂的版本是使用 XKB。这里是一个快速概览。
如需完整概述,请尝试此arch wiki 文章。
答案3
显然这是一个错误。
“我在 arch linux 中使用 xfce,我所做的就是编辑 ~/.config/xfce4/panel/xkb-plugin-##.rc 并添加新行或某些内容,它在某些会话中有效。另一个临时修复可能是 #31 建议的。
- 在插件中设置所需的选项
- 将 ~/.config/xfce4/panel/xkb-plugin-##.rc 复制到其他文件,例如 ~/.config/xfce4/panel/goodxkb.rc
将此命令添加到启动作业:
sh -c "cp ~/.config/xfce4/panel/goodxkb.rc ~/.config/xfce4/panel/xkb-plugin-##.rc && pkill xkb" (将 ## 更改为您的数字)
pkill 部分对于重新加载插件及其配置至关重要。”
答案4
编辑 /etc/rc.local 并添加脚本的路径。确保是可执行的并且具有 #!/bin/狂欢在顶部。不要重新启动计算机,将其关闭并再次打开。这应该有效。