如何重新映射大写锁定键?

在过去,我曾经使用xmodmap来阻止Caps Lock按钮工作,然后告诉Launchy处理按键操作。 我似乎无法再这样做了。

什么是禁用Caps Lock正常行为的最佳方法,并让它做其他事情?

来自howtogeek.com ,它对任何操作系统都有很好的答案。

对于Linux(包括Ubuntu):

 setxkbmap -option  

其中可以是例如:

  • caps:none – 禁用大写锁定。
  • caps:super大写锁定成为额外的超级 (又名Win键)。
  • caps:ctrl_modifier – Caps Lock成为一个额外的Ctrl
  • caps:numlock – 大写锁定成为额外的Num Lock
  • caps:escape – 大写锁定成为额外的逃脱
  • caps:backspace – 大写锁定成为一个额外的退格
  • caps:swapescape – Caps Lock变为Escape,Escape变为Caps Lock

注意: 不推荐使用 Xmodmap,而选择setxkbmap。

您可以通过转到键盘 – >布局 – >选项 – >大写锁定行为来禁用它,然后选择“禁用大写锁定”。


编辑

我不知道为什么用另一个键盘键看起来不方便。

但在使用CTRL + Super + Space尝试后,Launchy可以和我一起使用。

在此处输入图像描述

而且你需要将launchy托盘图标。 请参阅如何访问和启用更多图标以在系统托盘中? 。 您还需要将其添加到启动应用程序,因为它不会打开时不起作用。


毕竟,作为Launcy的替代品,尝试Synapse与gnome和unity的最佳集成。

在Ubuntu 11.10 – 13.04

  1. 打开“ 键盘布局”应用程序,然后单击“选项”按钮。
  2. 重新绑定选项列表将会出现。 选择“Caps Lock键行为”。
  3. 选择首选的Caps Lock重新调整选项。

可用选项的屏幕截图

这基本上是对https://askubuntu.com/a/223674/22073提供的答案的修改。

您还可以使用XKBOption修改Caps Lock的行为。 这些更改甚至传播到虚拟控制台(/ dev / tty [1-6]或Ctrl-Alt-F [1-6])。

例如,要禁用Caps Lock,您可以在/etc/default/keyboard

 # Check /usr/share/doc/keyboard-configuration/README.Debian for # documentation on what to do after having modified this file. # The following variables describe your keyboard and can have the same # values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options # in /etc/X11/xorg.conf. XKBMODEL="pc105" XKBLAYOUT="us" XKBVARIANT="" XKBOPTIONS="caps:none" # If you don't want to use the XKB layout on the console, you can # specify an alternative keymap. Make sure it will be accessible # before /usr is mounted. # KMAP=/etc/console-setup/defkeymap.kmap.gz 

然后你会运行:

 sudo dpkg-reconfigure keyboard-configuration 

有关XKBOPTIONS自定义的完整列表,请查看/usr/share/X11/xkb/rules/base.lst 。 这是我的Ubuntu 13.10机器的完整列表: http : //sprunge.us/cUZO

更多信息可以在ArchLinux维基上找到: https : //wiki.archlinux.org/index.php/Keyboard_Configuration_in_Xorg

要将无用的caps_lock重新映射到基本class次,请执行

 xmodmap -e "keycode 66 = Shift_L" 

以下方法使用Compiz的组合在按键时启动应用程序。

综上所述 –

  1. 更改Caps Lock键的行为以模仿另一个键。
  2. 配置compiz以侦听新模仿的密钥并运行自定义脚本。

更改大写锁定键

要更改Caps Lock键的行为,您可以使用xmodmap ,如下所示:

  • 创建一个文件,例如“capslock”
  • 将以下内容复制并粘贴到文件中
 keycode 66 = cent clear Lock add Control = cent 
  • 现在运行xmodmap来识别您的更改:

xmodmap capslock

要永久运行,请将此命令添加到启动应用程序。

