我有点困惑为什么这没有按预期工作。我的目标是映射大写锁定键来控制。我正在使用Debian。为此,我使用以下命令
/usr/bin/setxkbmap -layout "$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')" -option ctrl:nocaps
如果我通过终端执行它,效果非常好。但是,我希望在启动或登录时完成此操作,并且始终手动执行。我尝试将此命令添加到 XFCE 中的自动启动会话应用程序中,并将该命令放入我的~/.profile
.然而,这两种选择似乎都不起作用。我仍然必须手动执行它(在正确映射之后)。我究竟做错了什么?
答案1
setxkbmap
该命令添加后没有执行的 原因~/.profile
是,只有在以下情况下,您的 shell(可能是 bash)才会读取该文件:登录外壳已启动。在X
终端模拟器中不要启动登录 shell。如果您使用,则添加setxkbmap
到您的,但系统上有更好的方法可用- 修改您的部分,例如:~/.bashrc
Bash
debian
XKBOPTIONS
/etc/default/keyboard
root@debian:/home/ja# cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"
BACKSPACE="guess"
现在运行此命令,如下所述man 7 keyboard
:
udevadm trigger --subsystem-match=input --action=change
您甚至不必重新启动lightdm
。下次启动时将自动应用lightdm
设置。/etc/default/keyboard
我刚刚在我的Debian 9.4
.
答案2
我认为更好的方法是在您的主目录中创建一个文件 .xsessionrc 。
cat .xsessionrc
setxkbmap -option ctrl:nocaps
每次会话开始时都会读取此文件。
这样,只有您的会话受到影响。
其他用户不明白。
在 Debian 和 NetBSD 上没问题。