XTermの複雑なマウス入力

XTermの複雑なマウス入力

~からXterm制御シーケンス文書:

通常のトレースモードは、ボタンが押されたときと放されるとの両方でエスケープシーケンスを送信します。修飾キー(Shift、Ctrl、Meta)情報も送信されます。パラメーター1000をDECSETとして指定してアクティブにします。ボタンを押したり放したりすると、xtermCSI Mを送信CbCxCy

  • の下位2桁CBコード化されたボタン情報:0 = MB1を押す、1 = MB2を押す、2 = MB3を押す、3 =を解除します。

  • 次の3つのビットは、ボタンを押したときに押した修飾子をエンコードし、一緒に追加されます。4 = Shift、8 = Meta、16 = Control。ただし、シフトおよび制御ビットは通常使用できません。xtermポップアップメニューにはマウスでコントロール修飾子を使用し、ボタンイベントのデフォルトの翻訳にはShift修飾子を使用します。これxtermが認識する修飾子は次のとおりです。モジュール1マスクであり、必ずしも「メタ」キーである必要はありません(参照xmodmap(1))。

  • CXそしてサイX10モードでエンコードされたマウスイベントのx座標とy座標。

たとえば、Shift キーを押しながら (1, 1) をマウスの左ボタンでクリックし、Ctrl を押しながら (2, 2) を右クリックし、 (3, 3) でマウスの左ボタンを離します。 、((()4、4)を右クリックすると、どうなりますか?

あなたは得ることができません

ESC [ M 0000100 ! !
ESC [ M 0010001 " "
ESC [ M 0000011 # #
ESC [ M 0000011 $ $

標準入力から?クライアントプログラムはどのように処理する必要がありますか?それはどのように可能ですか?

制御シーケンス文書は読みにくいため、不必要に難しい。

答え1

文書は次の質問に答えます。

Cbエンコーディングの下位2ビットボタン情報:0 = MB1を押す、1 = MB2を押す、2 = MB3を押す、3=オフ。

つまり、使用できません。一般トラッキングモード規約。これはあいまいです。

あいまいなボタンの解除に関する問題を修正しました。拡張座標SGR(1006)コード転送:

  • どのボタンを放すかについてX10のあいまいさを解決するために、ボタンを離すときに別の最終文字が使用されます。

最高の読みやすさのために、PDF有効です(通常のテキストが最後に来ます)。

しかし、質問はほとんど使用されていない場合について尋ねます。Shift修飾子は通常「常に」選択/貼り付けに使用され、修飾子は通常メニューを有効にするために使用されるためControlです。これらの機能はオプションです(マンページの説明を参照)。omitTranslationまたallowMouseOps)。もちろん、実際にxtermについて質問しない限り、端末が何をするかを推測することはできません。xterm-似たようなこれらすべてを文書化します。

答え2

また、この形式はボタンがより多くのマウスを完全に無視します。

あなたが引用した段落の次の段落は次のとおりです。

ホイールマウスはボタン4と5を返すことができます。これらのボタンは、イベントコードに64が追加されている点を除いて、それぞれボタン1と2と同じイベントコードで表示されます。ホイールボタン解除イベントを報告しない

関連情報