按下Caps Lock现在只是模仿按下“分”键 – 注意这不是键盘上实际存在的键。

您可以从此处获取KeySym名称列表。

配置Compiz

启动CompizConfig设置管理器

在常规部分中,确保已启用“命令”并配置命令,如下所示:

在此处输入图像描述

NB启用键绑定并使用“抓取组合键”识别您的“分”键。 不幸的是,你不能让compiz识别上限锁定键。

在此处输入图像描述

显然 – 改变“firefox”用于启动“launchy”的任何命令

现在当你点击Caps Lock键时,compiz会识别映射的“cent”键并运行命令 – 在这种情况下是firefox – 在你的情况下是“launchy”。

  1. 使用xev命令。 当你按Enter键时,xev将启动。 xev将关于密钥的所有输入和poops信息都带入命令行。 我建议将鼠标放在xev窗口的退出键上,按下大写锁定(或任何你想要查找的键),然后立即退出xev。 我的系统上的相关行,大写锁定看起来像:

     KeyPress event, serial 36, synthetic NO, window 0x4400001, root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46), state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 36, synthetic NO, window 0x4400001, root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46), state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False 

    注意keycode (66)和keysym (0xffe5)。

    您现在也可以获取另一个键的数据 – 您实际上没有使用的键,以及在您想要使用大写锁定按钮的上下文中,它不执行任何操作。 所以,如果你想要大写锁定来激活Unity搜索框(就像超级通常那样),也许可以使用`,例如。 在我的机器上:

     keycode 49 (keysym 0x60, grave) 
  2. 使用xmodmap将新密钥的function绑定到Caps Lock按钮。 我很确定你想要使用如下命令:

     xmodmap -e "keycode 66=0x60" 

    现在,如果您在文本框中点击物理大写锁定按钮,则会出现严重字符(`)。 但是,如果您将快捷键映射到它,它将执行其他操作。 如果您希望能够在文本框中使用它,可能会使用左移或f10替换大写锁定,或者看起来不会影响您要使用的命令的其他内容。

  3. 测试它以确保我给你的命令按照你想要的方式工作。

  4. 转到启动应用程序,并将该命令添加到启动应用程序。 这样,每次启动时钥匙都会正常切换。

  5. 舞蹈。

(向企业大喊大叫) 更改密钥绑定(硬件到软件)

另外,有关xmodmap的更多帮助:

http://www.xfree86.org/4.2.0/xmodmap.1.html

http://www.in-ulm.de/~mascheck/X11/xmodmap.html

Ubuntu 16.04

来自Wernight的答案中的setxkbmap -option似乎立即为我工作。

但是它会在重新启动时消失。 为了解决这个问题,我添加了我的启动应用程

  1. 搜索并运行Startup Applications >>单击“添加”
  2. 输入/usr/bin/setxkbmap -option作为命令(注意:完整路径很重要)

替换为caps:escape (我将其用于vi)

背景

我刚刚从15.10升级到16.04,无论我以前用什么来映射它都停止工作。

当然,xmodmap选项可行,我想找到一个使用GUI的选项。 这对我来说(使用Ubuntu 15.10):

  • 安装gnome-tweak-tool
  • 去’打字’
  • 在’行为的大写锁定键’下选择’大写锁定被禁用’

我发现最适合我的选项(在任何X兼容的wm / de中)是添加

 Option "XkbOptions" "caps:swapescape" 

在 – 的里面

 Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "US" Option "XkbOptions" "caps:swapescape" # << is what you want EndSection 

在/etc/X11/xorg.conf.d/00-keyboard.conf中阻止(必要时创建)。

最强大的解决方案是购买一个键盘,让您重新固定固件中的键,即专业的可编程键盘。

这些通常花费大约200美元,并且还具有高等级的机械按键开关。 它们很昂贵,但它们是避免在您坐下来的每台新机器上都不得不与之斗争的唯一方法,而且每次开发人员都像键盘映射一样对OS基础架构进行重大更改。