2012-04-07 6 views
2

私はhttp://javassh.org/download/source/de/mud/terminal/vt320.htmlにvt320端末エミュレータにクリックドラッグ方式を追加することに興味があるアマチュアプログラマです。私はこの時、マウスのプレス関数のソースを見に来たとしています。xとyは文字位置とmousecodeがある端末エミュレータでクリックドラッグメッセージを送信するにはどうすればよいですか?

byte b[] = new byte[6]; 
b[0] = 27; 
b[1] = (byte) '['; 
b[2] = (byte) 'M'; 
b[3] = (byte) mousecode; 
b[4] = (byte) (0x20 + x + 1); 
b[5] = (byte) (0x20 + y + 1); 

write(b); // FIXME: writeSpecial here 

は、マウスのボタンに関係しています。マウスドラッグメッセージを追加するためにかなり直進的に見えます。誰でもバイトの方向に私を指すことができますか?あるいは、私は非常に明白なロードブロッキングがないのですか?私は主に、Vimにクリックドラッグを送信し、アンドロイドのためにConnectbotを実行することに興味があります。持っているのが本当に甘いもののように思える。

答えて

2

端末マウスモードはおそらく、xtermのctlseqs文書で最もよく説明されています。端末はマウス報告モードの一つである要約では、それは形式でイベントを送信

CSI M PsをPxとPyのCSIは、単一C1 CSI制御(0x9b)または二どちらかである

バイトシーケンスESC(0x1b)[。

Ps、PxとPyは "ステータス" x座標とy座標を1バイトとして符号化します。このバイトは0x20でオフセットされており、C0制御バイトではなくGLであることが保証されています。 PxとPyは明白です。 Psは、次のフィールドを含むビットマスクです。

  • ビット0〜1は、ボタン番号をエンコードします。 Shift修飾子が保持されている場合は3へのボタン1用2から0、またはリリースの3(それがリリースされたボタンコードしていない)
  • ビット2は、ほとんどの端末がマウスをキャプチャしますけれども、内部ではなくにそれを報告(設定されていますこの状態でアプリケーション)
  • Alt修飾子はCtrl修飾子がマウスイベントがドラッグ運動ではなくプレスである場合
  • ビット5が設定されて保持されている場合
  • ビット4が設定されて保持されている場合、ビット3が設定されています。
  • ビット6は、マウスボタンの範囲をスクロールホイールに使用されるボタン4と5に拡張するように設定されています。

このレポートを使用する3つのマウスモードがあり、すべてDECSMによって設定されています。 (?CSI Pnとの時間)12月プライベートモードを設定します。

  • (ドラッグ)

    • モード1000は、マウスのプレスを報告し、ボタンを保持したときのイベントを解放のみ
    • モード1002は、マウスのプレス、リリース、およびモーションを報告モード1003は、ボタンを押さなくても、マウスのプレス、リリース、モーションイベントを報告します
  • +0

    ありがとうございます!正確には私が探していたもの...私はちょうどそれが動作するかどうかを確認するために、マウス信号を送信して周り遊ぶつもりです、本当にDECSMコードで何をするかわからない... – q335r49

    関連する問題