Linux - 如何将 CAPS LOCK 用作 SHIFT 和 BACKSPACE?

Linux - 如何将 CAPS LOCK 用作 SHIFT 和 BACKSPACE?

我希望能够在按住caps lock键盘上的键时将其用作 ,并在释放该键时将其用作 (假设我在该间隔内没有按下任何其他键)。我更喜欢原生解决方案(例如),但我不确定是否可以使用基本系统工具来调节和按下。shift keybackspacexmodmapKEYUPKEYDOWN

答案1

我不知道有什么本地方法可以做到这一点,但是卡普按照你的需要服用:

#!/usr/bin/env bash

# Remap the key to it's default behavior
# assuming `keycode 66` is your `caps lock` 
# check using `xmodmap -pke | grep Caps_Lock`
xmodmap -e 'keycode 66 = Shift_L Shift_L Shift_L Shift_L Shift_L Shift_L'

# if you remaped your standard backspace key (skip  
# this line if you didn't)  it will no longer be 
# available in the keymap but xcape needs it to be there. 
# To fix this, pick a keycode that's
# not on your physical keyboard (find one using 
# `xmodmap -pke`) and remap it to `BackSpace`. I will 
# assume that `keycode 248` is unused:
xmodmap -e 'keycode 248 = BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace '

# kill `xcape` if it's already running so you don't
# get two competing instances
pidof xcape | xargs kill -1

# actually start xcape
xcape -e 'Shift_L=BackSpace'

将其放入脚本中并在启动时运行它(当然经过测试之后)。

潜在问题:

  • 不幸的是,这并非 100% 可靠(至少在我的系统上如此)有时它会随机停止工作。不过,重新运行脚本可以可靠地解决这个问题。我设置了一个键盘快捷键(不受任何键盘重新映射的影响)来运行脚本,因此偶尔重新运行一次并不太麻烦。

  • 这将添加释放时退格行为适用于所有Shift_L键。如果有任何(使用 找出xmodmap -pke | grep Shift_L)您可能希望将它们重新映射到Shift_R

  • 有些应用程序似乎不受此影响。不过,这种情况非常罕见。我遇到的唯一一个应用程序是 Signal messenger。可能还有一些视频游戏带有自己的内置输入系统,因此可以省去任何系统级修改。

PS 我使用它将和映射controlescape我的cabslock密钥。作为vimkakoune用户,我发现这非常有用。

PPS 抱歉这个答案来得太晚了,但这是我在谷歌上找到的最佳结果,所以即使这对 OP 不再有用,其他人可能仍然会发现它很有用。

相关内容