web-dev-qa-db-ja.com

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

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

このため、スペースバーを修飾子/ファンクションキーとして機能させたい( Ctrl、 Shift、 Altなど)、それは広い領域をカバーし、多くのキーの組み合わせに快適に到達するための多くのオプションを提供するためです。

私のアイデアは作ることです ShiftSpace スーパーモディファイアを実行します(おそらくどちらか Super L または Super R)そして、Superですべてのカスタムショートカットを作成します。 (スペースバーは、通常の場所を維持しながら、スーパーキーの場所への一種の物理的な拡張として機能します。)

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

key <SPCE> {        [       space           ]       };

次のように、カンマと別のパラメータを追加して第2レベルの機能を取得できるので、これはすばらしいことです。

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

ただし、スペースバーは完全に機能しなくなります。

pdate:スペースバーを正常に機能させて実行することができました Hyper L 2番目のレベルでは、それを使用して複数のショートカットを作成する際に問題が発生します。 ShiftHyper L ハイパーモディファイヤを正しく登録しないでください。

スペースバーを正常に機能させ、第2レベルの修飾キーとして機能させることは可能ですか?

4
Prototype700

したがって、私が見つけた最も近いものは、 xcape READMEの例のセクション に詳述されているように、xmodmapとxcapeを使用したかなり複雑な体操セットです。

ここに抜粋があります:

# 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モディファイアーのように機能させることができましたが、通常のスペースの入力にタイミングが妨げられ、翌日これを無効にしました。タイミングをダイヤルしてそれを機能させる方法はいくつかあるかもしれませんが、私はまだ詳細を掘り下げていません。

1
Peter Lyons