From 09389b47d2f5968867a1af502bc532c03d4d675a Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 21 Jul 2015 10:52:19 +0000 Subject: console.c: undefined vk * ext/io/console/console.c (console_key_pressed_p): raise undefined virtual key code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/io/console/console.c | 6 +- ext/io/console/depend | 10 +- ext/io/console/win32_vk.h | 480 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 493 insertions(+), 3 deletions(-) create mode 100644 ext/io/console/win32_vk.h (limited to 'ext/io') diff --git a/ext/io/console/console.c b/ext/io/console/console.c index 4c49abaa41..3548f2a336 100644 --- a/ext/io/console/console.c +++ b/ext/io/console/console.c @@ -698,6 +698,7 @@ console_cursor_set(VALUE io, VALUE cpos) return console_goto(io, RARRAY_AREF(cpos, 0), RARRAY_AREF(cpos, 1)); } +#include "win32_vk.h" #include "win32_vk.inc" static VALUE @@ -717,8 +718,9 @@ console_key_pressed_p(VALUE io, VALUE k) StringValueCStr(k); } t = console_win32_vk(RSTRING_PTR(k), RSTRING_LEN(k)); - if (!t) rb_raise(rb_eArgError, "unknown virtual key code: %"PRIsVALUE, k); - vk = t->vk; + if (!t || (vk = (short)t->vk) == -1) { + rb_raise(rb_eArgError, "unknown virtual key code: %"PRIsVALUE, k); + } } return GetKeyState(vk) & 0x80 ? Qtrue : Qfalse; } diff --git a/ext/io/console/depend b/ext/io/console/depend index 63063a6945..b3aa1b5f74 100644 --- a/ext/io/console/depend +++ b/ext/io/console/depend @@ -1,16 +1,24 @@ $(OBJS): $(HDRS) $(ruby_headers) \ - $(VK_HEADER) \ + $(VK_HEADER) $(VK_HEADER:.chksum=.h) \ $(hdrdir)/ruby/io.h \ $(hdrdir)/ruby/encoding.h \ $(hdrdir)/ruby/oniguruma.h win32_vk.inc: win32_vk.list +win32_vk.h: win32_vk.list + .list.inc: gperf --ignore-case -E -C -P -p -j1 -i 1 -g -o -t -K ofs -N console_win32_vk -k* $< \ | sed 's/(int)(long)&((\(struct stringpool_t\) *\*)0)->\(stringpool_[a-z0-9]*\)/offsetof(\1, \2)/g' \ > $(@F) +.list.h: + $(RUBY) -anF, \ + -e '(n=$$F[1]) and (n.strip!; /\AVK_/=~n) and' \ + -e 'puts %[#ifndef #{n}\n# define #{n} (unsigned short)-1\n#endif]' \ + $< > $@ + .SUFFIXES: .chksum .list .inc .list.chksum: diff --git a/ext/io/console/win32_vk.h b/ext/io/console/win32_vk.h new file mode 100644 index 0000000000..f4aad03ce2 --- /dev/null +++ b/ext/io/console/win32_vk.h @@ -0,0 +1,480 @@ +#ifndef VK_LBUTTON +# define VK_LBUTTON (unsigned short)-1 +#endif +#ifndef VK_RBUTTON +# define VK_RBUTTON (unsigned short)-1 +#endif +#ifndef VK_CANCEL +# define VK_CANCEL (unsigned short)-1 +#endif +#ifndef VK_MBUTTON +# define VK_MBUTTON (unsigned short)-1 +#endif +#ifndef VK_XBUTTON1 +# define VK_XBUTTON1 (unsigned short)-1 +#endif +#ifndef VK_XBUTTON2 +# define VK_XBUTTON2 (unsigned short)-1 +#endif +#ifndef VK_BACK +# define VK_BACK (unsigned short)-1 +#endif +#ifndef VK_TAB +# define VK_TAB (unsigned short)-1 +#endif +#ifndef VK_CLEAR +# define VK_CLEAR (unsigned short)-1 +#endif +#ifndef VK_RETURN +# define VK_RETURN (unsigned short)-1 +#endif +#ifndef VK_SHIFT +# define VK_SHIFT (unsigned short)-1 +#endif +#ifndef VK_CONTROL +# define VK_CONTROL (unsigned short)-1 +#endif +#ifndef VK_MENU +# define VK_MENU (unsigned short)-1 +#endif +#ifndef VK_PAUSE +# define VK_PAUSE (unsigned short)-1 +#endif +#ifndef VK_CAPITAL +# define VK_CAPITAL (unsigned short)-1 +#endif +#ifndef VK_KANA +# define VK_KANA (unsigned short)-1 +#endif +#ifndef VK_HANGEUL +# define VK_HANGEUL (unsigned short)-1 +#endif +#ifndef VK_HANGUL +# define VK_HANGUL (unsigned short)-1 +#endif +#ifndef VK_JUNJA +# define VK_JUNJA (unsigned short)-1 +#endif +#ifndef VK_FINAL +# define VK_FINAL (unsigned short)-1 +#endif +#ifndef VK_HANJA +# define VK_HANJA (unsigned short)-1 +#endif +#ifndef VK_KANJI +# define VK_KANJI (unsigned short)-1 +#endif +#ifndef VK_ESCAPE +# define VK_ESCAPE (unsigned short)-1 +#endif +#ifndef VK_CONVERT +# define VK_CONVERT (unsigned short)-1 +#endif +#ifndef VK_NONCONVERT +# define VK_NONCONVERT (unsigned short)-1 +#endif +#ifndef VK_ACCEPT +# define VK_ACCEPT (unsigned short)-1 +#endif +#ifndef VK_MODECHANGE +# define VK_MODECHANGE (unsigned short)-1 +#endif +#ifndef VK_SPACE +# define VK_SPACE (unsigned short)-1 +#endif +#ifndef VK_PRIOR +# define VK_PRIOR (unsigned short)-1 +#endif +#ifndef VK_NEXT +# define VK_NEXT (unsigned short)-1 +#endif +#ifndef VK_END +# define VK_END (unsigned short)-1 +#endif +#ifndef VK_HOME +# define VK_HOME (unsigned short)-1 +#endif +#ifndef VK_LEFT +# define VK_LEFT (unsigned short)-1 +#endif +#ifndef VK_UP +# define VK_UP (unsigned short)-1 +#endif +#ifndef VK_RIGHT +# define VK_RIGHT (unsigned short)-1 +#endif +#ifndef VK_DOWN +# define VK_DOWN (unsigned short)-1 +#endif +#ifndef VK_SELECT +# define VK_SELECT (unsigned short)-1 +#endif +#ifndef VK_PRINT +# define VK_PRINT (unsigned short)-1 +#endif +#ifndef VK_EXECUTE +# define VK_EXECUTE (unsigned short)-1 +#endif +#ifndef VK_SNAPSHOT +# define VK_SNAPSHOT (unsigned short)-1 +#endif +#ifndef VK_INSERT +# define VK_INSERT (unsigned short)-1 +#endif +#ifndef VK_DELETE +# define VK_DELETE (unsigned short)-1 +#endif +#ifndef VK_HELP +# define VK_HELP (unsigned short)-1 +#endif +#ifndef VK_LWIN +# define VK_LWIN (unsigned short)-1 +#endif +#ifndef VK_RWIN +# define VK_RWIN (unsigned short)-1 +#endif +#ifndef VK_APPS +# define VK_APPS (unsigned short)-1 +#endif +#ifndef VK_SLEEP +# define VK_SLEEP (unsigned short)-1 +#endif +#ifndef VK_NUMPAD0 +# define VK_NUMPAD0 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD1 +# define VK_NUMPAD1 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD2 +# define VK_NUMPAD2 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD3 +# define VK_NUMPAD3 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD4 +# define VK_NUMPAD4 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD5 +# define VK_NUMPAD5 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD6 +# define VK_NUMPAD6 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD7 +# define VK_NUMPAD7 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD8 +# define VK_NUMPAD8 (unsigned short)-1 +#endif +#ifndef VK_NUMPAD9 +# define VK_NUMPAD9 (unsigned short)-1 +#endif +#ifndef VK_MULTIPLY +# define VK_MULTIPLY (unsigned short)-1 +#endif +#ifndef VK_ADD +# define VK_ADD (unsigned short)-1 +#endif +#ifndef VK_SEPARATOR +# define VK_SEPARATOR (unsigned short)-1 +#endif +#ifndef VK_SUBTRACT +# define VK_SUBTRACT (unsigned short)-1 +#endif +#ifndef VK_DECIMAL +# define VK_DECIMAL (unsigned short)-1 +#endif +#ifndef VK_DIVIDE +# define VK_DIVIDE (unsigned short)-1 +#endif +#ifndef VK_F1 +# define VK_F1 (unsigned short)-1 +#endif +#ifndef VK_F2 +# define VK_F2 (unsigned short)-1 +#endif +#ifndef VK_F3 +# define VK_F3 (unsigned short)-1 +#endif +#ifndef VK_F4 +# define VK_F4 (unsigned short)-1 +#endif +#ifndef VK_F5 +# define VK_F5 (unsigned short)-1 +#endif +#ifndef VK_F6 +# define VK_F6 (unsigned short)-1 +#endif +#ifndef VK_F7 +# define VK_F7 (unsigned short)-1 +#endif +#ifndef VK_F8 +# define VK_F8 (unsigned short)-1 +#endif +#ifndef VK_F9 +# define VK_F9 (unsigned short)-1 +#endif +#ifndef VK_F10 +# define VK_F10 (unsigned short)-1 +#endif +#ifndef VK_F11 +# define VK_F11 (unsigned short)-1 +#endif +#ifndef VK_F12 +# define VK_F12 (unsigned short)-1 +#endif +#ifndef VK_F13 +# define VK_F13 (unsigned short)-1 +#endif +#ifndef VK_F14 +# define VK_F14 (unsigned short)-1 +#endif +#ifndef VK_F15 +# define VK_F15 (unsigned short)-1 +#endif +#ifndef VK_F16 +# define VK_F16 (unsigned short)-1 +#endif +#ifndef VK_F17 +# define VK_F17 (unsigned short)-1 +#endif +#ifndef VK_F18 +# define VK_F18 (unsigned short)-1 +#endif +#ifndef VK_F19 +# define VK_F19 (unsigned short)-1 +#endif +#ifndef VK_F20 +# define VK_F20 (unsigned short)-1 +#endif +#ifndef VK_F21 +# define VK_F21 (unsigned short)-1 +#endif +#ifndef VK_F22 +# define VK_F22 (unsigned short)-1 +#endif +#ifndef VK_F23 +# define VK_F23 (unsigned short)-1 +#endif +#ifndef VK_F24 +# define VK_F24 (unsigned short)-1 +#endif +#ifndef VK_NUMLOCK +# define VK_NUMLOCK (unsigned short)-1 +#endif +#ifndef VK_SCROLL +# define VK_SCROLL (unsigned short)-1 +#endif +#ifndef VK_OEM_NEC_EQUAL +# define VK_OEM_NEC_EQUAL (unsigned short)-1 +#endif +#ifndef VK_OEM_FJ_JISHO +# define VK_OEM_FJ_JISHO (unsigned short)-1 +#endif +#ifndef VK_OEM_FJ_MASSHOU +# define VK_OEM_FJ_MASSHOU (unsigned short)-1 +#endif +#ifndef VK_OEM_FJ_TOUROKU +# define VK_OEM_FJ_TOUROKU (unsigned short)-1 +#endif +#ifndef VK_OEM_FJ_LOYA +# define VK_OEM_FJ_LOYA (unsigned short)-1 +#endif +#ifndef VK_OEM_FJ_ROYA +# define VK_OEM_FJ_ROYA (unsigned short)-1 +#endif +#ifndef VK_LSHIFT +# define VK_LSHIFT (unsigned short)-1 +#endif +#ifndef VK_RSHIFT +# define VK_RSHIFT (unsigned short)-1 +#endif +#ifndef VK_LCONTROL +# define VK_LCONTROL (unsigned short)-1 +#endif +#ifndef VK_RCONTROL +# define VK_RCONTROL (unsigned short)-1 +#endif +#ifndef VK_LMENU +# define VK_LMENU (unsigned short)-1 +#endif +#ifndef VK_RMENU +# define VK_RMENU (unsigned short)-1 +#endif +#ifndef VK_BROWSER_BACK +# define VK_BROWSER_BACK (unsigned short)-1 +#endif +#ifndef VK_BROWSER_FORWARD +# define VK_BROWSER_FORWARD (unsigned short)-1 +#endif +#ifndef VK_BROWSER_REFRESH +# define VK_BROWSER_REFRESH (unsigned short)-1 +#endif +#ifndef VK_BROWSER_STOP +# define VK_BROWSER_STOP (unsigned short)-1 +#endif +#ifndef VK_BROWSER_SEARCH +# define VK_BROWSER_SEARCH (unsigned short)-1 +#endif +#ifndef VK_BROWSER_FAVORITES +# define VK_BROWSER_FAVORITES (unsigned short)-1 +#endif +#ifndef VK_BROWSER_HOME +# define VK_BROWSER_HOME (unsigned short)-1 +#endif +#ifndef VK_VOLUME_MUTE +# define VK_VOLUME_MUTE (unsigned short)-1 +#endif +#ifndef VK_VOLUME_DOWN +# define VK_VOLUME_DOWN (unsigned short)-1 +#endif +#ifndef VK_VOLUME_UP +# define VK_VOLUME_UP (unsigned short)-1 +#endif +#ifndef VK_MEDIA_NEXT_TRACK +# define VK_MEDIA_NEXT_TRACK (unsigned short)-1 +#endif +#ifndef VK_MEDIA_PREV_TRACK +# define VK_MEDIA_PREV_TRACK (unsigned short)-1 +#endif +#ifndef VK_MEDIA_STOP +# define VK_MEDIA_STOP (unsigned short)-1 +#endif +#ifndef VK_MEDIA_PLAY_PAUSE +# define VK_MEDIA_PLAY_PAUSE (unsigned short)-1 +#endif +#ifndef VK_LAUNCH_MAIL +# define VK_LAUNCH_MAIL (unsigned short)-1 +#endif +#ifndef VK_LAUNCH_MEDIA_SELECT +# define VK_LAUNCH_MEDIA_SELECT (unsigned short)-1 +#endif +#ifndef VK_LAUNCH_APP1 +# define VK_LAUNCH_APP1 (unsigned short)-1 +#endif +#ifndef VK_LAUNCH_APP2 +# define VK_LAUNCH_APP2 (unsigned short)-1 +#endif +#ifndef VK_OEM_1 +# define VK_OEM_1 (unsigned short)-1 +#endif +#ifndef VK_OEM_PLUS +# define VK_OEM_PLUS (unsigned short)-1 +#endif +#ifndef VK_OEM_COMMA +# define VK_OEM_COMMA (unsigned short)-1 +#endif +#ifndef VK_OEM_MINUS +# define VK_OEM_MINUS (unsigned short)-1 +#endif +#ifndef VK_OEM_PERIOD +# define VK_OEM_PERIOD (unsigned short)-1 +#endif +#ifndef VK_OEM_2 +# define VK_OEM_2 (unsigned short)-1 +#endif +#ifndef VK_OEM_3 +# define VK_OEM_3 (unsigned short)-1 +#endif +#ifndef VK_OEM_4 +# define VK_OEM_4 (unsigned short)-1 +#endif +#ifndef VK_OEM_5 +# define VK_OEM_5 (unsigned short)-1 +#endif +#ifndef VK_OEM_6 +# define VK_OEM_6 (unsigned short)-1 +#endif +#ifndef VK_OEM_7 +# define VK_OEM_7 (unsigned short)-1 +#endif +#ifndef VK_OEM_8 +# define VK_OEM_8 (unsigned short)-1 +#endif +#ifndef VK_OEM_AX +# define VK_OEM_AX (unsigned short)-1 +#endif +#ifndef VK_OEM_102 +# define VK_OEM_102 (unsigned short)-1 +#endif +#ifndef VK_ICO_HELP +# define VK_ICO_HELP (unsigned short)-1 +#endif +#ifndef VK_ICO_00 +# define VK_ICO_00 (unsigned short)-1 +#endif +#ifndef VK_PROCESSKEY +# define VK_PROCESSKEY (unsigned short)-1 +#endif +#ifndef VK_ICO_CLEAR +# define VK_ICO_CLEAR (unsigned short)-1 +#endif +#ifndef VK_PACKET +# define VK_PACKET (unsigned short)-1 +#endif +#ifndef VK_OEM_RESET +# define VK_OEM_RESET (unsigned short)-1 +#endif +#ifndef VK_OEM_JUMP +# define VK_OEM_JUMP (unsigned short)-1 +#endif +#ifndef VK_OEM_PA1 +# define VK_OEM_PA1 (unsigned short)-1 +#endif +#ifndef VK_OEM_PA2 +# define VK_OEM_PA2 (unsigned short)-1 +#endif +#ifndef VK_OEM_PA3 +# define VK_OEM_PA3 (unsigned short)-1 +#endif +#ifndef VK_OEM_WSCTRL +# define VK_OEM_WSCTRL (unsigned short)-1 +#endif +#ifndef VK_OEM_CUSEL +# define VK_OEM_CUSEL (unsigned short)-1 +#endif +#ifndef VK_OEM_ATTN +# define VK_OEM_ATTN (unsigned short)-1 +#endif +#ifndef VK_OEM_FINISH +# define VK_OEM_FINISH (unsigned short)-1 +#endif +#ifndef VK_OEM_COPY +# define VK_OEM_COPY (unsigned short)-1 +#endif +#ifndef VK_OEM_AUTO +# define VK_OEM_AUTO (unsigned short)-1 +#endif +#ifndef VK_OEM_ENLW +# define VK_OEM_ENLW (unsigned short)-1 +#endif +#ifndef VK_OEM_BACKTAB +# define VK_OEM_BACKTAB (unsigned short)-1 +#endif +#ifndef VK_ATTN +# define VK_ATTN (unsigned short)-1 +#endif +#ifndef VK_CRSEL +# define VK_CRSEL (unsigned short)-1 +#endif +#ifndef VK_EXSEL +# define VK_EXSEL (unsigned short)-1 +#endif +#ifndef VK_EREOF +# define VK_EREOF (unsigned short)-1 +#endif +#ifndef VK_PLAY +# define VK_PLAY (unsigned short)-1 +#endif +#ifndef VK_ZOOM +# define VK_ZOOM (unsigned short)-1 +#endif +#ifndef VK_NONAME +# define VK_NONAME (unsigned short)-1 +#endif +#ifndef VK_PA1 +# define VK_PA1 (unsigned short)-1 +#endif +#ifndef VK_OEM_CLEAR +# define VK_OEM_CLEAR (unsigned short)-1 +#endif -- cgit v1.2.1