拡張マウストラッキングに対応するならばSGR-style
vimが対応しているマウスプロトコルの内、xtermは224桁問題があるし、DEC Locator modeはvimでの動作が微妙。という事で他のマウスプロトコルが使えないかと天の啓示を受けた。 #TeraTerm
2011-04-07 19:44:33以前調べた時はxtermのとDEC Locator Mode以外はほとんど資料が無いので諦めたが、http://bit.ly/eyAS9i にちょこっとだけNetTermの情報が載っているので、とりあえずNetTermのを検討してみる。 #TeraTerm
2011-04-07 19:47:01NetTermのマウスプロトコルの初期化シーケンスがわからなかったので、ttymouse=xterm2とttymouse=nettermでの出力の違いを比べて見たら、xtermの初期化シーケンスが無くなっただけだった。もしかして初期化シーケンスは無いの? #TeraTerm
2011-04-07 20:00:00まさか常時onにするわけにもいかないので、とりあえずプライベートモードでon/off出来るようにして、vim側はt_ti/t_teで対応するようにしようか。 #TeraTerm
2011-04-07 20:01:39次に問題になったのはどのイベントで送るか。送る内容はちょこっと有るが、どのタイミングで送るかの情報が無い。 #TeraTerm
2011-04-07 20:12:46という事でしょうがないからvimのソースで確認したら…左ボタンダウンしか無いみたいなんだけれど。送る内容にボタン情報が無いのもこれが理由? なんかいっきにやる気が失せた。 #TeraTerm
2011-04-07 20:15:38気を取り直して、NetTermのマウスプロトコルを実装してみた。xtermのような224桁問題はないし、DEC Locator modeのようにダブルクリックの動作が怪しかったりはしなくていいのだが、やはりドラッグでの選択が出来ないのが痛い。 #TeraTerm
2011-04-07 22:04:43NetTermは決定打にはならなかったので、また別のプロトコルを検討してみよう。とは言っても http://bit.ly/eyAS9i に有るように残りはjsbtermとptermのみ。しかもptermはQNX用なのでUnix上のvimでは使えない。 #TeraTerm
2011-04-07 22:12:27という事でjsbtermを検討してみよう。一応vimのソースにプロトコルの概要が書いてあったのでそれを参考に。あとはソースを読んで。 #TeraTerm
2011-04-07 22:14:12げげ、cygwinのvimも-mouse_jsbtermでビルドしてある。早くも暗雲が立ち込めてきた。orz #TeraTerm
2011-04-07 22:19:11FreeBSD portsのvimをjsbtermサポートを有効にしてでビルドしようとしたがうまくいかない。ソースを見ると、sysmouseサポートと同時に有効に出来ないようになってるじゃん。orz
2011-04-07 23:17:26まあ224行以上で使う事なんてまず無いのが救いか。無理に出すならばWUXGAのモニタを縦にしてフォントをかなり小さめにするとか? #TeraTerm
2011-04-08 11:08:14もしかして http://bit.ly/faqmJS ならば普通224行以上に出来るとか。テスト用に買うか? http://bit.ly/huaF0o #TeraTerm
2011-04-08 11:12:57vimのソースをいじって、mouse_sysmouseとmouse_jsbtermの両方をサポート出来るようにしてみた。とりあえずビルドは通ったが、ちゃんと動くかは未確認。
2011-04-08 13:09:27vimのソースでjsbterm対応のコードを確認した。初期化シーケンスがCSIの振りをしてCSIの形式に従っていない似非CSIじゃん。対応させる気がかなり萎えた。 #TeraTerm
2011-04-08 13:20:24報告形式も似非CSIだけれど、こっちはあまり気にしない。xterm形式のマウスレポートも似非CSIだし。 #TeraTerm
2011-04-08 13:21:01jsbtermのマウスプロトコルはボタンアップ/ダウンやコントロール/シフトキーの状態、移動イベントなどが取れたりして機能的には充実しているので、初期化シーケンスの変態さは我慢してサポートしてみる事にした。 #TeraTerm
2011-04-08 20:51:38でも流石にvimのソースのコメントだけじゃ情報が足りない。どういうタイミングで送ればいいの? 通常のモードとAdvanced messagingの違いは? QuietモードはAckを送らないらしいけれど、送る場合はいつどんな内容を送るの? #TeraTerm
2011-04-08 20:55:51という事でもっとマシな情報はないかと探したら、どうやらjsbtermはというのはこいつの事らしい。 http://bit.ly/eVZy0U #TeraTerm
2011-04-08 20:58:01サポートページに、マウスプロトコルについても書かれたマニュアルやマウスレポートのサンプルデータとかあるので、色々と資料をあさってみよう。 #TeraTerm
2011-04-08 21:00:38