拡張マウストラッキングに対応するならばSGR-style

Tera Termの中の人、@ttdodaさんによる、端末エミュレータの拡張マウストラッキング実装するなら、SGR-styleがいいよ、というおはなし。オレンジのたまごアイコンはmltermの人で、濃紺にArchのアイコンはyaftの人です。
4
いわもと こういち @ttdoda

vimが対応しているマウスプロトコルの内、xtermは224桁問題があるし、DEC Locator modeはvimでの動作が微妙。という事で他のマウスプロトコルが使えないかと天の啓示を受けた。 #TeraTerm

2011-04-07 19:44:33
いわもと こういち @ttdoda

以前調べた時はxtermのとDEC Locator Mode以外はほとんど資料が無いので諦めたが、http://bit.ly/eyAS9i にちょこっとだけNetTermの情報が載っているので、とりあえずNetTermのを検討してみる。 #TeraTerm

2011-04-07 19:47:01
いわもと こういち @ttdoda

NetTermのマウスプロトコルの初期化シーケンスがわからなかったので、ttymouse=xterm2とttymouse=nettermでの出力の違いを比べて見たら、xtermの初期化シーケンスが無くなっただけだった。もしかして初期化シーケンスは無いの? #TeraTerm

2011-04-07 20:00:00
いわもと こういち @ttdoda

まさか常時onにするわけにもいかないので、とりあえずプライベートモードでon/off出来るようにして、vim側はt_ti/t_teで対応するようにしようか。 #TeraTerm

2011-04-07 20:01:39
いわもと こういち @ttdoda

次に問題になったのはどのイベントで送るか。送る内容はちょこっと有るが、どのタイミングで送るかの情報が無い。 #TeraTerm

2011-04-07 20:12:46
いわもと こういち @ttdoda

という事でしょうがないからvimのソースで確認したら…左ボタンダウンしか無いみたいなんだけれど。送る内容にボタン情報が無いのもこれが理由? なんかいっきにやる気が失せた。 #TeraTerm

2011-04-07 20:15:38
いわもと こういち @ttdoda

気を取り直して、NetTermのマウスプロトコルを実装してみた。xtermのような224桁問題はないし、DEC Locator modeのようにダブルクリックの動作が怪しかったりはしなくていいのだが、やはりドラッグでの選択が出来ないのが痛い。 #TeraTerm

2011-04-07 22:04:43
いわもと こういち @ttdoda

左ボタンダウンイベントしか無いのでしょうがないのは判るが… #TeraTerm

2011-04-07 22:06:11
いわもと こういち @ttdoda

NetTermは決定打にはならなかったので、また別のプロトコルを検討してみよう。とは言っても http://bit.ly/eyAS9i に有るように残りはjsbtermとptermのみ。しかもptermはQNX用なのでUnix上のvimでは使えない。 #TeraTerm

2011-04-07 22:12:27
いわもと こういち @ttdoda

という事でjsbtermを検討してみよう。一応vimのソースにプロトコルの概要が書いてあったのでそれを参考に。あとはソースを読んで。 #TeraTerm

2011-04-07 22:14:12
いわもと こういち @ttdoda

ただ問題なのは、FreeBSD portsで入れたvimは-mouse_jsbtermなんだよなあ。 #TeraTerm

2011-04-07 22:16:41
いわもと こういち @ttdoda

げげ、cygwinのvimも-mouse_jsbtermでビルドしてある。早くも暗雲が立ち込めてきた。orz #TeraTerm

2011-04-07 22:19:11
いわもと こういち @ttdoda

FreeBSD portsのvimをjsbtermサポートを有効にしてでビルドしようとしたがうまくいかない。ソースを見ると、sysmouseサポートと同時に有効に出来ないようになってるじゃん。orz

2011-04-07 23:17:26
いわもと こういち @ttdoda

そもそもJSB termってのがなにものなのかよくわかっていません。

2011-04-07 23:18:06
いわもと こういち @ttdoda

xterm形式のマウスレポートで、行位置の上限設定をミスってた。orz #TeraTerm

2011-04-08 11:05:20
いわもと こういち @ttdoda

まあ224行以上で使う事なんてまず無いのが救いか。無理に出すならばWUXGAのモニタを縦にしてフォントをかなり小さめにするとか? #TeraTerm

2011-04-08 11:08:14
いわもと こういち @ttdoda

もしかして http://bit.ly/faqmJS ならば普通224行以上に出来るとか。テスト用に買うか? http://bit.ly/huaF0o #TeraTerm

2011-04-08 11:12:57
いわもと こういち @ttdoda

ビデオカード側を揃えるのが面倒そうなので、多分買わないと思うけれど。

2011-04-08 11:13:50
いわもと こういち @ttdoda

vimのソースをいじって、mouse_sysmouseとmouse_jsbtermの両方をサポート出来るようにしてみた。とりあえずビルドは通ったが、ちゃんと動くかは未確認。

2011-04-08 13:09:27
いわもと こういち @ttdoda

vimのソースでjsbterm対応のコードを確認した。初期化シーケンスがCSIの振りをしてCSIの形式に従っていない似非CSIじゃん。対応させる気がかなり萎えた。 #TeraTerm

2011-04-08 13:20:24
いわもと こういち @ttdoda

報告形式も似非CSIだけれど、こっちはあまり気にしない。xterm形式のマウスレポートも似非CSIだし。 #TeraTerm

2011-04-08 13:21:01
いわもと こういち @ttdoda

jsbtermのマウスプロトコルはボタンアップ/ダウンやコントロール/シフトキーの状態、移動イベントなどが取れたりして機能的には充実しているので、初期化シーケンスの変態さは我慢してサポートしてみる事にした。 #TeraTerm

2011-04-08 20:51:38
いわもと こういち @ttdoda

でも流石にvimのソースのコメントだけじゃ情報が足りない。どういうタイミングで送ればいいの? 通常のモードとAdvanced messagingの違いは? QuietモードはAckを送らないらしいけれど、送る場合はいつどんな内容を送るの? #TeraTerm

2011-04-08 20:55:51
いわもと こういち @ttdoda

という事でもっとマシな情報はないかと探したら、どうやらjsbtermはというのはこいつの事らしい。 http://bit.ly/eVZy0U #TeraTerm

2011-04-08 20:58:01
いわもと こういち @ttdoda

サポートページに、マウスプロトコルについても書かれたマニュアルやマウスレポートのサンプルデータとかあるので、色々と資料をあさってみよう。 #TeraTerm

2011-04-08 21:00:38
1 ・・ 14 次へ