重新映射大写锁定以控制和逃生(不是通常的方式)
我知道如何使用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是一个锁定键,而Ctrl , Alt和Shift等键是修饰键 。
从他们的名字可以看出, 修改键可以修改按下的下一个键的function,而锁定键可以作为切换开关来打开或关闭某个特定的function。
现在,由于 Caps Lock 是一个锁定键 ,因此如果不将其映射到一个锁定键 ,就不能使它像一个修改键 。 Caps Lock本身不能用作修饰键 。
我在Mac上有这个设置,我试图为Ubuntu寻找一种没有运气的方法。
好吧,它现在正在运作。 感谢tungd把我抱到xcape 。 我所做的事情非常简单明了。
-
在系统偏好设置>键盘布局>选项…> Ctrl键位置下,我选中’Caps Lock as Ctrl’。
-
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的延迟。