i3の数字パッドキーバインディングが機能しない

i3の数字パッドキーバインディングが機能しない

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_113387

についてのコメントがあります。GitHub数字キーパッドと言ってください。キーは使用できません。本当に?

同様のバインディングを持っている人はいますか$mod + KP_2

答え1

解決しました。実際に文書に追加する必要があります。私を助けてくれたIRCチャンネルの人々に感謝します。

いいえ、KP_0キーが数字キーパッドにあるため、オンにKP_1なっている場合にのみ数字として機能し、それ以外の場合は機能します。今、一般の人々にとってこれは大丈夫ですが、これがうまくいかない理由は次のとおりです。numlockKP_ENDKP_HOMEi3開いているという事実を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に切り替えます。

numlockxAlways 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)。ws01ws02ws03ws1ws2ws3

完了したら、このファイルを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自動起動)スクリプトを起動するより良い方法があるかどうかはわかりませんが、これが私が見つけた唯一の方法です。

関連情報