当前位置: 首页>>技术教程>>正文


keyboard – 重新映射大写锁定以控制和退出(不是通常的方式)

,

问题描述

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

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

是否存在xkb,xmodmap和其他一些可能使Caps lock在X中以这种方式表现的组合?

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

最佳方案

您可以执行第一个操作(将Caps Lock映射到Esc),但是不能执行第二个操作。

简单说明:Caps Lock并非旨在按时执行某些操作。

详细说明:键的类型很多。其中两个是Modifier KeysLock Keys

Caps Lock是锁定键,而CtrlAltShift等键是修饰键。

从它们的名称可以明显看出,修饰键可修改下一个按下的键的功能,而锁定键则用作切换开关以打开或关闭某些特定功能。

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

次佳方案

我在Mac上安装了此设置,并且试图找到一种没有运气的Ubuntu方法。

好吧,现在正在工作。感谢tungd将我回复到xcape。我所做的确实很简单明了。

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

  2. xcape -e ‘Control_L=Escape’

完成后,大写锁定在用作修饰符时用作Ctrl,而在单独按下时用作Esc(如xcape自述文件中所述,有几百毫秒的轻微延迟,因此它仍不如使用Mac的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立即进行更改。

Sergiy:

I’ve used gnome-tweak-tool to map Caps Lock to Ctrl as there is no Keyboard layout in System Settings on Ubuntu 14.04. Then xcape -e ‘Control_L=Escape’ didn’t work, but after using xcape -d I’ve discovered that Caps Lock generates keycode 66 and remapped it respectively: xcape -e ‘#66=Escape’. – Sergiy Byelozyorov Sep 4 ’14 at 10:08

路易斯:

As per this blog post, it is possible to do this with xcape alone: 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 Aug 4 ’15 at 10:06

第五种方案

安装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的延迟。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9890.html,未经允许,请勿转载。