i3で数字パッド数字キーをバインドしようとしましたが、成功しませんでした。これは単純なことのように見えますが、うまくいきません。理由がわからない。
キーボードレイアウト:アメリカ英語のデフォルト
たとえば、
bindsym $mod+KP_1 workspace $ws1
何もしないでください。
bindcode $mod+$KP_1 workspace $ws1
私のi3設定に次のエラーがあるというエラーメッセージが表示されます。
ERROR: Could not parse "$mod+$KP_1" as an input code, ignoring this binding.
$mod
バインディングコードを実行する前に設定してください$KP_1
。133
87
についてのコメントがあります。GitHub数字キーパッドと言ってください。キーは使用できません。本当に?
同様のバインディングを持っている人はいますか$mod + KP_2
?
答え1
解決しました。実際に文書に追加する必要があります。私を助けてくれたIRCチャンネルの人々に感謝します。
いいえ、KP_0
キーが数字キーパッドにあるため、オンにKP_1
なっている場合にのみ数字として機能し、それ以外の場合は機能します。今、一般の人々にとってこれは大丈夫ですが、これがうまくいかない理由は次のとおりです。numlock
KP_END
KP_HOME
i3
開いているという事実をi3
教えなければならないからだ。numlock
それ自体はそれを理解するほどスマートではありません。
したがって、それに応じてキーバインディングを作成する必要があります。したがって、正しいキーバインディングは次のようになります。
bindsym $mod+mod2+KP_1 workspace $ws1
bindsym $mod+mod2+KP_2 workspace $ws2
bindsym $mod+mod2+KP_3 workspace $ws3
bindsym $mod+mod2+KP_4 workspace $ws4
bindsym $mod+mod2+KP_5 workspace $ws5
bindsym $mod+mod2+KP_6 workspace $ws6
bindsym $mod+mod2+KP_7 workspace $ws7
bindsym $mod+mod2+KP_8 workspace $ws8
明らかな質問は何ですかmod2
?まあ、ちょうど走ってみるxmodmap
とわかるでしょう。これはほとんどの場合本当ですNumLock
。
今この設定を見ると、バインディングに別のキー押下を追加したように見えますが、そうではありません。最初の修飾子と数字キーパッドキーを押すだけですnumlock
。押すON
必要はありません。mod2
いわば「押された」からだ。
そのため、キーボードでSuper(mod)を押してKP_1を押してワークスペースを1に切り替えます。
numlockx
Always On Loginなどのプログラムを使用することをお勧めします。
答え2
Shift修飾子を追加してウィンドウをワークスペースに移動するには、数字キーパッド数字が数字キーパッドコマンド(KP_1
->などKP_End
)に変換されることに注意してください。xmodmap -pke | grep KP_
を使用すると、どの番号がどのコマンドに対応しているかを確認できます。奇妙なことに、mumlock(mod2)を明示的に指定し、i3でShiftを指定する必要があります。これは私にとって効果的です。
bindsym $mod+mod2+KP_1 workspace $ws1
bindsym $mod+mod2+Shift+KP_End move container to workspace $ws1
編集:言及された内容で正しい解決策を見つけました。ジタブ質問。遅すぎましたが、まあ:D
答え3
うーん…完成するのに6時間ほどかかりましたね。それで、私がどうしたのか簡単な履歴書を作成します。
モニターが2つあって、次のようにしました。
ファイルを作成し、workspaces.conf
その中で次のことを行いました。
# assign workspaces to screens
workspace 1 output $Monitor_left
workspace 2 output $Monitor_left
...
workspace 9 output $Monitor_left
workspace 10 output $Monitor_left
workspace 11 output $Monitor_right
workspace 12 output $Monitor_right
...
workspace 19 output $Monitor_right
workspace 20 output $Monitor_right
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws01 "1"
set $ws02 "2"
....
set $ws09 "9"
set $ws00 "10"
set $ws11 "11"
...
set $ws19 "19"
set $ws20 "20"
モニターが2台以上の場合は、代わりに、、WS
...で名前を付けてください。 (理由は後で申し上げます。D)。ws01
ws02
ws03
ws1
ws2
ws3
完了したら、このファイルをi3configに含めることができます。
構成
include $HOME/.config/i3/workspaces.conf
次に、スーパーキーを追加したことを確認してください(コマンドのみを使用してくださいxmodmap
)。
#Master key Super "Windows" and Alt Left "alt"
(soon you will understand why 2 mod keys)
set $mod Mod4
set $mod_alt Mod1
変数の内部にモニターを設定します(コマンドを使用してxrand
出力が何であるかを確認できます)。
set $Monitor_left DP-0
set $Monitor_right HDMI-0
次に、次のようにconfをワークスペースに切り替えます。
# switch to workspace
# Monitor1
bindsym $mod+mod2+KP_1 workspace $ws01 ; move workspace to output $Monitor_left
bindsym $mod+mod2+KP_2 workspace $ws02 ; move workspace to output $Monitor_left
......
bindsym $mod+mod2+KP_9 workspace $ws09 ; move workspace to output $Monitor_left
bindsym $mod+mod2+KP_0 workspace $ws00 ; move workspace to output $Monitor_left
# Monitor2
bindsym $mod_alt+mod2+KP_1 workspace $ws11 ; move workspace to output $Monitor_right
bindsym $mod_alt+mod2+KP_2 workspace $ws12 ; move workspace to output $Monitor_right
.....
bindsym $mod_alt+mod2+KP_9 workspace $ws19 ; move workspace to output $Monitor_right
bindsym $mod_alt+mod2+KP_0 workspace $ws20 ; move workspace to output $Monitor_right
ほぼ完璧です :) これからsuperkey+number
(windows_key) / を使ってsuperkey+numpad_number
左モニター(1~10)のすべてのワークスペースに切り替え、alt_left+numpad_number
右モニター(11~20)のすべてのワークスペースに切り替えることができます。
コンテナを別のワークスペースに移動します。これを行うには、ここにこの行をコピーするか、次のコマンドを使用してxmodmap -pke | grep KP_
正しいキーを見つけます。
# move focused container to workspace
# (monitor1 numpad)
bindsym $mod+Mod2+Shift+KP_End move container to workspace $ws01
bindsym $mod+Mod2+Shift+KP_Down move container to workspace $ws02
bindsym $mod+Mod2+Shift+KP_Next move container to workspace $ws03
bindsym $mod+Mod2+Shift+KP_Left move container to workspace $ws04
bindsym $mod+Mod2+Shift+KP_Begin move container to workspace $ws05
bindsym $mod+Mod2+Shift+KP_Right move container to workspace $ws06
bindsym $mod+Mod2+Shift+KP_Home move container to workspace $ws07
bindsym $mod+Mod2+Shift+KP_Up move container to workspace $ws08
bindsym $mod+Mod2+Shift+KP_Prior move container to workspace $ws09
bindsym $mod+Mod2+Shift+KP_Insert move container to workspace $ws00
# (Monitor2 numpad)
bindsym $mod_alt+Mod2+Shift+KP_End move container to workspace $ws11
bindsym $mod_alt+Mod2+Shift+KP_Down move container to workspace $ws12
bindsym $mod_alt+Mod2+Shift+KP_Next move container to workspace $ws13
bindsym $mod_alt+Mod2+Shift+KP_Left move container to workspace $ws14
bindsym $mod_alt+Mod2+Shift+KP_Begin move container to workspace $ws15
bindsym $mod_alt+Mod2+Shift+KP_Right move container to workspace $ws16
bindsym $mod_alt+Mod2+Shift+KP_Home move container to workspace $ws17
bindsym $mod_alt+Mod2+Shift+KP_Up move container to workspace $ws18
bindsym $mod_alt+Mod2+Shift+KP_Prior move container to workspace $ws19
bindsym $mod_alt+Mod2+Shift+KP_Insert move container to workspace $ws20
私はi3barを使ったことがなく、設定方法がわかりません。ただし、Polybarを使用している場合は、次のように設定する必要があります。
[モジュール/i3] ...
ws-icon-0 = "00;X"
ws-icon-1 = "01;I"
ws-icon-2 = "02;II"
ws-icon-3 = "03;III"
ws-icon-4 = "04;IV"
ws-icon-5 = "05;V"
ws-icon-6 = "06;VI"
ws-icon-7 = "07;VII"
ws-icon-8 = "08;VIII"
ws-icon-9 = "09;IX"
次のようにWSに電話をかけると番号11とws-icon-1 = "1;I"
衝突しますのでご注意ください。ws
システム起動のバグ
$mod+1
システムを起動するたびに、i3がワークフロー01()ではなくワークフロー1()から起動することを確認しました$mod+mod2+KP_1
。だから私はこの問題を解決するためにPythonでミニスクリプトを作成しました。
Workflow.pyの設定
import pyautogui
p=pyautogui
p.hotkey('win', 'right')
p.hotkey('altleft', 'num1')
p.hotkey('win', 'left')
p.hotkey('win', 'num1')
もちろん、i3が起動するたびに(i3自動起動)スクリプトを起動するより良い方法があるかどうかはわかりませんが、これが私が見つけた唯一の方法です。