如何在Arch Linux中将Caps Lock键映射到Escape键


23

我的操作系统是Arch Linux amd64,Gnome ENV。

我想将Caps Lock密钥映射到EscArch Linux中的(转义)。我运行命令:

xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'

它工作正常,但是片刻之后,Caps Lock键又重新起作用了。而且我必须再次运行该命令。

我很确定该解决方案可能在一年前就可以很好地工作了。我怎么了 谁能帮助我在Arch Linux操作系统中将Caps Lock键永远映射到Escape键?

Answers:


46

以下任何一项(按复杂度递增的顺序):

  1. 使用setxkbmap重新映射键(不需要守护,是独立于你的桌面环境或窗口管理器)。不要忘记exec gnome-session在您的~/.xinitrc或中的(或类似)行之前添加命令~/.xsession

    setxkbmap -option caps:escape
    

setxkbmap可以在extra / xorg-setxkbmap包中找到。

  1. dconf-editor→→ org.gnome.desktop.input-sources.xkb-options添加caps:escape到上述字段。
  2. gnome-session-settings →启动程序→添加→名称=重映射大写锁定以转义,命令=setxkbmap -option caps:escape
  3. 创建自定义键盘布局

仅供参考,我得到由XKB规则的grep/usr/share/X11/xkb/rulescapsesc


2
dconf方法非常适合我,谢谢!
Keith Smiley 2013年

谢谢没有 2.我一直在寻找该信息。不,我可以在命令行上通过gsettings org.gnome.desktop.input-sources xkb-options ['caps:none', 'numpad:pc', 'numpad:mac']
Oliver Jan Krylow于2016年

关于没有 1:如果要交换它而不是拥有两个转义键,可以运行setxkbmap -option caps:swapescape
comfreak

5

要在中使用X,Arch Wiki Gnome页面包含有关使用XkbOptions修改键盘的说明:

使用dconf编辑器,导航至名为org.gnome.desktop.input-sources.xkb-options的键,然后将所需的XkbOptions(例如'caps:swapescape')添加到列表中。

在控制台中,您可以创建自定义按键映射以获得相同的效果。以必需改变创建个性化的键盘映射CapsLock,并Escape/usr/share/kbd/keymaps/i386/qwerty/yourmap随后tar它在包括线/etc/vconsole.conf来调用它:

KEYMAP=yourmap

2

的xorg.conf

您可以通过编辑文件来实现/etc/X11/xorg.conf.d/00-keyboard.conf

示例文件:

Section "InputClass"
        Identifier      "system-keyboard"
        MatchIsKeyboard     "on"
        Option          "XkbLayout" "us"
        Option          "XkbModel"  "pc104"
        Option          "XkbOptions" "caps:swapescape"
EndSection  

您可以指定多个XkbOptions,例如caps:swapcaps,terminate:ctrl_alt_bksp具有ESC和瓶盖交换也使X与被杀死CtrlAlt Backspace。您可以在中找到有关此信息的更多信息man xkeyboard-config

GUI

您也可以使用GNOME调整工具(gnome-tweak-tool软件包)。只需单击Typing,然后从Ctrl position菜单中选择所需的内容(请参见下图)。

在此处输入图片说明


2

您可以使用xmodmap。把你的~/.Xmodmap

remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock

(请确保在X开头会使用~/.Xmodmap


这是正确的,与发行版无关和与桌面无关的答案。
dotancohen 2015年

当我把它放进去时~/.Xmodmap,什么也没发生:(
JanWarchoł15年

把线xmodmap ~/.Xmodmap放到你的~/.xinitrc
uzsolt

当我把它放进去~/.Xmodmap然后运行时,xmodmap ~/.Xmodmap我得到了错误:xmodmap: .Xmodmap:1: bad remove modifier name 'lock=caps_lock', not allowed xmodmap: .Xmodmap:2: bad keysym target key symbol 'Escape=Caps_Lock' xmodmap: .Xmodmap:3: bad keysym target key symbol 'Caps_Lock=Escape' xmodmap: .Xmodmap:4: bad add modifier name 'lock=caps_lock', not allowed xmodmap: 4 errors encountered, aborting
comfreak

您将需要在等号周围加空格。我修改了答案。
uzsolt

0

!我不知道为什么以上答案不起作用。这是一个适合我的工作。在你的〜/ .Xmodmap中

! 66 is the keycode of Caps_Lock
clear    Lock
keycode  66 = Escape 

接着

$ xmodmap ~/.Xmodmap

我正在使用Fedora和非Gnome窗口管理器。HTH


0

/etc/X11/xorg.conf.d/00-keyboard.conf也可以使用自动生成文件systemd-localed。使用以下命令:

localectl set-x11-keymap us "" "" caps:escape

或者,包括一些其他有用的选项:

localectl set-x11-keymap us,de "" "" caps:escape,grp:alt_caps_toggle,grp_led:caps,lv3:ralt_switch_multikey,terminate:ctrl_alt_bksp,eurosign:e,rupeesign:4

快速说明:

  • CapsLk 作为 Esc
  • 在两个键盘布局之间切换us/ de使用Alt+CapsLk
  • CapsLk LED指示哪个布局处于活动状态
  • 右Alt(RAlt)是“多键”(请参阅Compose键
    • RAlt+ e产生
    • RAlt+ 4生成(类似于Shift+ 4生成方式$
  • Ctrl+ Alt+ Backspace杀死X
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.