我想重新映射大写锁定以在X11中转义(即,按下物理大写锁定按钮将被应用程序解释为esc,而esc的行为不会改变)。解决方案必须在X重新启动后仍然存在。xmodmap和setxkbmap是可接受的解决方案(与类似程序一样)。我不想处理GUI,因为我希望解决方案具有可移植性,并且是我的点文件的一部分。如果我缺少更好/更轻松/更明显的解决方案,请告诉我,不过请注意,我没有使用DE(试用i3wm)。
到目前为止,我尝试使用xmodmap和setxkbmap效果不佳。
这是我尝试使用xmodmap的尝试:
# ~/.xinitrc
xmodmap ~/.xmodmap
和
# ~/.xmodmap
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
$ xmodmap ~/.xmodmap
从命令行运行的工作,并做我想要的。问题是,每次x重新启动时都会重置。那就是我期望xinitrc进入的地方-难道不是每次x启动并运行xmodmap命令时都加载它吗?如果该命令有效,为什么从文件中读取后它什么也不做?
我用setxkbmap尝试了几件事,但都没有用。下面的两次尝试分别在文件中。
# ~/.xinitrc
setxkbmap -option caps:esc # attempt 1
setxkbmap -option esc:nocaps # attempt 2
这两个命令都没有从命令行执行任何可察觉的操作,因此我假设我把命令弄错了。我喜欢这种解决方案的想法,因为它是单线的,并且在其他文件中不需要任何内容。如果可以的话。
.xinitrc是使用错误的文件吗?我知道startx正在从〜/ .xinitrc加载。
我要求可能的解决方案包含整个文件,而不是仅包含一行(如果文件中需要多个),因此我不会弄乱某些中间步骤。例如,如果我需要.xinitrc中的某些内容和.xcapsrebind中的某些内容,请同时显示文件和所有必需的内容(我也可以处理被告知将某些内容追加到末尾的操作,但是如果需要&或类似内容,请告诉我)。
xmodmap
中.xinitrc
应该工作。是我做的 也许映射一些不寻常的东西,以确保在启动x时它确实在运行?另外,您使用什么窗口管理器/桌面环境?KDE会定期“纠正”我的键盘映射,而无需告诉我。也许检查您的桌面设置,以确保没有任何东西在xmodmap
背后运行。
~/.xinitrc
不会被淘汰。我正在使用i3wm,现在没有DE,尽管我尝试时在万神殿也发生了同样的事情。据我所知,i3不会弄乱xinitrc或加载它自己(但我是菜鸟,所以我知道什么?)。
Option "XkbOptions" "caps:escape"
在X
键盘配置文件中,例如/etc/X11/xorg.conf.d/10-keyboard.conf
.xinitrc
:setxkbmap -option caps:escape