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


Answers:


70

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

对于Linux(包括Ubuntu):

setxkbmap -option <OPTION>

在哪里<OPTION>可以例如:

  • caps:none –禁用大写锁定。
  • caps:super– Caps Lock成为附加的超级键(又名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。


2
爱你的男人,谢谢,它适用于ubutnu 14.10
Andrzej Rehmann

1
在ubuntu 15.10中也可以使用!谢谢!
donatello '16

5
漂亮又简单,可在
04年

3
要恢复任何setxkbmap更改(即,如果您需要将Caps键恢复到其原始位置),只需运行以下命令即可:setxkbmap -option
landroni

如果您将Capslock键重新映射到退格键,现在您想知道为什么如果按住此键它不会删除单词,这是因为您需要使用一个额外的命令。之后setxkbmap -option caps:backspace进入xset r 66瞧。
加百利

19

在Ubuntu 11.10-13.04中

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

可用选项的屏幕截图


1
@JacobJohanEdwards注意自我,检查是否xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'仍然有效。
杰德(Jjed)2012年

对于vim用户,“实用Vim”建议在系统级别将大写锁定映射到ctrl。键盘布局>选项> Ctrl键位置> Caps Lock就像Ctrl一样可以完成操作。
rpattabi 2013年

11
这些设置在13.10中不再存在。安装gnome-tweak-tool,在“打字”下您将有类似的设置。
pcworld

在Ubuntu 12.10中,这不适用于我。在gnome控制中心中处理这些设置似乎没有任何效果。
Andrew Wagner 2014年

4
他们为什么从14.04中删除这些选项?
莱奥列奥波尔德赫兹준 영

18

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


编辑

我不知道为什么其他键盘按键看起来不方便。

但是Launchy在使用CTRL+ Super+ 尝试后可以很好地与我一起工作Space

在此处输入图片说明

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


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


我似乎在Ubuntu 15.04上无法使用此选项。
MichielB,2015年

15

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

您还可以使用来修改Caps Lock的行为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

然后,您将运行:

sudo dpkg-reconfigure keyboard-configuration

有关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


完美,我XKBOPTIONS="ctrl:swapcaps"习惯用Caps替换Left Ctrl。
马尔西奥

它可以在X和虚拟控制台中的16.04上运行。
jfs

10

要将无用的caps_lock重新映射为基本移位,请执行

xmodmap -e "keycode 66 = Shift_L"

重新启动后,这种情况不会持续。
Czarek Tomczak

3
要使其在重启后仍然存在,请执行以下操作:Ubuntu Dash主页>启动应用程序>添加>键入上面的命令。
Czarek Tomczak

6

下面的方法在按键时结合使用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设置管理器

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

在此处输入图片说明

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

在此处输入图片说明

显然-将“ firefox”更改为用于启动“启动”的任何命令

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


几分钟后,返回设置-并且Caps Lock再次具有通常的行为。
维塔利·兹达涅维奇

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
    

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

    现在,您还可以获取另一个键的数据-一个您实际上没有使用的键,并且在您要使用大写锁定按钮的情况下,该键什么也不做。因此,例如,如果您想使用大写锁定来激活Unity搜索框(通常像super一样),则可以使用`。在我的机器上:

    keycode 49 (keysym 0x60, grave)
    
  2. 使用xmodmap将新键的功能绑定到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


4

Ubuntu 16.04

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

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

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

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

背景

我刚刚从15.10升级到16.04,并且在停止工作之前使用了以前用来映射的内容。


2

我发现最适合我的选项(在任何与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中的块(如有必要,创建)。


1

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

  • 安装gnome-tweak-tool
  • 转到“类型”
  • 在“大写锁定键的行为”下,选择“大写锁定已禁用”

-1

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

这些通常花费约200美元,并且还具有高档的机械钥匙开关。它们很昂贵,但它们是避免在您坐下的每台新计算机上都必须与之抗争的唯一方法,并且每次开发人员对操作系统基础结构进行重大更改时,就像键盘映射一样重要。


这对笔记本电脑无济于事。
wallyk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.