Linux - CAPS LOCK を SHIFT と BACKSPACE の両方として使用するにはどうすればいいですか?

Linux - CAPS LOCK を SHIFT と BACKSPACE の両方として使用するにはどうすればいいですか?

caps lockキーボードの キーをshift key押したままにすると として、backspaceキーを放すととして使用できるようにしたいと考えています(その間に他のキーを押していないことが条件です)。 ネイティブ ソリューション ( など) の方が望ましいのですが、基本的なシステム ツールだけを使用してと の押下xmodmapを制御できるかどうかはわかりません。KEYUPKEYDOWN

答え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 メッセンジャーだけです。独自の入力システムが組み込まれているため、システム レベルの変更が不要なビデオ ゲームもあるかもしれません。

PS 私はこれを使用して、 とcontrolの両方をescape自分のcabslockキーにマッピングしています。 とvimユーザーとしてkakoune、これは非常に便利だと思います。

PPS この回答が非常に遅くなって申し訳ありませんが、これは Google での私のトップ結果だったので、たとえこれが OP にとってはもう役に立たなくても、他の人にとっては役立つかもしれません。

関連情報