[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mgl2 019 patch
鈴木(康)です。
<200010151143.LAA15671@atropos.fsn.7n1umj>の記事において
kensyu@y.email.ne.jpさんは書きました。
| それと、get_key() が mgl_set_key_mode(MGL_SK_EXMOUSE_EVENT) している時に
| 仕様に載っていない keycode (0x80FFFFFF) を -1 のかわりに返して来ることが
| あるようです。
| # これ、たいがい get_key() のあとある switch() 文をすりぬけて busy loop
| # をつくりだしますが、動作上は問題なく見えるとこが嫌らしいっす。
バグの場所がわかりました。
mgl2.c:get_key() で、ret &= ~MGL_SKM_MASK としていますが、
ここが原因です。
MGL_SK_EXTRANSLATED モードのときで、モデファイヤーだけ
変更になるパターンのとき、上のコードが帰ります。
その判断のところがバグっていました。
| > | 1 行消去のはずなのに後ろ半分が消えない、みたいな動作をする。
| > | こっちはこれから調べるところ。termcap の設定がミスってる
| > だけだといいな...
| >ncurses と相性が悪いのでしょうか?
| >ひょっとしたら、なんか定義が足りないのかも知れません。
| >なにかわかったら教えてください。
高木さんという方からバグを教えてもらいました。
mgterm.cap で
:ce=\E[K:
:cb=\E[1K:
となっていますが、mgterm では 両方とも動作が同じだったそうです。
vt.c で
case 'K': /* Clear all or part of line */
if (varg[0] == 1)
TextClearBol(varg[0]);
else
TextClearEol(varg[0]);
break;
こんな風にすれば直るそうです。
これでどうでしょうか?
高木さんからは、color 化のパッチももらったので、それも commit しようと
思っています
--
鈴木 康司 @NECソリューションズ
suz@hpc.bs1.fc.nec.co.jp
TEL 042-333-6465