私のi3設定には、特定のタスクに対するいくつかのキーバインディングのみを含むいくつかの「より小さな」モードがあります。たとえば、Skypeモード:
mode "skype" {
bindsym $mod+1 exec xdotool mousemove 90 70; exec xdotool click 1
bindsym $mod+2 exec xdotool mousemove 90 110; exec xdotool click 1
bindsym $mod+3 exec xdotool mousemove 90 150; exec xdotool click 1
bindsym $mod+4 exec xdotool mousemove 90 190; exec xdotool click 1
bindsym $mod+5 exec xdotool mousemove 90 230; exec xdotool click 1
bindsym $mod+6 exec xdotool mousemove 90 270; exec xdotool click 1
bindsym $mod+7 exec xdotool mousemove 90 310; exec xdotool click 1
bindsym $mod+8 exec xdotool mousemove 90 350; exec xdotool click 1
bindsym $mod+9 exec xdotool mousemove 90 390; exec xdotool click 1
bindsym $mod+0 exec xdotool mousemove 90 430; exec xdotool click 1
...
}
ワークスペースの代わりにSkypeチャットを切り替えるには、Alt +数字を変更します。
ただし、Skypeモードでは、.i3 / configに設定されている他のキーバインディング(Alt + hjkl、dmenu、特に明るさ、音量、PrtScキーなど)は使用できなくなります。
デフォルトスキーマのすべてのbindsym
sとsを別のスキーマにコピーしたくありません。これによりメンテナンスが不可能になります1。基本モードから別のモードにキーバインディングを「継承」する方法はありますか?bindcode
1:まあ、Skypeモードのハードコーディングされたピクセル値はすでにはいめちゃくちゃでしたが、もう悪化したくありませんでした。 ;)
答え1
明らかに、これを行うための「一般的な」i3方法はありません。i3bangという小さな前処理装置これにより、この目標を達成できます。
単に
i3bangをダウンロードして設定してください。
次のように、基本モードですべてのキーバインディングをラップします。
!@<+default_keybindings bindsym ... >
これで、主キーバインディングを維持したいパターンの最後に、このセクションへの参照を含めます。
mode "skype" { bindsym $mod+!!1..9,0 exec xdotool mousemove 90 !<70+40*!!<0..9>>; \ exec xdotool click 1 ... !@default_keybindings }
i3(やや直感的ではない)は最初同じキーを使用する複数のバインディングがあり、キーへのバインディングが発生した場合は、参照をdefault_keybindingsに入れます。最後つまり、新しいモードで競合するキーバインディングがデフォルト値をオーバーライドすることを意味します。
全公開:十分に明確ではない場合は、これは私のツールです。