[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00740] Re: FDclone 2.09g has been released



 しらいです。

In Message-Id <20080126074251.B2FDE40C4FD@yuka.unixusers.net>
        Takashi SHIRAI <shirai@unixusers.net>writes:
>  しらいです。

>  本日 fj.sources に FDclone 2.09g の patch を投稿しましたの
> でご案内申上げます。full package は以下の URL で順次公開され
> ていくと思います。

 2.xx series としては多分これが最後の release になると思い
ます。一部では release 時の解説文が難解で理解出来ないと不評
のようですが、最後なので丁寧に解説してみます。


> 	制御端末が無い場合に異常終了していた点を修正。

 制御端末とは、FDclone を操作しているキーボードや画面のこと
です。そんな大事なものが存在しない状態で起動されるというのは
どういう場合でしょうか?
 FDclone には fdsh という shell 形態があって、これを login
shell として設定してあると rcp(1) や scp(1) が remote shell
としてこれを起動します。
 この時、remote shell の仕事は与えられたコマンドを実行する
だけなので、user interface たるキーボードや画面は必要ありま
せん。なので、端末を切り離して起動することが定番です。

 逆に FDclone の方は UI としての設計の方が先ですから、まず
は自身に割当てられた端末を操作しようとします。で、それが無い
場合にはエラーで落ちる仕様になっていました。
 通常の動作だとそれで問題ないのですが、上記のように非対話的
shell として起動された場合は邪魔なだけですので、その場合は端
末が見つからなくてもエラーを無視するようにしました。


> 	起動ディレクトリを検索し切れていなかった点を若干解消。

 [FDclone-users:00734] に始まる thread の bug fix です。詳
細は [FDclone-users:00735] に書いたとおりですが、FD-2.09g で
の対処ではもう少し検索候補を増やしてみました。
 login shell として起動されると init(8) の仕様で argv[0] の
起動ファイル名が「-」で始まるようになっており、多くの shell
はそれをして login shell かどうかを決めています。
 で、「-」付ファイル名だった場合には、どの検索パスにも見つ
からなかった場合に login shell として設定されているファイル
名を既定値とするようにしました。
 これでも完璧ではないのですが、従来のように home directory
が既定値となっているよりは遥かに現実に即した仕様だと思います。


> 	特殊キー入力の取りこぼしを若干改善。

 login shell としての挙動を確認するために rlogin を繰返して
いたところ、rlogin の回数が増えて反応速度が落ちてくるとカー
ソルキーが効かなくなってくることが判りました。
 原因はカーソルキーの一般的なシーケンス ESC-O-A や ESC-O-B
の前半部 ESC-O の部分が、Meta + Shift + o を押下した際のシー
ケンス ESC-O と一致する点にあります。
 この違いは、ESC-O の次に来る文字が 120ms 以内に受信出来る
か否かで判断していたのですが、遅延の大きな環境ではカーソルキ
ー押下時でも O と A の間が 120ms 以上空いてしまうんですね。
 かと言ってこの 120ms をもっと長くしてしまうと、Meta + O の
オートリピート時に ESC-O と後続の ESC-O とを区切れなくなって
しまって、キーが効かなくなります。

 なので、苦肉の策として、ESC-O の次に何が来たとしても 360ms
以内であれば取り敢えず読んでみることにしました。
 その上で、ESC-O-A のようにシーケンステーブルに存在するよう
だったら ESC-O-A として採用し、テーブルになければ ESC-O + A
として別々に扱うことにしました。
 この結果、識別子 WAITMETA が Meta キーの待ち時間として使わ
れなくなってしまったので、次点の用途である multibyte 文字の
次キー待ち時間を採用して WAITKANJI と解明しています。

 この修正により、大抵の場合はキー入力の解釈が期待通りになる
のですが、例外として Meta + Shift + o と Shift + a とを続け
様に押下した際の誤認率が上がってしまっています。
 従来ですと 120ms 空ければ別文字と見なされたので、一般的な
人の反応速度としては、それ以内に続けて打鍵するのは難しかった
のですが、現在は 360ms 以内となるので割と簡単に実現可能です。
 とは言え、Meta キーの入力とカーソルキーの入力とどちらが一
般的かと言われると、カーソルキーの誤認率を下げることを優先せ
ざるを得ないので、こういう実装になりました。
 「若干改善」という表現はこういう事情があるからなのです。

                                               しらい たかし