EscキーをクリックしてもEscキーとして機能する修飾キーに変換

EscキーをクリックしてもEscキーとして機能する修飾キーに変換

タイリングウィンドウマネージャ(現在のxMonad)を使用するため、ウィンドウ管理のための「コントロールキー」として機能するキーが必要です。 Windows/Super/Mod4 キーを持つキーボードを使用するたびに、左側の Windows キーをそのキーとして使用し、右側の Windows キーを Compose/Multi_key として使用します。

ただし、Windowsキーがない(つまりウィンキーがない)複数の([非常に]古い)キーボードもあり、「WMコントロール」として(快適に)使用できるキーもありません。キー". 以前はxMonadで許可していたのでControl+Altを"WMコントロールキー(組合せ)"として使用していましたが、後で見るとこれが(特定)Emacs(移動コマンド)に邪魔にならないようではありません.もっと長いオプションですだから、私は次のようにEscキーを使うことができると思いました。

  • Ecsを保持すると、Mod4のように動作します。
  • Esc を押すと Esc と同じです。

AFAIK、Escapeを持っていれば通常何も起こらないのでこうするのがいいと思いました。その後、次のようにしてこれを達成しようとしましたxmodmap

clear Mod4 
add Mod4 = Super_L Escape

私の期待は次のとおりです。 Super_Lはまだスーパーとして機能し、Escapeは今やスーパーです。次のステップは、をxcape使用して古いEscキーの動作(一部)を復元することです。

私が得るもの(の結果xmodmap):

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):                                                                         

shift       Shift_L (0x32),  Shift_R (0x3e)                                                                                             
lock        Caps_Lock (0x42)                                                                                                            
control     Control_L (0x25),  Control_R (0x69)                                                                                         
mod1        Alt_L (0x40),  Meta_L (0xcd)                                                                                                
mod2        Num_Lock (0x4d),  Hyper_L (0xcf)                                                                                            
mod3        Scroll_Lock (0x4e),  Mode_switch (0xcb)                                                                                     
mod4        Escape (0x9),  y (0x34),  Super_L (0x85),  Super_L (0xce)                                                                   
mod5        ISO_Level3_Shift (0x5c) 

私が理解していないものは次のとおりです。

  • y突然、Mod4に設定されるのはなぜですか?
  • EscapeがまだEscapeとして機能する理由(一度押すと)そしてSuper(押している間、変更をテストしようとしたときにこれを見つけました)。今は使用していませんがxcape

これはバグですかxmodmap、それとも間違って使用していますかxmodmap?私は後者のようですが、私がやろうとしていることを達成するのに役立つ人はいますか?


追加情報(関連性がないことを願っています):

  • 現在のオペレーティングシステムはArch Linuxです。
  • などの他のソフトウェアを使用するソリューションで開いていますxkbxdotool
  • 私は現在ドイツのQWERTZレイアウト(ANSI以外のISOなど)を使用しています。ネオ(私の知る限り、deキーマップ/レイアウトの別のバリエーションとして実装されました。以下の出力を参照してくださいlocalectl。)
  • 私の解決策がうまくいくことを願っています。鍵盤/ハードウェア独立:キーボードを変更してもプロファイルは変更したくありません。
  • 誰かがこの問題を提起する前に:Capslockを3番目のレイヤモディファイヤの1つとして使用し、5番目と6番目のレイヤにも使用されるNeoレイアウトを時折使用するため、SuperをCapslockにマッピングすることはオプションではありません。これはまた、私が解決策を望んでいることを意味します。キーボードレイアウト独立、NeoとQWERTZの間で簡単に切り替えることができます。
  • 私はまだ別の提案で開いています。私の唯一の要件:他のプログラム(EmacsやVimなど)との干渉がないか最小限に抑えられ、「WMコントロールキー」として使用されるキー(組み合わせ)がキーボードの左側にある必要があります。私が使用する他のほとんどのプログラムは、WMを制御するキーのキーボードの右側にあります(例:h、j、k、l ...)。

現在のケースである変更を実行する前に、出力は次のxmodmapようになります。

xmodmap:  up to 2 keys per modifier, (keycodes in parentheses):                                                                         

shift       Shift_L (0x32),  Shift_R (0x3e)                                                                                             
lock        Caps_Lock (0x42)                                                                                                            
control     Control_L (0x25),  Control_R (0x69)                                                                                         
mod1        Alt_L (0x40),  Meta_L (0xcd)                                                                                                
mod2        Num_Lock (0x4d),  Hyper_L (0xcf)                                                                                            
mod3        Scroll_Lock (0x4e),  Mode_switch (0xcb)                                                                                     
mod4        Super_L (0x85),  Super_L (0xce)                                                                                             
mod5        ISO_Level3_Shift (0x5c)  

.Xmodmapの現在は次のとおりです。

add Mod3 = Scroll_Lock

そしてlocalectl言った:

   System Locale: LANG=de_DE.UTF-8
                  LC_COLLATE=C
       VC Keymap: de-latin1-nodeadkeys
      X11 Layout: de,de
       X11 Model: pc105
     X11 Variant: nodeadkeys,neo
     X11 Options: compose:rwin,grp:ctrls_toggle

ベストアンサー1

私は使うX角度このために。キーをSuper_LXmodmapにマップし、xcape -e 'Super_L=Escape'XMonadの起動時に実行します。

おすすめ記事