我已经看到很多关于这个问题的问题,但它们似乎都重映射按键,而不是实际的 macOS 行为。
我的主要用例是“拆分”快捷方式:例如,我希望使用Super+C复制文本,使用Ctrl+C向当前程序发送 SIGINT。
在这种情况下,简单的重新映射或交换Super和Ctrl将不起作用。
我发现 Mac 的行为非常实用,因为所有最常见的快捷键都使用Super,而著名的复制捷径不重叠著名的信号情报捷径。
大多数终端应用程序都会对Ctrl-* 快捷键做出反应,而且它们大多与“标准”快捷键重叠。在 GNOME 终端中,我们必须按Ctrl+ Shift+C才能复制文本,而在 Firefox 等其他应用程序中,则使用Ctrl+ 。与+C相比,这相当麻烦且不一致。SuperC
答案1
答案2
您可以使用 xmodmap 命令实现:
remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L
将以上行保存为super_as_ctrl.xmodmap
。通过执行进行测试
xmodmap super_as_ctrl.xmodmap
要使更改永久生效(重新登录/重启后仍然生效),只需将文件重命名为主.Xmodmap
文件夹即可。
(在 Ubuntu 14.x 上测试)
PS:您也可以使用其他窗口按钮。不确定该怎么做。
答案3
要创建新的快捷方式并删除旧的快捷方式,只需转到系统设置>>键盘>>快捷键。您可以在那里查看所有快捷方式,编辑、删除它以及创建新的快捷方式。
答案4
以下内容位于我的 中$HOME/.uxSwapCapsLock-and-Ctrl
。每当我登录并在给定系统上的 shell 内启动交互式会话时,它都会有效地交换任何 Linux 系统上使用的任何 shell 的 CapsLock 和 Ctrl 键的功能。我相信您可以了解您尝试修改的相关键名,并通过 xmodmap 引用这些键名,以获得所需的功能。每次我登录并通过 .profile 进行交互式会话时,都会启动此代码,但出于此目的,它位于 .ps1 文件中。
#!bin/bash
xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_L"
xmodmap -e "keysym Control_L = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Lock = Caps_Lock"
xmodmap -e "add Control = Control_L"
#End script
这是为了进行交换而进行的 .profile 检查:
if [ -f "$HOME/.uxSwapCapsLock-and-Ctrl" ]; then
. $HOME/.uxSwapCapsLock-and-Ctrl
fi