Bug #3827
closedext/readline can't handle cursor keys and cp932 chars
Description
=begin
Ruby-1.9.2-p0のext/readlineと、GNU libreadline-4.3.2 (http://jarp.does.notwork.org/win32/)の組み合わせでカーソルキー、Home/Endキーなどの特殊キーの入力ができません。また、2バイトコードのうちMSBがオフのコードのみが通ります。例)「表」であれば2バイト目の「\」のみが通る。)
原因は、複合的です。
・1.9.2のext/readlineはIO.getbyteを呼び出していますが、win32の1.9.2の実装ではカーソルキーなどの特殊キーを読めません。そのため無視されています。
・MBCSが符号拡張されてlibreadlineに渡されているので、無視されています。
添付のパッチは、win32の場合は、IO.getbyteではなくlibreadlineのrl_getcを呼び出すようにしたものです。この中で入力の有無を判断してwait_eventsを呼び出すようにしています。
=end
Files
Updated by naruse (Yui NARUSE) about 14 years ago
- Category set to ext
- Status changed from Open to Assigned
- Assignee set to kouji (Kouji Takao)
=begin
=end
Updated by ko1 (Koichi Sasada) over 13 years ago
高尾さん
本件,いかがでしょうか.
Updated by kouji (Kouji Takao) over 13 years ago
Koichi Sasada wrote:
高尾さん
本件,いかがでしょうか.
こちらで試せるようなWin32環境がありません。一旦取り込みますので、試してみていただけないでしょうか。 > Akio Tajima さん
Updated by kouji (Kouji Takao) over 13 years ago
r32181にてパッチをコミットしました。お手数をおかけしますが、確認いただけますでしょうか。
Updated by nahi (Hiroshi Nakamura) over 13 years ago
- Assignee changed from kouji (Kouji Takao) to arton (Akio Tajima)
- Target version set to 1.9.3
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
artonさん、こちら、いかがでしょうか?
Updated by usa (Usaku NAKAMURA) over 13 years ago
ちょっと見てみました。
o カーソルキー -> 使えるようになった
o HomeおよびEndキー -> 使えるようになった
o マルチバイト文字 -> 入力できるようになった
x マルチバイト文字に対するバックスペース -> 1バイトだけ消しやがる
とりあえず、rubyとしては問題解決と言えると思います(最後の1個はreadlineのせいだと思いたい)。
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
- Status changed from Assigned to Closed
確認がとれたようなのでcloseします。また問題が起きたら別チケット作りましょう