dodaの日記: Eterm lookfeel有効時の描画障害
Eterm lookfeelを有効にしていると描画が更新されなくなる時があるという話を見かけた。
その結果「^[[?5h^[[?5l」というエスケープシーケンスが悪さをしていることが判明。
この記述からReverse Video Mode (DECSCNM)が怪しい事が判ったので、試してみたところ見事に再現。
原因を調べ、取りあえず描画が固まらないように修正してみました。
ただしこの修正は暫定的なもので、Eterm lookfeelが有効な時はDECSCNMがまともに働かないという問題がまだ残っています。
# これも早めに直さないと
ただ、壁紙自体は以前から使っていたので、臭いのが
変更履歴 (Tera Term - 4.60) - Tera Term - SourceForge.JP
-ビジュアルベルに対応した。BEL文字を受信した時に、Beepを鳴らす代わりに画面をフラッシュさせる事ができる。この変更。
この変更は関係ないはずです。エンバグのタイミングは、4.58の
リバースビデオ制御シーケンス(DECSCNM)が正しく働かないのを修正した。
この修正のはずです。
Eterm lookfeelパッチはまだテストが足りていないので、まだ色々と問題が出たりしています。
上述のDECSCNMの問題も、Eterm lookfeelパッチでDECSCNMへの対応がまったくされていなかった影響で、パッチを取り込んだ4.11から4.57までの間、DECSCNMがまともに動かなくなっていました。
4.58でこの問題に気が付いて修正したのですが、この時は逆にEterm lookfeel有効時のテストがもれてしまいました。
この表やこの辺を参照して調べたところ「<Esc> [?5h <Esc> [?5l」に相当するらしいですが、
エスケープシーケンス表 - 初めての、プログラミング 超入門講座 ぷろぐらみんぐどうでしょう。初心者大歓迎!
上記サイトによるとやっていることは「カーソルを画面に表示させない→カーソルを画面に表示させる」と言うだけのことらしいです。
このサイトに書かれているのは、主にMS-DOS用の制御シーケンスのようです。
<ESC>[? や <ESC>[< などで始まるシーケンスは、ECMA-48ではPrivateとされており(5.4.1のb)、ベンダによって動作が違ってきます。
Tera Termは基本的にvt100/xtermの制御シーケンスをサポートしており、<ESC>[?25h, <ESC>[?25lはReverse Video Mode (DECSCNM)のon/offとなっています。
現状、Tera Termがサポートしている制御シーケンスの一覧が無いので、各制御シーケンスがどのような機能なのかはxtermの制御シーケンス一覧などを見てください。
# RLoginはこの辺しっかり書いているんだよなあ。見習わないと。
まぁ、壁紙使わなければ良いだけの話ですし、使っていてもVirualBell設定が有効にならないようにすればいいだけの話ですが、バグちっくなので直して欲しいなぁと思いつつ、自分の環境の問題の可能性もあるので、他の環境で検証取れるまでバグ報告はちょっと待とうと思います。
Eterm lookfeelは普段使っていないのでテストが足りず、問題が有っても気付いていない事が多いです。
ちょっとした問題でも報告して貰えるとありがたいです。
…というような事をもっと簡略化してコメントを書いたら、書き込みを蹴られた。orz
Eterm lookfeel有効時の描画障害 More ログイン