マウスホイールで画面内をスクロール

マウスホイールで画面内をスクロール

私はscreen単純なステータスバーを使用します。何かをスクロールするには、Ctrl+aを使ってESCコピーモードに切り替え、キーボードを使ってスクロールします。これは、マルチバッファや分割でもうまく機能します。

私の質問は次のとおりですマウスホイールを使って画面をスクロールするにはどうすればよいですか?

注1:マウスホイールを使用して端末内をスクロールできますが、マルチバッファとスプリットではまったく機能しません。

ノート2: termcapinfo xterm* ti@:te@ このソリューションはターミナルスクロールを使用するので役に立ちません。これは、ステータス行、マルチバッファ、およびパーティションと互換性がありません。

IMHOの最高のソリューションは次のとおりです。

  • コピーモードでは、キーボード配列と同様にマウスホイールを使用してスクロールします。
  • 画面が通常モードのときにマウスホイールイベント「スクロールアップ」が発生すると、画面はコピーモードに切り替わり、そのイベントを処理します。
  • 画面がコピーモードで、マウスホイールイベント「下にスクロール」が発生した場合、すなわち、一番下に達すると、画面はコピーモードを終了する。
  • 画面ステータスバーは常に表示され、更新されます(キーボードにスクロールするとすでに機能します)。

答え1

screen確かに知るホイールマウスについて。端末とキーボード(エスケープシーケンスを含む)から送信されたキーだけがわかります。

  • screen知るマウスクリック(ソースコードには「左マウスクリック」のみが記載されています)。ソースコードを読むことができます(ディスプレイ.c)何をしているのかを確認し、それ以上は必要ありません(これは特にscreenはマウスイベントがデコードされる唯一の場所です。
  • xtermマウスプロトコルは、ホイールマウスを示すためにボタン4と5を送信します。 screenこれについて知られていることはありません。端末で実行されているアプリケーションで特に処理できます。
  • 一部の端末では、上下のスクロールをシミュレートするために代替画面にカーソルキーを送信します。 screen(予想どおり)またそれをアプリケーションに渡します。

関連情報