2017-05-22 34 views
-1

ターミナルで実行されているアプリケーション内のピクセル単位でマウスの位置を取得しようとしています。エスケープシーケンスを使用してマウスの位置をピクセル単位で取得します。

  • how to get MouseMove and MouseClick in bash?からtop answerは、文字セルではなく、ピクセル単位でカウントマウス位置を取得する方法について説明します。
  • アプリがリモートサーバー上で実行されていて、SSH経由でアクセスしている場合(ssh -Xを使用していない場合は、この場合 ではなく)のソリューションを探しています。
  • 私は、ソリューションにエスケープシーケンスまたはIOCTLが関係すると思います。
  • エスケープシーケンスは、1つまたはいくつかの端末エミュレータでのみ機能します(エスケープシーケンスがサポートされていない端末でフォールバックを行うために検出メカニズムを使用できます)。
  • エスケープシーケンスがいくつかの端末エミュレータでのみ機能する場合は、これらの端末(たとえば、Sixel、Tektronix、ReGIS)でグラフィカルな出力を可能にするエスケープシーケンスの「グループ」を知りたいと思っています。

ほとんどのテキストベースのアプリケーションに小さなGUI要素を埋め込むことを目標としています。現在、Sixel、Tektronix、またはReGISを使用している多くの端末エミュレータでは、マウスイベントを取得するために\e[1000hまたは類似のエスケープコードが使用できますが、残念ながらこれらのマウスイベントは低解像度です(ピクセルではなく文字セル内の座標) 。

+0

@ThomasDickery私はここでツールの推奨を求めていません。特定のタスクを実行するためにansiエスケープシーケンスを要求しています。すべての端末がすべてのエスケープシーケンスをサポートしているわけではないので、どのターミナルエミュレータが回答で使用されるエスケープシーケンスをサポートするかについての制約はありません。すべてのコンパイラがすべてのCの機能をサポートしているわけではなく、コンパイラのサポートに気にしないと言う人もいます。 –

答えて

2

のxtermは、以下のエスケープシーケンスでピクセル解像度を有するマウスの位置を報告する:画素分解能に

  • スイッチ:\e[2;1'z
  • レポートマウス位置:\e['|

詳細はhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.html

に記載されています
+0

追加情報:これらのxtermエスケープシーケンス( 'DECELR'と' DECRQLP')は、[Tera Term](https://osdn.net/projects/ttssh2/)と最近のバージョンの[mlterm](http: /mlterm.sourceforge.net/)。 3つすべてがSixelグラフィックスをサポートするように見えるので、これらの機能を組み合わせて基本的なGUIを構築することができます。 –

関連する問題