Project

General

Profile

Bug #3827

ext/readline can't handle cursor keys and cp932 chars

Added by arton (Akio Tajima) about 10 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-mswin32_100]
Backport:

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

readline.patch (1.44 KB) readline.patch arton (Akio Tajima), 09/14/2010 08:54 PM

Also available in: Atom PDF