第一种选择

第一种选择

只需阅读此内容关于定制键盘的严重痴迷帖子虽然我不会在那里做所有事情,但我有几个想法想分享一下。特别是他设置了密钥,Caps Lock以便:

  • 当单独按下并释放时,它被映射到Esc
  • 当按住并按下第二个键时,它将被映射到Ctrl

正如他所说,这对 vim 用户来说很棒。在 Ubuntu 上可以实现吗?

他还对左右Shift键做了类似的事情。单独按下时,它们会映射到()但如果按下另一个键,它们会按照您预期的方式Shift运行。

答案1

我发现了一个unix.se 上的解答至少对于 Caps Lock/Ctrl/Esc 部分而言。

首先将 Caps Lock 重新映射到额外的控制,方法是将以下内容输入到~/.profile

if [ $DISPLAY ]
then
  # Add the 3 lines below to Convert caps-lock into Control
  xmodmap -e 'remove Lock = Caps_Lock'
  xmodmap -e 'keysym Caps_Lock = Control_L'
  xmodmap -e 'add Control = Control_L'

  # and xcape is in Startup Applications
fi

然后去得到卡普- 您需要安装依赖项(请参阅 README)并执行makesudo make install。然后它会执行 README 所说的操作:

xcape 作为守护进程运行,并拦截 Control 键。如果 Control 键被按下并自行释放,它将生成 Esc 键事件。

我现在正在使用它,它非常好:)

我猜测修改后的版本也可以执行移位/括号操作。

答案2

Ubuntu 16.04

第一种选择

Caps_Lock 为 Ctrl

  • 打开文件/etc/default/keyboard,并更改XKBOPTIONS=""为:

    XKBOPTIONS="caps:ctrl_modifier"
    

Caps_Lock 为 Esc

  • 安装卡普

    sudo apt install xcape
    
  • .xsessionrc在主目录中创建(如果已经存在则编辑)

  • 将以下行添加到~/.xsessionrc

    #!/bin/bash
    
    /usr/bin/xcape -e 'Caps_Lock=Escape'
    

笔记

  • 您需要先注销然后登录。
  • 有关 (1) 中可以设置的所有选项的完整列表,请! options查看

    /usr/share/X11/xkb/rules/*.lst
    

第二种选择

您可以使用以下脚本在会话中获得相同的行为。

#!/bin/sh

# Super Caps

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'  # rebind Caps_Lock to Ctrl, when held down, accomapgnied with other button
/usr/bin/xcape -e 'Caps_Lock=Escape'             # rebind Caps_Lock to Esp, when tapped alone
  1. 将以上内容放入文件中,位于任意位置

例如custom_capslock~/.local/bin/

  1. 使其可执行

     chmod a+x custom_capslock
    
  2. 将其添加到启动应用程序,通过将脚本的完整路径添加到命令字段。

例如/home/yourname/.local/custom_capslock

附言:如果你想使用systemd或者,/etc/rc.local不要使用“启动应用程序”,而是确保您的脚本不会被其他系统服务覆盖

相关内容