执行命令在启动时交换大写锁定和 ctrl

mat*_*ath 3 keyboard-shortcuts debian xfce xkb

我有点困惑为什么这不能按预期工作。我的目标是映射大写锁定键来控制。我正在使用 debian。为此,我使用以下命令

/usr/bin/setxkbmap -layout "$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')" -option ctrl:nocaps
Run Code Online (Sandbox Code Playgroud)

如果我通过终端执行它,它工作得很好。但是,我希望这在启动或登录时完成,并始终手动执行。我尝试将此命令添加到 XFCE 中的自动启动会话应用程序,并将该命令放入我的~/.profile. 但是,这两个选项似乎都不起作用。我仍然必须手动执行它(在正确映射之后)。我究竟做错了什么?

Ark*_*zyk 9

setxkbmap命令在添加后没有 的原因~/.profile是该文件仅在登录shell 启动时由您的 shell(可能是 bash)读取。在X终端模拟器中不要启动登录 shell。如果您使用setxkbmap,您可以添加到您的~/.bashrcBash但系统上有更好的方法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"
Run Code Online (Sandbox Code Playgroud)

现在按照以下说明运行此命令man 7 keyboard

udevadm trigger --subsystem-match=input --action=change
Run Code Online (Sandbox Code Playgroud)

您甚至不必重新启动lightdm。下次lightdm启动时/etc/default/keyboard将自动应用中的设置。我刚刚在我的Debian 9.4.