web-dev-qa-db-ja.com

一部のアプリケーションはbsh over sshでのマウスクリックをどのように受け入れますか?

lynxブラウザ、htopなどのアプリケーションやその他の多くのアプリケーションは、bashシェルを介してsshで位置依存のマウスクリックを受け入れます。 sshがコマンドラインインターフェイスであることを知っています。では、マウスのクリックをどのように受け入れますか?

6
Abhik Bose

私見、そのような [〜#〜] tui [〜#〜] アプリケーションを書く最も簡単な方法は ncurses を使用することです。

「New Curses」は、基礎となるデバイスの詳細からTUIの設計を抽象化するライブラリです。引用したすべてのソフトウェアは、ncursesを使用してインターフェイスをレンダリングします。

ターミナルエミュレータ(xterm、gnome-termなど)をクリックすると、ターミナルエミュレータは ANSIエスケープコード のシーケンスでクリックを変換します。これらのシーケンスは、ncursesライブラリーによってイベントで読み取られ、変換されます。

スタックオーバーフローの例を見つけることができます: NCursesのマウス移動イベント

7
andcoz

それは非常に単純です。古い学校のシリアルターミナルセッションでは、マウスは対話型シェルセッションに入力を送信するためのオプションではありませんでした。 (私はいくつかの初期の例外があったと確信しています。)

ただし、ターミナルエミュレーターグラフィカルデスクトップセッション内で実行している場合、ターミナルエミュレーターはマウスに対応しています。

高レベルで発生するのは、マウスイベントがターミナルエミュレーター(xtermなど)によってターミナルシーケンスに変換され、それらが、実行中のアプリケーション、htopvimなどの対話型シェルセッションに送信されることです。この場合、vimは、マウスイベントではなく、(単純な一連のキーボードイベントが生成するような)ターミナルシーケンスのみを表示します。

4
111---