我希望能够在按住caps lock
键盘上的键时将其用作 ,并在释放该键时将其用作 (假设我在该间隔内没有按下任何其他键)。我更喜欢原生解决方案(例如),但我不确定是否可以使用基本系统工具来调节和按下。shift key
backspace
xmodmap
KEYUP
KEYDOWN
答案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 我使用它将和映射control
到escape
我的cabslock
密钥。作为vim
和kakoune
用户,我发现这非常有用。
PPS 抱歉这个答案来得太晚了,但这是我在谷歌上找到的最佳结果,所以即使这对 OP 不再有用,其他人可能仍然会发现它很有用。