[Shift] + [Space]をSuper / Hyperに再マップしてスペースバーを修飾キーとして使用するにはどうすればよいですか?

[Shift] + [Space]をSuper / Hyperに再マップしてスペースバーを修飾キーとして使用するにはどうすればよいですか?

現在、さまざまな機能を備えたカスタムキーボードショートカットマッピングを作成しようとしています。

この目的のために、スペースバーは広い領域をカバーし、多くのキーの組み合わせを簡単に実装するための多くのオプションを提供するので、修飾子/機能キー(例えば、、CtrlなどShift)として機能したいと思います。Alt

私の考えは、Super修飾子(おそらくまたは)を作成して実行し、ShiftSuperを使用してすべてのカスタムショートカットを構築することです。 (スペースバーは通常の位置を維持しながら、スーパーキー位置の物理的な拡張としてのみ機能します。)SpaceSuper LSuper R

/usr/share/X11/xkb/symbols/pcデフォルトのスペースバー機能は次のように編集しようとしました。

key <SPCE> {        [       space           ]       };

コンマと他のパラメータのみを追加すると、次の2番目のレベル関数を取得できるため、非常に良いです。

key <SPCE> {        [      space, Super_L   ]       };

しかし、スペースバーは完全に動作を停止しました。

修正する:スペースバーを操作して2番目のレベルで実行できましたが、一部のソフトウェアではスペースバーを+として処理し、スーパー修飾子を正しく登録しないため、複数のショートカットを作成できませんHyper LShiftHyper L

スペースバーが正常に動作し、2番目のレベルの修正キーとして機能させることはできますか?

答え1

だから私が見つけた最も近いのは、xmodmapとxcapeを含むかなり複雑な体操セットです。詳しくはこちらをご覧ください。xcape readmeのサンプルセクション

以下は抜粋です:

# Map an unused modifier's keysym to the spacebar's keycode and make it a
# control modifier. It needs to be an existing key so that emacs won't
# spazz out when you press it. Hyper_L is a good candidate.
spare_modifier="Hyper_L"
xmodmap -e "keycode 65 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default
xmodmap -e "add Control = $spare_modifier"

# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"

# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space"

これを試しましたが、修飾子スタイルを使用するとSuper_L修飾子と同じ空白が得られましたが、タイミングが通常の空白を正常に入力するのを妨げていることを発見し、翌日無効にしました。おそらくタイミングを調整して動作させる方法があります。しかし、まだ詳細な内容は扱っていません。

関連情報