将 Caps Lock 重新映射到 Control 和 Escape(不是通常的方式)

use*_*737 34 keyboard xmodmap

我知道如何使用 xmodmap 重新映射 Caps 锁定键,使其充当 Control 键或 Escape 键。我想将这两个功能结合如下:

当我按下然后松开 Caps 锁定键时,它会发送 Escape。当我按住 Caps lock 并按下另一个键(比如 A)时,它会发送 Control-A。

是否有一些 xkb、xmodmap 和其他东西的组合可以使 Caps lock 在 X 中以这种方式运行?

我在 Macbook Air 3,1 上使用 Ubuntu Precise。

小智 44

我在我的 Mac 上有这个设置,我试图为 Ubuntu 找到一种方法,但不幸的是。

嗯,它现在正在工作。感谢 tungd 为我推荐xcape. 我所做的非常简单明了。

  1. 系统偏好设置下键盘布局? 选项……Ctrl 键位置,我检查Caps Lock 为 Ctrl

  2. 在终端运行中:

    xcape -e 'Control_L=Escape' 
    
    Run Code Online (Sandbox Code Playgroud)

完成,在使用时像修饰符一样Caps Lock工作,CtrlEsc单独按下时工作(有几百毫秒的轻微延迟,如xcape自述文件中所述,因此它仍然不如使用 KeyRemap4MacBook 的 Mac 解决方案最佳。)

  • 我使用 `gnome-tweak-tool` 将 `Caps Lock` 映射到 `Ctrl`,因为 Ubuntu 14.04 上的 `System Settings` 中没有 `Keyboard layout`。然后`xcape -e 'Control_L=Escape'` 不起作用,但是在使用`xcape -d` 后我发现`Caps Lock` 生成键码66 并分别重新映射:`xcape -e '#66=Escape '`。 (5认同)
  • 根据 [this blog post](http://www.economyofeffort.com/2014/08/11/beyond-ctrl-remap-make-that-c​​aps-lock-key-useful/),可以这样做单独使用 xcape:`setxkbmap -option 'caps:ctrl_modifier'` `xcape -e 'Caps_Lock=Escape'` `setxkbmap -option 'caps:ctrl_modifier'` `xcape -e 'Caps_Lock=Escape;Control_L=Escape;Control_R=Escape '` (4认同)

小智 8

我也在找这个 一周前,我发现自己使用了部分解决方案xmodmap

add Control = Caps_Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
Run Code Online (Sandbox Code Playgroud)

这当然不能完美地工作,当我按下 CapsLock 时,它有效地同时发送了 Escape 和 Ctrl,但我对它感到满意一段时间。

最后我找到了这个小工具https://github.com/alols/xcape。所以现在我可以简单地将 CapsLock 重新映射到 Ctrl 并让 xcape 完成它的工作。


Sea*_*ene 8

安装 xcape

sudo apt-get install xcape
Run Code Online (Sandbox Code Playgroud)

将这两行添加到您的 ~/.bashrc

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'?
/usr/bin/xcape -e 'Caps_Lock=Escape' -t 100
Run Code Online (Sandbox Code Playgroud)

注意部分-t 100,如果你不设置它,如果你使用vim,你可能会注意到Esc的延迟。


dra*_*788 7

编辑:为大多数智能(较新)显示管理器修复了此问题。

根据 Louis 和 Sergiy 的评论,我提出了这个解决方案,该解决方案适用于带有 LightDM 和 Unity 的 Ubuntu 16.04(Xenial)。

我将以下代码行放入.xprofile我的主目录中的文件中。

setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &
Run Code Online (Sandbox Code Playgroud)

尾随 & 将 xcape 命令置于后台,以便它不会阻止您的会话。setxkbmap 立即进行更改。

谢尔盖:

我使用 gnome-tweak-tool 将 Caps Lock 映射到 Ctrl,因为 Ubuntu 14.04 的系统设置中没有键盘布局。然后 xcape -e 'Control_L=Escape' 不起作用,但是在使用 xcape -d 之后我发现 Caps Lock 生成键码 66 并分别重新映射:xcape -e '#66=Escape'。– Sergiy Byelozyorov 2014 年 9 月 4 日 10:08

路易斯:

根据这篇博文,可以单独使用 xcape 执行此操作: setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape' setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape;Control_L= Escape;Control_R=Escape' – Louis Simoneau 2015 年 8 月 4 日 10:06


gre*_*een -4

您可以执行第一个操作(映射Caps LockEsc),但不能执行第二个操作。

简单解释: Caps Lock只是没有设计成在按下时执行某些操作。

详细说明: 密钥有很多种类型。其中两个是修改键锁定键

Caps Lock锁定键,而CtrlAlt、 和 等键Shift修饰键

从名称中可以明显看出,修改键修改下一个按下的键的功能,而锁定键充当切换开关来打开或关闭某些特定功能。

现在,由于 Caps Lock Lock Key ,因此如果不将其映射到Modifier Key,就无法使其表现得像Modifier Key 。 Caps Lock其本身不能用作修饰键

  • 正如下面未接受的答案一样,您当然可以使用许多实用程序(例如 xcape 或 At-Home-Modifier)来完成第二部分。 (8认同)