私のショートカット解析レベルをすべて見るためのツールはありますか?

私のショートカット解析レベルをすべて見るためのツールはありますか?

コンテキスト

私は約1年間Linux(パワー)ユーザーでした。私はほとんどの問題を自分で解決する方法を学び、ワークフローに役立つ多くのスクリプトを書いています。特に、頻繁に実行するタスクを完了するために多くのショートカットを使用する方法を学びました。ここで問題が始まります。

質問

「ctrl + Tab」を使用してTmuxセッションから次のウィンドウに切り替え、「ctrl + shift + Tab」を使用して前のウィンドウに戻すことができます。いいえプレフィックス(ctrl + b)を使用してください。 ~/.tmux.confに設定したバインディングは次のとおりです。

bind-key -n C-Tab next-window
bind-key -n C-S-Tab previous-window

それが許される答えなので、うまくいくはずですhttps://stackoverflow.com/a/15471269/5273299。 (違いは、「-n」が次のバインディングで機能することが証明されていることです)。

# Remap window navigation to vim-like keys
bind -n C-h select-pane -L
bind -n C-j select-pane -D
bind -n C-k select-pane -U
bind -n C-l select-pane -R

どこを見るべきか分からない。私の観察によると、tmuxは "ctrl + shift"をマッピングされたショートカットとして認識しません。代わりに、「tab」がvim(その端末インスタンスでVIMを開くとき)に渡されるか、デフォルトのコマンドシェルであるFishから「full」に渡されます。

システム

私は走っているhttps://solus-project.com/私のLinuxディストリビューション - デスクトップ環境GNOMEと共にインストールされましたが、私のウィンドウマネージャとしてi3-wmをインストールして使用しました。私の端末エミュレータはxrvt-unicode(urxvt)です。前述のようにShell FISHを使用してください。

明らかな質問は、tmuxがctrl + shiftを解釈できない理由を知っている人はいますか?より一般的な解決策として、これらすべての短縮ソルバー間の解釈レベルの一般的な概要を得る方法を知っている人はいますか?

たとえば、

  • 最初 - キーはハードウェアキーボードからX11サーバーに送信されます。
  • その後、X11からCTRL + Tabが何もマッピングされていない場合、i3に送信されます。
  • その後、i3からCTRL + Tabが何もマッピングされていない場合はurxvtに送信されます。
  • それではお待ちください。

ショートカットが解釈されない部分とそれを解決する方法を知りたいです。

よろしくお願いします!

答え1

端末で実行されているプログラムにキーを送信するための既知の表現/エスケープがないため、端末エミュレータはキーを「食べて」います。

Shift-Tab は通常「\e[Z」 (kcbt/kB/back-tab キー、terminfo(5) を参照) にマッピングされます。これはtmuxがShift-TabとControl-Shift-Tabについて見るものです。問題は、tmuxが(明らかに)任意のキーシーケンスをコマンドにバインドできないため、「標準」キーだけを知っていることです。

これを念頭に置いて、Control-TabとControl-Shift-Tabを「Control-b n」と「Control-b p」(tmuxの次/前のウィンドウの主キー)に再マップするようにurxvtを設定できます。

$ cat | xrdb -override
URxvt.keysym.ISO_Left_Tab: string:\002n
URxvt.keysym.Control-ISO_Left_Tab: string:\002p
! disable the built-in control-shift
URxvt.iso14755:false
^D

"\002" は ^B または Control-b です。 tmuxで別のキープレフィックスを使用する場合は、これを変更する必要があります(たとえば、^ Aの場合は「\ 001」)。

さらに、Xサーバーでは、Shift-TabいいえISO_Left_Tabにマップします。 xev(1) を使用して実際に送信するキーを確認します。

それがうまくいくなら、~/.Xresources-- に次の行を追加し、ファイルがXセッションスクリプトからロードされていることを確認してください(最新のデスクトップにはこれがないかもしれません!)。

関連情報