过去一周左右,我一直在绞尽脑汁思考一个本该很简单的问题。我想永久在我的笔记本电脑上交换 CapsLock 和 Ctrl 键。我强调永久,因为我知道如何在命令行中轻松临时执行此操作,只需对键盘映射进行微小调整:
setxkbmap -option ctrl:swapcaps
问题是每次启动、从睡眠/休眠模式唤醒或连接 USB 键盘时我都必须执行此操作。这很快就会变得烦人,而且这真的感觉像是应该根据每个用户持续设置的东西。
经过广泛的 Google 搜索和在此论坛上,我得出了以下死胡同:
使用适当的命令设置“启动应用程序”可以用于初始登录,但随后键盘会在睡眠/休眠和 USB 键盘连接时重置。这是我在各处看到的解决方法,但它并不是真正的解决方法。示例:https://ubuntuforums.org/showthread.php?t=2375159&highlight=keyboard+map
我深入研究了 X11/Xorg 配置。在我的主目录中创建任何版本的都没有效果
.x<something>
(例如~/.xinitrc
,,,)~/.Xkbmap
~/.Xmodmap
~/.profile
- 尝试放置脚本
/etc/X11/xorg.conf.d/
但也没有效果。 - 我没有
/etc/X11/xorg.conf
文件,也不想生成文件。另外,我宁愿不设置跨用户通用且无法跨设备移植的设置。上面的方法似乎不起作用,因为 gdm3 接管了 Xsession 生成,并且可能涉及 Wayland(尽管我已确认我的用户会话是 X11 而不是 Wayland)。我查看了文件/etc/gdm3/Xsession
并确认它确实提供了~/.x<something>
文件,但这些设置必须在某个时候被覆盖。
我也遇到过这个答案,但我不能确定它是否会永久地重新映射,而且这似乎是一种更为复杂的方法来实现我上面用一行代码实现的功能。
有人能看透这个沼泽吗?Ubuntu 的桌面/显示管理器情况似乎一团糟,没有明确的文档。
我的系统:5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
答案1
为什么不简单地编辑/etc/default/keyboard
文件并包含以下行:
XKBOPTIONS="ctrl:swapcaps"
编辑:
用户特定的等效项将是:
安装
gnome-tweaks
sudo apt install gnome-tweaks
打开调整
导航键盘和鼠标->附加布局选项->控制位置
选择交换 Ctrl 和 Caps Lock
编辑二:
后者可以通过命令行方式实现:
gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swapcaps']"