lessのソースコードをハッキングすることなしにはできません。背景の話:
Lessはマウス(スクロールイベントを含む)をまったく処理できません。
端末エミュレーターは、いわゆる代替画面をサポートしています。これは、ほとんどの全画面アプリがその間切り替えて(そして、終了すると通常の画面に戻り、前のコンテンツが「復元」されて)、スクロールバックバッファーがありません。Less -X
は、指定されない限り、この代替画面に切り替えます。
多くの端末エミュレーターは、代替画面モードであり、内部で実行されているアプリケーションがマウスイベントに関心がない場合、スクロールを上または下のキープレスイベントに変換することは理にかなっていると考えました。これはハックであり、通常の画面(シェルプロンプトなどで何が起こるかを想像してください)、またはアプリケーションがマウスを処理したい場合(確かに、実際のマウスイベントを確認する必要があります)のいずれかでは有害です。ただし、デフォルトでは、これらの2つはどちらも実行中less
には保持されないため、このハッキングが始まります(それをサポートするターミナルエミュレーターが対象であり、\e[?1007h
vs。\e[?1007l
)。スクロールイベントは、ターミナルエミュレーターによって上下のキープレスに変換され、lessは実際のキープレスと区別できません。マウススクロールイベントを受け取りません。上方向キーと下方向キーが押されたことを確認します。
つまり、次のようになります。代替画面に切り替え、端末のハックによってスクロールイベントが少ないキープレスに変換され、終了すると通常の画面が復元されます。またはあなたがそうしないと、スクロールイベントをキープレスに変換する魔法がなくなり、スクロールイベントを理解できなくなります。
それで、何ができるでしょうか?まあ、少ないマウスサポートを実装し、スクロールイベント自体を処理する(およびデフォルト以外のクリックまたはコピー/貼り付け動作を有効にする)か、別の奇妙なハックを実装します:終了すると、通常の画面に戻った後less
、最後に終了する前に表示されていた内容を繰り返して、画面一杯のコンテンツを印刷します。
実際には、基本的には次のようになります。申し訳ありませんが、忘れてください。