[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00624] Re: ファンクションキーについて
- Subject: [FDclone-users:00624] Re: ファンクションキーについて
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 17 Oct 2006 01:31:20 +0900
しらいです。
In Message-Id <20061016052209.99687.qmail@web2812.mail.bbt.yahoo.co.jp>
Marijuana <god_marijuana@yahoo.co.jp>さんwrites:
> はじめまして、Marijuanaです。
> 主にWindows機からsshで利用しているのですが、
> 2.08d以降、一部のsshクライアントでF5以降のファンクションキーが効かないよ
> うになってしまいました。
> Shiftキーを押した場合は問題なく動作します。
ふむ。確かに環境によってはそうなるようですね。termcap のエ
ントリに依存するので ssh か telnet かは関係ないようです。
termcap のエントリに k5 だけ存在して l5 が存在しない時に再
現します。そもそも F5 の key sequence は k5 で表すのが正しい
んですが、たまに l5 に書いてる環境があるんですよね。
l5 は F5 用のラベル名なのでここに key sequence を書くのは
間違いなんですが、歴史的経緯により FDclone では l5 の方を優
先してますね。
k5 の方は優先度が低いというだけで無効になってる訳じゃない
んですが、こういう bug が生じた時にたまたま先に犠牲になって
しまったと。
ともあれ、以下の patch で解消すると思います。
---- Cut Here ----
diff -u ../old/FD-2.09/term.c ./term.c
--- ../old/FD-2.09/term.c Tue Aug 22 00:00:00 2006
+++ ./term.c Tue Oct 17 01:04:14 2006
@@ -3005,7 +3005,8 @@
return(key);
}
p = &(p -> next[j]);
- if (keyseq[p -> key].len == 1) return(keyseq[p -> key].code);
+ if (keyseq[p -> key].len == 1)
+ return(keyseq[p -> key].code & 0777);
}
else {
for (j = 0; j < p -> num; j++)
@@ -3013,7 +3014,7 @@
if (j >= p -> num) return(key);
p = &(p -> next[j]);
if (keyseq[p -> key].len == 1)
- return(keyseq[p -> key].code);
+ return(keyseq[p -> key].code & 0777);
if (!kbhit2(WAITKEYPAD * 1000L) || (ch = getch2()) == EOF)
return(key);
}
@@ -3024,7 +3025,7 @@
if (j >= p -> num) break;
p = &(p -> next[j]);
if (keyseq[p -> key].len == i + 1)
- return(keyseq[p -> key].code);
+ return(keyseq[p -> key].code & 0777);
if (!kbhit2(WAITKEYPAD * 1000L) || (ch = getch2()) == EOF)
break;
}
---- Cut Here ----
> sshクライアントによっては問題なく利用出来るのですが、これは仕様変更による
> ものでしょうか?
そんな厭味な言い方しなくたって bug fix しますってば :-)
真面目な話、表に見えるような仕様変更があった場合は大概 man
page なり document なりでその旨表明しますので、そういう表記
がなければ仕様変更はないものと思って下さい。
明文化しない仕様変更もたまにあるかも知れませんが、そういう
のはどっちの仕様でも誰も気にしない程度の些細な変更であって、
少なくとも何かが出来なくなったり出来るようになったりしたら、
変更点をどこかに書いています。
また、基本的には revision up では仕様変更はしませんので、
major/minor version up の時以外に何かが出来ないようになった
としたら、それは大概 bug によるものだと思っていいでしょう。
しらい たかし