0

次のような他のすべてのプログラムでvim機能を実装するプログラムを作成するにはどうすればよいですか:

  1. 他のすべてのプログラムの前にキーストロークをキャプチャする
  2. 前の状態に応じて、通常モード、挿入モード、またはビジュアル モードのいずれであるかを決定します
  3. 挿入モードの場合は、フォーカスされたウィンドウに正確なキーストロークを送信します
  4. 構成ファイルから対応するアクションを読み取らず、そのアクション (別のキーストローク) をフォーカスされたウィンドウに送信しない場合

たとえば、「j」を押すと、通常モードの場合は「スクロールダウン」ショートカットが送信され、挿入モードの場合は「j」文字がフォーカスされたウィンドウまたはプログラムに送信されます

私の質問は

出来ますか ?同様のプログラムはありますか?他のすべてのプログラムの前にキーストロークをキャプチャする方法は? フォーカスされたウィンドウにキーストロークを送信する方法は? 実際にどのライブラリを使用する必要がありますか?

ありがとう

4

1 に答える 1

0

私はちょっと私の答えを見つけます。i3wmxdotoolを使用すると、vim のような動作をシミュレートできます

i3wm では、異なるモードを定義し、次のように異なるアクションに同じショートカットを割り当てることができます:

mode "workspace" {
    bindsym j workspace prev
    bindsym h workspace prev
    bindsym k workspace next 
    bindsym l workspace next 
    bindsym Escape mode "default"
}
bindsym $mod+w mode "workspace"

上記のコードを .i3/cofig ファイルに追加します。 $mod には Mod4 (win キー) を使用しました

Mod4+w i3 を押すとワークスペース モードになり、hljk でワークスペースを変更できます。

ここで、実際には私にとってはうまくいかなかった別の例ですが、あなたにとってはうまくいくかもしれません

mode "vim" {
    bindsym --release j exec --no-startup-id xdotool key --clearmodifiers Down 
    bindsym --release k exec --no-startup-id xdotool key --clearmodifiers Up
    bindsym --release h exec --no-startup-id xdotool key --clearmodifiers Left 
    bindsym --release l exec --no-startup-id xdotool key --clearmodifiers Right
    bindsym Escape mode "default"
}
bindsym $mod+m mode "vim"
于 2013-05-06T21:52:24.993 に答える