[#42169] [Ruby 1.9-Bug#3781][Open] FIBER_USE_NATIVE が有効だと落ちるスクリプトがある — Makoto Kishimoto <redmine@...>
Bug #3781: FIBER_USE_NATIVE が有効だと落ちるスクリプトがある
5 messages
2010/09/01
[#42188] [Ruby-Bug#3794][Open] test/openssl/test_ssl.rb hungs on mswin32_100 — Akio Tajima <redmine@...>
Bug #3794: test/openssl/test_ssl.rb hungs on mswin32_100
8 messages
2010/09/06
[#42194] Enhancing Numeric#step — "Akinori MUSHA" <knu@...>
Numeric#step の仕様の拡張を提案します。
26 messages
2010/09/08
[#42196] Re: Enhancing Numeric#step
— Yukihiro Matsumoto <matz@...>
2010/09/08
まつもと ゆきひろです
[#42200] Re: Enhancing Numeric#step
— "Akinori MUSHA" <knu@...>
2010/09/08
At Wed, 8 Sep 2010 22:46:57 +0900,
[#42204] Re: Enhancing Numeric#step
— Yukihiro Matsumoto <matz@...>
2010/09/09
まつもと ゆきひろです
[#42207] Re: Enhancing Numeric#step
— "Akinori MUSHA" <knu@...>
2010/09/09
At Thu, 9 Sep 2010 09:59:45 +0900,
[#42237] Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— "Akinori MUSHA" <knu@...>
2010/09/12
At Thu, 9 Sep 2010 09:59:45 +0900,
[#42244] Re: Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— "Akinori MUSHA" <knu@...>
2010/09/13
At Sun, 12 Sep 2010 19:51:21 +0900,
[#42305] Re: Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— "Akinori MUSHA" <knu@...>
2010/09/29
At Mon, 13 Sep 2010 12:48:37 +0900,
[#42307] Re: Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— Yukihiro Matsumoto <matz@...>
2010/09/29
まつもと ゆきひろです
[#42308] Re: Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— "Akinori MUSHA" <knu@...>
2010/09/29
At Wed, 29 Sep 2010 16:10:27 +0900,
[#42312] Re: Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— Yukihiro Matsumoto <matz@...>
2010/09/29
まつもと ゆきひろです
[#42318] Re: Introducing "rb_scan_keyword_args()" (was Re: Re: Enhancing Numeric#step)
— "Akinori MUSHA" <knu@...>
2010/09/30
At Wed, 29 Sep 2010 23:43:47 +0900,
[#42232] 1.9.2 readline can't handle cursorkeys, mbcs chars etc (msvcrt) — arton <artonx@...>
artonです。
11 messages
2010/09/10
[#42233] Re: 1.9.2 readline can't handle cursorkeys, mbcs chars etc (msvcrt)
— Yukihiro Matsumoto <matz@...>
2010/09/10
まつもと ゆきひろです
[#42269] [Ruby 1.9-Bug#3836] Kernel.system, spawnがスペースを含むパスで動作しない — Hiroki Najima <redmine@...>
チケット #3836 が更新されました。 (by Hiroki Najima)
12 messages
2010/09/16
[#42270] WindowsでのKernel.systemの挙動、一貫性について
— NAJIMA Hiroki <h.najima@...>
2010/09/16
名島(Nazy)と申します。
[#42274] Re: WindowsでのKernel.systemの挙動、一貫性について
— "U.Nakamura" <usa@...>
2010/09/21
こんにちは、なかむら(う)です。
[#42276] Re: WindowsでのKernel.systemの挙動、一貫性について
— NAJIMA Hiroki <h.najima@...>
2010/09/21
名島(Nazy)です。
[#42277] Re: WindowsでのKernel.systemの挙動、一貫性について
— NAJIMA Hiroki <h.najima@...>
2010/09/21
名島(Nazy)です。
[#42310] ビジースレッドがあるとコンテキストスイッチが起きづらくなる — kuwamoto shintaro <beuniv@...>
こんにちは。
9 messages
2010/09/29
[#42315] [bug:trunk] ビジースレッドがあるとコンテキストスイッチが起きづらくなる
— "U.Nakamura" <usa@...>
2010/09/30
こんにちは、なかむら(う)です。
[ruby-dev:42232] 1.9.2 readline can't handle cursorkeys, mbcs chars etc (msvcrt)
From:
arton <artonx@...>
Date:
2010-09-10 15:55:20 UTC
List:
ruby-dev #42232
artonです。 ちょっと迷いがあるので、gdgdな長文ですみません。 現象) ruby-1.9.2-p0のext/readline と GNU readline 4.3-2 (win32) で、カーソルキー や、Homeキー、Endキーなどが処理されません。また、IMEを有効にした漢字入力 が行えません(MSBがオフのバイトのみが処理される)。 これは、MSWin32だけではなくMingwでも同様のはずです。 原因) 特殊キーが処理できない問題と、漢字入力ができない問題はそれぞれ異なる原因 です。 特殊キーが処理できないのは、win32.cがコンソール読み込みに利用している ReadFile Win32APIがカーソルキーなどの特殊キーを無視することと(Windowsで はこれらのキーに文字列(エスケープシーケンス)が割り当てられていないため、 そもそも処理できない)です。 漢字入力ができないのは、ext/readlineが読み込みに利用しているIO.getbyteが charを返すためlibreadlineが期待しているintにするときに符号拡張されて2バ イトコードを構成する文字コードと判断されないためです。 対応案) 後者については、汎用性があるので0xffでマスクする修正で良いのですが、それ では前者が救われません。人によるとは思いますが、カーソルキーやHomeキーな どを利用したいユーザも存在するので、できれば前者も救いたいと思います。 それで、キー入力の有無を判定して無ければスレッド切り替え器を呼び出し、有 ればlibreadlineのキー入力処理を呼び出す添付のパッチを作ったのですが、GNU readline 4.3.2のWin32ポーティング版に依存した修正なのが気に食わない点で す。 別案) というわけで、win32.cの中でコンソール入力時にはReadFile APIではなく ReadConsoleInput APIのようにキーコードを取れるAPIを利用して、その結果を ANSIのコードに変換し(たとえば↑ならCSI (ESC [)A)、libreadlineについて は現在のwin32ポーティング版とは別に(利用したい人が)用意する、というの が良いのではないかと思います。 結論) とりあえず、現在のMSWIN32でのext/readlineはカーソルキーなどのハンドリン グができず、漢字入力にバグがあります。添付のパッチで修正できます (test/readline/test_readline* が通るのは確認しています)。なので、当てて いただけると短期的には嬉しいです。 が、可能なら汎用的に外部ライブラリとインターフェイスできるように、特殊キー をANSIコードに変換すると良いなぁと考えます。 -- arton <artonx@yahoo.co.jp>
Attachments (1)
readline.patch
(1.44 KB, text/x-diff)
*** readline.c~ Thu Apr 22 17:04:13 2010
--- readline.c Fri Sep 10 23:41:34 2010
*************** readline_getc(FILE *input)
*** 117,122 ****
--- 117,150 ----
if (!readline_instream) return rl_getc(input);
GetOpenFile(readline_instream, ifp);
if (rl_instream != ifp->stdio_file) return rl_getc(input);
+ #if defined(_WIN32)
+ {
+ INPUT_RECORD ir;
+ int n;
+ static int prior_key = '0';
+ for (;;) {
+ if (prior_key > 0xff) {
+ prior_key = rl_getc(ifp->stdio_file);
+ return prior_key;
+ }
+ if (PeekConsoleInput((HANDLE)_get_osfhandle(ifp->fd), &ir, 1, &n)) {
+ if (n == 1) {
+ if (ir.EventType == KEY_EVENT && ir.Event.KeyEvent.bKeyDown) {
+ prior_key = rl_getc(ifp->stdio_file);
+ return prior_key;
+ } else {
+ ReadConsoleInput((HANDLE)_get_osfhandle(ifp->fd), &ir, 1, &n);
+ }
+ } else {
+ HANDLE h = (HANDLE)_get_osfhandle(ifp->fd);
+ rb_w32_wait_events(&h, 1, INFINITE);
+ }
+ } else {
+ break;
+ }
+ }
+ }
+ #endif
c = rb_funcall(readline_instream, id_getbyte, 0, 0);
if (NIL_P(c)) return EOF;
return NUM2CHR(c);