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

use*_*686 76 xorg keyboard shortcut-keys

过去我用来xmodmap阻止Caps Lock按钮工作,然后告诉Launchy来处理按键。我似乎不能再这样做了。

禁用Caps Lock的正常行为并使其执行其他操作的最佳方法是什么?

Wer*_*ght 91

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

对于 Linux(包括 Ubuntu):

setxkbmap -option <OPTION>
Run Code Online (Sandbox Code Playgroud)

哪里<OPTION>可以是例如:

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

注意:Xmodmap 已被弃用,取而代之的是 setxkbmap。

  • 漂亮而简单,适用于 16.04 (6认同)
  • 要恢复任何 `setxkbmap` 更改(即,如果您需要将 Caps 密钥恢复到其原始位置),只需运行以下命令:`setxkbmap -option` (6认同)
  • 爱你,谢谢,它适用于 ubutnu 14.10 (4认同)

Jje*_*jed 21

在 Ubuntu 11.10 - 13.04 中

  1. 打开键盘布局应用程序并单击“选项”按钮。
  2. 将出现重新绑定选项列表。选择“大写锁定键行为”。
  3. 选择您喜欢的 Caps Lock 重新调整用途选项。

可用选项的屏幕截图

  • 这些设置在 13.10 中不再存在。安装`gnome-tweak-tool`,在那里你会在“Typing”下有类似的设置。 (12认同)
  • 为什么他们从 14.04 中删除了这些选项? (4认同)

Bin*_*ife 19

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


编辑

我不知道为什么使用另一个键盘键似乎不方便。

但是Launchy与努力之后正常工作与我CTRL+ Super+ Space

在此处输入图片说明

并且您需要launchy将托盘图标列入白名单。请参阅如何在系统托盘中访问和启用更多图标?. 您还需要将其添加到启动应用程序中,因为它在未打开时将无法运行。


毕竟,作为 Launcy 的替代方案,请尝试使用Synapse 以实现与 gnome 和 unity 的最佳集成。


Eht*_*ury 16

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

您还可以使用XKBOption. 这些更改甚至会传播到虚拟控制台(/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
Run Code Online (Sandbox Code Playgroud)

然后你会运行:

sudo dpkg-reconfigure keyboard-configuration
Run Code Online (Sandbox Code Playgroud)

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

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


小智 12

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

xmodmap -e "keycode 66 = Shift_L"
Run Code Online (Sandbox Code Playgroud)

  • 要使其在重启后仍然存在,请执行以下操作:Ubuntu Dash Home &gt; Startup Applications &gt; Add &gt; 键入上面的命令。 (4认同)
  • 我建议改为执行 `xmodmap -e "keycode 66 = Shift_L Caps_Lock"` ,这样您仍然可以在需要时使用组合键 `Shift`+`Caps lock` 访问正常的大写锁定。对于其他目的,大写锁定键的作用相当于附加的左移。 (3认同)

fos*_*dom 7

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

总之 -

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

更改大写锁定键

太改变 Caps Lock Key 的行为,你可以使用xmodmap如下:

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

xmodmap capslock

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

现在按下 Caps Lock 只是模仿按下“cent”键 - 请注意,这不是我键盘上实际存在的键。

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

配置 Compiz

启动 CompizConfig 设置管理器

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

在此处输入图片说明

注意启用键绑定并使用“抓取组合键”来识别您的“cent”键。不幸的是,您无法让 compiz 识别大写锁定键本身。

在此处输入图片说明

显然 - 为您用来启动“launchy”的任何命令更改“firefox”

现在,当您按下 Caps Lock 键时,compiz 将识别映射的“cent”键并运行命令 - 在本例中为 firefox - 在您的情况下为“launchy”。


Dan*_*iel 5

  1. 使用 xev 命令。当您按 Enter 键时,xev 将启动。xev 将所有关于密钥的输入和便便信息带入命令行。我建议将鼠标放在 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
    
    Run Code Online (Sandbox Code Playgroud)

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

    现在,您还可以获取另一个键的数据——一个您并不真正使用的键,并且在您想要使用大写锁定按钮的上下文中,它不会执行任何操作。因此,如果您希望大写锁定来激活 Unity 搜索框(就像 super 通常那样),例如可以使用 `。在我的机器上:

    keycode 49 (keysym 0x60, grave)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用 xmodmap 将新键的功能绑定到 Caps Lock 按钮。我很确定你想使用这样的命令:

    xmodmap -e "keycode 66=0x60"
    
    Run Code Online (Sandbox Code Playgroud)

    现在,如果您点击文本框中的物理大写锁定按钮,则会出现严重字符 (`)。但是如果你将快捷键映射到它,它会做别的事情。如果您希望能够在文本框中使用它,可以将大写锁定替换为左移或 f10,或者其他看起来不会干扰您要使用的命令的东西。

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

  4. 转到启动应用程序,然后将该命令添加到您的启动应用程序中。这样,每次启动时按键都会正确切换。

  5. 舞蹈。

(大喊大叫)更改键绑定(硬件到软件)

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

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

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


Ant*_*ige 5

Ubuntu 16.04

setxkbmap -option <OPTION> 来自Wernight的回答似乎对我立即起作用。

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

  1. 搜索并运行Startup Applications>>点击添加
  2. 把在/usr/bin/setxkbmap -option <OPTION>作为命令(注:完整路径是很重要的)

替换<OPTION>为类似的东西caps:escape(我将它用于 vi)

背景

我刚刚从 15.10 升级到 16.04 以及在停止工作之前我用来映射它的任何东西。