重新映射大写锁定以控制和逃生(不是通常的方式)

我知道如何使用xmodmap重新映射大写锁定键,使其充当Control键或Escape键。 我想结合两个function如下:

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

是否有一些xkb,xmodmap和其他可能使Caps锁定在X中表现的组合?

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

你可以做第一个(将Caps Lock映射到Esc )但你不能做第二个。

简单说明: Caps Lock不是设计用于按下时执行某些操作。

精心解释:键有很多种类。 其中两个是修改键和锁定键 。

Caps Lock是一个锁定键,CtrlAltShift修饰键

从他们的名字可以看出, 修改键可以修改按下的下一个键的function,而锁定键可以作为切换开关来打开或关闭某个特定的function。

现在,由于 Caps Lock 是一个锁定键 ,因此如果不将其映射到一个锁定键 ,就不能使它像一个修改键 Caps Lock本身不能用作修饰键

我在Mac上有这个设置,我试图为Ubuntu寻找一种没有运气的方法。

好吧,它现在正在运作。 感谢tungd把我抱到xcape 。 我所做的事情非常简单明了。

  1. 在系统偏好设置>键盘布局>选项…> Ctrl键位置下,我选中’Caps Lock as Ctrl’。

  2. xcape -e’Control_L = Escape’

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

我也在寻找这个。 截至一周前,我发现自己是使用xmodmap的部分解决方案:

 add Control = Caps_Lock remove Lock = Caps_Lock keysym Caps_Lock = Escape 

这当然不能很好地工作,它在我按CapsLock的同时有效地同时发送Escape和Ctrl,但我很高兴它有一段时间了。

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

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

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

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

 setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' & 

尾随&将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’caple:ctrl_modifier’xcape -e’Paps_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

我专门为此目的在C中构建了一个工具,它克服了xcape / xmodmap解决方案的许多问题 :

安装xcape

 sudo apt-get install xcape 

~/.bashrc添加两行

 /usr/bin/setxkbmap -option 'caps:ctrl_modifier'⏎ /usr/bin/xcape -e 'Caps_Lock=Escape' -t 100 

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