私のxterm.js端末では、スワイプでカーソルキーを送信するtouchmoveイベントがあり、左端と下端をスワイプしてスクロール/ホイール操作をしています(端末 'アプリケーションモード'の場合)。カーソルキースワイプは素晴らしいですが、マウスホイールやスクロールの効果的なコードを見つけることができません。今のところ私は2つまたは4つのカーソルキーコードを逆の方向に使ってホイール/スクロールのエッジを模倣しています。行単位でスクロールする必要があります。カーソルを移動するのではなく、テキストを垂直方向に移動するだけです。(マウス)ホイールとスクロールの正しいXTERM/ANSIシーケンスは何ですか?X、Y座標は必要ありません。
私が探している動作の例は、Android用Termux端末アプリです。これは、「アプリケーションモード」で上下にスワイプしたときにマウスホイールのxterm/ansiコードを送信します。詳細...
テスト・セットアップは、非のPrintablesのためのビジュアルを取得するためにxterm.jsとTermux、「猫の-A」または「sedの-n L」を使用して、bashで真夜中の司令官です。
Termuxでは、MCがインストールされているサーバにsshをインストールします。 'mc'を実行します。 Wi-Fiまたはその他の方法をオフにして突然切断します。 'cat -A'または 'sed -n l'を実行します。上下にスワイプします。マウスホイール 'ANSI'コード(実際にはxtermプロトコル)のシンボルを取得する必要があります。これらのような:; 82; 14M ^ [[< 64; 83; 12M
私の理解では、これが意味するべきである^[[< 65 "の\ X1Bを[< 65; 82; 14M"、および " \ x1b [< 64; 83; 12M "、2番目と3番目の数字はX、Y 'ポインタ'座標( '文字')です。しかし、カットアンドペーストしても、 '^ ['をリテラルエスケープに置き換えてもうまくいきません。
私はANSIとXtermのコードをホイールやスクロールのために大量に見てきましたが、動作するものが見つからないようです。
私はここで何が欠けていますか?ワニ口金はリテラルですか?それは何かを象徴していますか?つまり、私はxterm.jsから明らかな反応を得られません。それを取り出して、イベントが発生するたびに残りのコードが出力されます。
多くの端末タイプからスクロール、先行/否定行インデックス/ LFのためのさまざまなシーケンスを試しましたが、ミッドナイトコマンダーや 'アプリケーションモード'や '代替画面バッファ'を使用するその他のユーティリティではスクロールしません'
はい、効果的に( "\のX1B" + '[<65; 82; 14M')、サーバへの実際のエスケープ文字を送信します。 '<'は実際の '<'でした。私はアルゴリズムを追加してセルでタッチ移動位置を取得し、エスケープシーケンスで送信しなければなりませんでした( "\ x1b [<65;" + touchmoveXcol + ';' + touchmoveYrow + 'M')。それはちょっとだけ多くのコードを必要とするので、pxからセルに変換する必要があります。私はいくつかの短い静的シーケンスを望んでいました。それは実際にはより良いです。 xtermのマウスコードを送信するのは、実際のマウスを使用するのと同じです。遠隔のcliアプリは、タッチで起動したときに同じように応答します。 – jdmayfield
私は以下を参照しています:** '<' **はプロトコルの一部であり、*プライベート*コントロールシーケンスとしてのシーケンスを示します。その "[XTerm Control Sequences](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Extended-coordinates)の" CSI ** <**に従う> "は誤字ではありません。 –
はい、正確です。 Xtermは、小さなansiスタイルの制御シーケンスミニプロトコルを介してマウスイベントを送信します。基本的に、ボタン番号、クリックまたはリリース、およびセル座標を示します。この場合、マウスホイールはボタン4と5とみなされ、解放されます。 "\ x1b [上向きの場合は<<65、下の場合は\ x1b [<64")。一度私はそれをシームレスに生きている細胞に接続しました。 – jdmayfield