reflexion 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +37 -6
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +1 -1
  5. data/.doc/ext/reflex/clipboard.cpp +1 -1
  6. data/.doc/ext/reflex/color_event.cpp +76 -0
  7. data/.doc/ext/reflex/color_picker.cpp +113 -0
  8. data/.doc/ext/reflex/constraint.cpp +1 -1
  9. data/.doc/ext/reflex/contact_event.cpp +1 -1
  10. data/.doc/ext/reflex/control_change_event.cpp +1 -1
  11. data/.doc/ext/reflex/device.cpp +1 -1
  12. data/.doc/ext/reflex/device_event.cpp +1 -1
  13. data/.doc/ext/reflex/draw_event.cpp +1 -1
  14. data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
  15. data/.doc/ext/reflex/event.cpp +1 -1
  16. data/.doc/ext/reflex/file_dialog.cpp +181 -0
  17. data/.doc/ext/reflex/file_event.cpp +103 -0
  18. data/.doc/ext/reflex/filter.cpp +1 -1
  19. data/.doc/ext/reflex/focus_event.cpp +1 -1
  20. data/.doc/ext/reflex/frame_event.cpp +1 -1
  21. data/.doc/ext/reflex/gamepad.cpp +48 -0
  22. data/.doc/ext/reflex/image_view.cpp +1 -1
  23. data/.doc/ext/reflex/key_event.cpp +1 -274
  24. data/.doc/ext/reflex/line_shape.cpp +1 -1
  25. data/.doc/ext/reflex/link_constraint.cpp +1 -1
  26. data/.doc/ext/reflex/menu.cpp +6 -5
  27. data/.doc/ext/reflex/midi.cpp +9 -2
  28. data/.doc/ext/reflex/midi_event.cpp +1 -1
  29. data/.doc/ext/reflex/motion_event.cpp +1 -1
  30. data/.doc/ext/reflex/native.cpp +18 -6
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +1 -1
  33. data/.doc/ext/reflex/pointer.cpp +1 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +2 -2
  35. data/.doc/ext/reflex/polygon_shape.cpp +1 -1
  36. data/.doc/ext/reflex/rect_shape.cpp +1 -1
  37. data/.doc/ext/reflex/reflex.cpp +566 -232
  38. data/.doc/ext/reflex/screen.cpp +27 -1
  39. data/.doc/ext/reflex/scroll_event.cpp +1 -1
  40. data/.doc/ext/reflex/selector.cpp +1 -1
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +1 -1
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +1 -1
  45. data/.doc/ext/reflex/text_event.cpp +104 -0
  46. data/.doc/ext/reflex/timer.cpp +1 -1
  47. data/.doc/ext/reflex/timer_event.cpp +1 -1
  48. data/.doc/ext/reflex/update_event.cpp +1 -1
  49. data/.doc/ext/reflex/view.cpp +110 -56
  50. data/.doc/ext/reflex/wheel_constraint.cpp +1 -1
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +226 -17
  53. data/.github/workflows/release-gem.yml +2 -49
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -37
  56. data/ChangeLog.md +54 -0
  57. data/Gemfile.lock +13 -8
  58. data/Rakefile +13 -2
  59. data/Reflex.podspec +2 -2
  60. data/VERSION +1 -1
  61. data/ext/reflex/application.cpp +41 -6
  62. data/ext/reflex/capture_event.cpp +1 -1
  63. data/ext/reflex/chase_constraint.cpp +1 -1
  64. data/ext/reflex/clipboard.cpp +1 -1
  65. data/ext/reflex/color_event.cpp +80 -0
  66. data/ext/reflex/color_picker.cpp +121 -0
  67. data/ext/reflex/constraint.cpp +1 -1
  68. data/ext/reflex/contact_event.cpp +1 -1
  69. data/ext/reflex/control_change_event.cpp +1 -1
  70. data/ext/reflex/device.cpp +1 -1
  71. data/ext/reflex/device_event.cpp +1 -1
  72. data/ext/reflex/draw_event.cpp +1 -1
  73. data/ext/reflex/ellipse_shape.cpp +1 -1
  74. data/ext/reflex/event.cpp +1 -1
  75. data/ext/reflex/extconf.rb +4 -2
  76. data/ext/reflex/file_dialog.cpp +194 -0
  77. data/ext/reflex/file_event.cpp +108 -0
  78. data/ext/reflex/filter.cpp +1 -1
  79. data/ext/reflex/focus_event.cpp +1 -1
  80. data/ext/reflex/frame_event.cpp +1 -1
  81. data/ext/reflex/gamepad.cpp +50 -0
  82. data/ext/reflex/image_view.cpp +1 -1
  83. data/ext/reflex/key_event.cpp +1 -275
  84. data/ext/reflex/line_shape.cpp +1 -1
  85. data/ext/reflex/link_constraint.cpp +1 -1
  86. data/ext/reflex/menu.cpp +8 -7
  87. data/ext/reflex/midi.cpp +11 -3
  88. data/ext/reflex/midi_event.cpp +1 -1
  89. data/ext/reflex/motion_event.cpp +1 -1
  90. data/ext/reflex/native.cpp +18 -6
  91. data/ext/reflex/note_event.cpp +1 -1
  92. data/ext/reflex/pin.cpp +1 -1
  93. data/ext/reflex/pointer.cpp +1 -1
  94. data/ext/reflex/pointer_event.cpp +2 -2
  95. data/ext/reflex/polygon_shape.cpp +1 -1
  96. data/ext/reflex/rect_shape.cpp +1 -1
  97. data/ext/reflex/reflex.cpp +568 -232
  98. data/ext/reflex/screen.cpp +31 -2
  99. data/ext/reflex/scroll_event.cpp +1 -1
  100. data/ext/reflex/selector.cpp +1 -1
  101. data/ext/reflex/selector.h +9 -9
  102. data/ext/reflex/shape.cpp +1 -1
  103. data/ext/reflex/snap_constraint.cpp +1 -1
  104. data/ext/reflex/style.cpp +1 -1
  105. data/ext/reflex/style_length.cpp +1 -1
  106. data/ext/reflex/text_event.cpp +111 -0
  107. data/ext/reflex/timer.cpp +1 -1
  108. data/ext/reflex/timer_event.cpp +1 -1
  109. data/ext/reflex/update_event.cpp +1 -1
  110. data/ext/reflex/view.cpp +121 -61
  111. data/ext/reflex/wheel_constraint.cpp +1 -1
  112. data/ext/reflex/wheel_event.cpp +1 -1
  113. data/ext/reflex/window.cpp +256 -25
  114. data/include/reflex/application.h +10 -0
  115. data/include/reflex/color_picker.h +65 -0
  116. data/include/reflex/event.h +178 -88
  117. data/include/reflex/file_dialog.h +73 -0
  118. data/include/reflex/gamepad.h +3 -0
  119. data/include/reflex/menu.h +3 -3
  120. data/include/reflex/midi.h +3 -0
  121. data/include/reflex/reflex.h +2 -0
  122. data/include/reflex/ruby/application.h +6 -1
  123. data/include/reflex/ruby/color_picker.h +89 -0
  124. data/include/reflex/ruby/event.h +62 -29
  125. data/include/reflex/ruby/file_dialog.h +89 -0
  126. data/include/reflex/ruby/gamepad.h +46 -0
  127. data/include/reflex/ruby/reflex.h +3 -0
  128. data/include/reflex/ruby/view.h +92 -44
  129. data/include/reflex/ruby/window.h +60 -1
  130. data/include/reflex/ruby.h +3 -0
  131. data/include/reflex/screen.h +11 -2
  132. data/include/reflex/view.h +28 -16
  133. data/include/reflex/window.h +40 -8
  134. data/include/reflex.h +3 -0
  135. data/lib/reflex/application.rb +5 -5
  136. data/lib/reflex/autoinit.rb +3 -1
  137. data/lib/reflex/button.rb +3 -3
  138. data/lib/reflex/color_event.rb +16 -0
  139. data/lib/reflex/color_picker.rb +45 -0
  140. data/lib/reflex/control_change_event.rb +17 -0
  141. data/lib/reflex/file_dialog.rb +70 -0
  142. data/lib/reflex/file_event.rb +37 -0
  143. data/lib/reflex/helper.rb +58 -7
  144. data/lib/reflex/key_event.rb +9 -4
  145. data/lib/reflex/menu.rb +17 -1
  146. data/lib/reflex/model.rb +19 -19
  147. data/lib/reflex/note_event.rb +1 -1
  148. data/lib/reflex/pointer.rb +14 -3
  149. data/lib/reflex/pointer_event.rb +12 -1
  150. data/lib/reflex/reflex.rb +5 -0
  151. data/lib/reflex/shape.rb +14 -14
  152. data/lib/reflex/style.rb +16 -16
  153. data/lib/reflex/text_event.rb +40 -0
  154. data/lib/reflex/timer.rb +3 -3
  155. data/lib/reflex/view.rb +29 -14
  156. data/lib/reflex/wheel_event.rb +12 -3
  157. data/lib/reflex/window.rb +25 -13
  158. data/lib/reflex.rb +8 -2
  159. data/reflex.gemspec +4 -4
  160. data/samples/ime.rb +100 -0
  161. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  162. data/samples/menu.rb +4 -1
  163. data/samples/model.rb +3 -3
  164. data/samples/test/alert.rb +93 -0
  165. data/samples/test/always_on.rb +76 -0
  166. data/samples/test/app_background.rb +51 -0
  167. data/samples/test/boundary.rb +75 -0
  168. data/samples/test/callback_exception.rb +101 -0
  169. data/samples/test/cancel.rb +53 -0
  170. data/samples/test/color_picker.rb +63 -0
  171. data/samples/test/file_dialog.rb +102 -0
  172. data/samples/window_style.rb +156 -0
  173. data/src/application.cpp +159 -18
  174. data/src/application.h +92 -7
  175. data/src/color_picker.cpp +113 -0
  176. data/src/color_picker.h +36 -0
  177. data/src/event.cpp +410 -252
  178. data/src/event.h +12 -0
  179. data/src/file_dialog.cpp +163 -0
  180. data/src/file_dialog.h +52 -0
  181. data/src/gamepad.cpp +42 -5
  182. data/src/gamepad.h +4 -0
  183. data/src/ios/app_delegate.mm +5 -3
  184. data/src/ios/application.mm +24 -0
  185. data/src/ios/color_picker.mm +19 -0
  186. data/src/ios/file_dialog.mm +21 -0
  187. data/src/ios/gamepad.mm +4 -4
  188. data/src/ios/menu.mm +5 -0
  189. data/src/ios/reflex.mm +8 -0
  190. data/src/ios/screen.mm +26 -0
  191. data/src/ios/view_controller.mm +2 -30
  192. data/src/ios/window.mm +38 -9
  193. data/src/menu.cpp +66 -4
  194. data/src/menu.h +17 -1
  195. data/src/midi.cpp +61 -31
  196. data/src/osx/app_delegate.h +4 -0
  197. data/src/osx/app_delegate.mm +102 -22
  198. data/src/osx/application.mm +88 -6
  199. data/src/osx/color_picker.mm +112 -0
  200. data/src/osx/event.h +10 -0
  201. data/src/osx/event.mm +84 -30
  202. data/src/osx/file_dialog.mm +168 -0
  203. data/src/osx/gamepad.mm +2 -2
  204. data/src/osx/gamepad_hid.mm +1 -1
  205. data/src/osx/menu.mm +177 -33
  206. data/src/osx/native_window.h +16 -2
  207. data/src/osx/native_window.mm +114 -57
  208. data/src/osx/opengl_view.h +2 -1
  209. data/src/osx/opengl_view.mm +184 -43
  210. data/src/osx/reflex.mm +38 -0
  211. data/src/osx/screen.mm +36 -0
  212. data/src/osx/window.mm +106 -24
  213. data/src/pointer.cpp +13 -4
  214. data/src/pointer.h +4 -0
  215. data/src/rays.h +46 -0
  216. data/src/sdl/application.cpp +68 -8
  217. data/src/sdl/color_picker.cpp +18 -0
  218. data/src/sdl/event.cpp +24 -3
  219. data/src/sdl/event.h +12 -0
  220. data/src/sdl/file_dialog.cpp +20 -0
  221. data/src/sdl/gamepad.cpp +3 -7
  222. data/src/sdl/menu.cpp +5 -0
  223. data/src/sdl/reflex.cpp +20 -0
  224. data/src/sdl/screen.cpp +36 -0
  225. data/src/sdl/window.cpp +142 -29
  226. data/src/shape.cpp +15 -10
  227. data/src/view.cpp +287 -198
  228. data/src/view.h +4 -2
  229. data/src/vk.h +416 -0
  230. data/src/win32/application.cpp +162 -12
  231. data/src/win32/application.h +20 -0
  232. data/src/win32/color_picker.cpp +82 -0
  233. data/src/win32/event.cpp +114 -12
  234. data/src/win32/event.h +21 -4
  235. data/src/win32/file_dialog.cpp +226 -0
  236. data/src/win32/gamepad.cpp +9 -2
  237. data/src/win32/menu.cpp +191 -53
  238. data/src/win32/menu.h +9 -1
  239. data/src/win32/opengl.cpp +2 -9
  240. data/src/win32/reflex.cpp +44 -3
  241. data/src/win32/screen.cpp +164 -3
  242. data/src/win32/screen.h +8 -0
  243. data/src/win32/tray.cpp +191 -0
  244. data/src/win32/tray.h +22 -0
  245. data/src/win32/vk.cpp +11 -0
  246. data/src/win32/window.cpp +809 -148
  247. data/src/win32/window.h +6 -0
  248. data/src/window.cpp +718 -185
  249. data/src/window.h +66 -33
  250. data/src/world.cpp +9 -1
  251. data/test/helper.rb +17 -0
  252. data/test/test_application.rb +90 -1
  253. data/test/test_chase_constraint.rb +1 -3
  254. data/test/test_color_event.rb +36 -0
  255. data/test/test_color_picker.rb +62 -0
  256. data/test/test_constraint.rb +2 -4
  257. data/test/test_event.rb +1 -1
  258. data/test/test_file_dialog.rb +48 -0
  259. data/test/test_file_event.rb +43 -0
  260. data/test/test_has_text_preedit.rb +54 -0
  261. data/test/test_key_event.rb +20 -5
  262. data/test/test_link_constraint.rb +1 -3
  263. data/test/test_menu.rb +40 -10
  264. data/test/test_pointer.rb +33 -23
  265. data/test/test_pointer_event.rb +24 -9
  266. data/test/test_reflex.rb +36 -0
  267. data/test/test_screen.rb +24 -2
  268. data/test/test_snap_constraint.rb +1 -3
  269. data/test/test_text_event.rb +54 -0
  270. data/test/test_view.rb +41 -4
  271. data/test/test_wheel_constraint.rb +1 -3
  272. data/test/test_wheel_event.rb +13 -5
  273. data/test/test_window.rb +196 -44
  274. metadata +80 -10
  275. data/.github/workflows/utils.rb +0 -127
@@ -1,6 +1,8 @@
1
1
  #include "reflex/ruby/reflex.h"
2
2
 
3
3
 
4
+ #include <assert.h>
5
+ #include "reflex/exception.h"
4
6
  #include "reflex/ruby/view.h"
5
7
  #include "reflex/ruby/constraint.h"
6
8
  #include "reflex/ruby/timer.h"
@@ -12,6 +14,9 @@
12
14
  #include "defs.h"
13
15
 
14
16
 
17
+ RUCY_DEFINE_CONVERT_TO(REFLEX_EXPORT, Reflex::KeyCode)
18
+
19
+
15
20
  static Reflex::View*
16
21
  create_root_view ()
17
22
  {
@@ -89,6 +94,292 @@ RUCY_DEF0(fin)
89
94
  }
90
95
  RUCY_END
91
96
 
97
+ static Rucy::Value
98
+ get_key_symbol (Reflex::KeyCode code)
99
+ {
100
+ switch ((int) code)
101
+ {
102
+ #define CASE(key) case Reflex::KEY_##key
103
+ #define SYMBOL1(name) SYMBOL2(_##name, #name)
104
+ #define SYMBOL2(var, sym) {RUCY_SYMBOL(var, sym); return var.value();}
105
+
106
+ #if !defined(OSX) && !defined(WIN32)
107
+ #define HID
108
+ #endif
109
+
110
+ CASE(A): SYMBOL1(a);
111
+ CASE(B): SYMBOL1(b);
112
+ CASE(C): SYMBOL1(c);
113
+ CASE(D): SYMBOL1(d);
114
+ CASE(E): SYMBOL1(e);
115
+ CASE(F): SYMBOL1(f);
116
+ CASE(G): SYMBOL1(g);
117
+ CASE(H): SYMBOL1(h);
118
+ CASE(I): SYMBOL1(i);
119
+ CASE(J): SYMBOL1(j);
120
+ CASE(K): SYMBOL1(k);
121
+ CASE(L): SYMBOL1(l);
122
+ CASE(M): SYMBOL1(m);
123
+ CASE(N): SYMBOL1(n);
124
+ CASE(O): SYMBOL1(o);
125
+ CASE(P): SYMBOL1(p);
126
+ CASE(Q): SYMBOL1(q);
127
+ CASE(R): SYMBOL1(r);
128
+ CASE(S): SYMBOL1(s);
129
+ CASE(T): SYMBOL1(t);
130
+ CASE(U): SYMBOL1(u);
131
+ CASE(V): SYMBOL1(v);
132
+ CASE(W): SYMBOL1(w);
133
+ CASE(X): SYMBOL1(x);
134
+ CASE(Y): SYMBOL1(y);
135
+ CASE(Z): SYMBOL1(z);
136
+
137
+ CASE(0):
138
+ CASE(NUM_0): SYMBOL1(0);
139
+ CASE(1):
140
+ CASE(NUM_1): SYMBOL1(1);
141
+ CASE(2):
142
+ CASE(NUM_2): SYMBOL1(2);
143
+ CASE(3):
144
+ CASE(NUM_3): SYMBOL1(3);
145
+ CASE(4):
146
+ CASE(NUM_4): SYMBOL1(4);
147
+ CASE(5):
148
+ CASE(NUM_5): SYMBOL1(5);
149
+ CASE(6):
150
+ CASE(NUM_6): SYMBOL1(6);
151
+ CASE(7):
152
+ CASE(NUM_7): SYMBOL1(7);
153
+ CASE(8):
154
+ CASE(NUM_8): SYMBOL1(8);
155
+ CASE(9):
156
+ CASE(NUM_9): SYMBOL1(9);
157
+
158
+ CASE(MINUS): SYMBOL1(minus);
159
+ CASE(EQUAL): SYMBOL1(equal);
160
+ CASE(COMMA): SYMBOL1(comma);
161
+ CASE(PERIOD): SYMBOL1(period);
162
+ CASE(SEMICOLON): SYMBOL1(semicolon);
163
+ CASE(QUOTE): SYMBOL1(quote);
164
+ CASE(SLASH): SYMBOL1(slash);
165
+ CASE(BACKSLASH): SYMBOL1(backslash);
166
+ CASE(UNDERSCORE): SYMBOL1(underscore);
167
+ CASE(GRAVE): SYMBOL1(grave);
168
+ CASE(YEN): SYMBOL1(yen);
169
+ CASE(LBRACKET): SYMBOL1(lbracket);
170
+ CASE(RBRACKET): SYMBOL1(rbracket);
171
+
172
+ CASE(ENTER): SYMBOL1(enter);// no RETURN
173
+ CASE(SPACE): SYMBOL1(space);
174
+ CASE(TAB): SYMBOL1(tab);
175
+ CASE(DELETE): SYMBOL2(_delete, "delete");
176
+ CASE(BACKSPACE): SYMBOL1(backspace);
177
+ CASE(INSERT): SYMBOL1(insert);
178
+ CASE(ESCAPE): SYMBOL1(escape);
179
+
180
+ CASE(LEFT): SYMBOL1(left);
181
+ CASE(RIGHT): SYMBOL1(right);
182
+ CASE(UP): SYMBOL1(up);
183
+ CASE(DOWN): SYMBOL1(down);
184
+ CASE(HOME): SYMBOL1(home);
185
+ CASE(END): SYMBOL1(end);
186
+ CASE(PAGEUP): SYMBOL1(pageup);
187
+ CASE(PAGEDOWN): SYMBOL1(pagedown);
188
+
189
+ #if !defined(HID) && !defined(OSX)
190
+ CASE(SHIFT):
191
+ #endif
192
+ CASE(LSHIFT):
193
+ CASE(RSHIFT): SYMBOL1(shift);
194
+ #if !defined(HID) && !defined(OSX)
195
+ CASE(CONTROL):
196
+ #endif
197
+ CASE(LCONTROL):
198
+ CASE(RCONTROL): SYMBOL1(control);
199
+ CASE(ALT):
200
+ #if !defined(HID)
201
+ CASE(LALT):
202
+ #endif
203
+ CASE(RALT): SYMBOL1(alt);
204
+ CASE(LWIN):
205
+ CASE(RWIN): SYMBOL1(win);
206
+ #if !defined(HID) && !defined(OSX)
207
+ CASE(COMMAND):
208
+ #endif
209
+ #if !defined(HID)
210
+ CASE(LCOMMAND):
211
+ CASE(RCOMMAND): SYMBOL1(command);
212
+ #endif
213
+ #if !defined(HID) && !defined(OSX)
214
+ CASE(OPTION):
215
+ #endif
216
+ #if !defined(HID)
217
+ CASE(LOPTION):
218
+ CASE(ROPTION): SYMBOL1(option);
219
+ #endif
220
+ CASE(FUNCTION): SYMBOL1(function);
221
+
222
+ CASE(F1): SYMBOL1(f1);
223
+ CASE(F2): SYMBOL1(f2);
224
+ CASE(F3): SYMBOL1(f3);
225
+ CASE(F4): SYMBOL1(f4);
226
+ CASE(F5): SYMBOL1(f5);
227
+ CASE(F6): SYMBOL1(f6);
228
+ CASE(F7): SYMBOL1(f7);
229
+ CASE(F8): SYMBOL1(f8);
230
+ CASE(F9): SYMBOL1(f9);
231
+ CASE(F10): SYMBOL1(f10);
232
+ CASE(F11): SYMBOL1(f11);
233
+ CASE(F12): SYMBOL1(f12);
234
+ CASE(F13): SYMBOL1(f13);
235
+ CASE(F14): SYMBOL1(f14);
236
+ CASE(F15): SYMBOL1(f15);
237
+ CASE(F16): SYMBOL1(f16);
238
+ CASE(F17): SYMBOL1(f17);
239
+ CASE(F18): SYMBOL1(f18);
240
+ CASE(F19): SYMBOL1(f19);
241
+ CASE(F20): SYMBOL1(f20);
242
+ CASE(F21): SYMBOL1(f21);
243
+ CASE(F22): SYMBOL1(f22);
244
+ CASE(F23): SYMBOL1(f23);
245
+ CASE(F24): SYMBOL1(f24);
246
+
247
+ CASE(NUM_PLUS): SYMBOL1(plus);
248
+ CASE(NUM_MINUS): SYMBOL1(minus);
249
+ CASE(NUM_MULTIPLY): SYMBOL1(multiply);
250
+ CASE(NUM_DIVIDE): SYMBOL1(divide);
251
+ CASE(NUM_EQUAL): SYMBOL1(equal);
252
+ CASE(NUM_COMMA): SYMBOL1(comma);
253
+ CASE(NUM_DECIMAL): SYMBOL1(decimal);
254
+ #if !defined(HID)
255
+ CASE(NUM_CLEAR): SYMBOL1(clear);
256
+ #endif
257
+ CASE(NUM_ENTER): SYMBOL1(enter);
258
+
259
+ CASE(CAPSLOCK): SYMBOL1(capslock);
260
+ CASE(NUMLOCK): SYMBOL1(numlock);
261
+ CASE(SCROLLLOCK): SYMBOL1(scrolllock);
262
+
263
+ CASE(PRINTSCREEN): SYMBOL1(printscreen);
264
+ CASE(PAUSE): SYMBOL1(pause);
265
+ CASE(BREAK): SYMBOL2(_break, "break");
266
+ CASE(SECTION): SYMBOL1(section);
267
+ CASE(HELP): SYMBOL1(help);
268
+
269
+ CASE(EISU): SYMBOL1(eisu);
270
+ CASE(KANA): SYMBOL1(kana);
271
+ CASE(KANJI): SYMBOL1(kanji);
272
+ CASE(IME_ON): SYMBOL1(ime_on);
273
+ CASE(IME_OFF): SYMBOL1(ime_off);
274
+ CASE(IME_MODECHANGE): SYMBOL1(ime_mode_change);
275
+ CASE(CONVERT): SYMBOL1(convert);
276
+ CASE(NONCONVERT): SYMBOL1(nonconvert);
277
+ CASE(ACCEPT): SYMBOL1(accept);
278
+ CASE(PROCESS): SYMBOL1(process);
279
+
280
+ CASE(VOLUME_UP): SYMBOL1(volume_up);
281
+ CASE(VOLUME_DOWN): SYMBOL1(volume_down);
282
+ CASE(MUTE): SYMBOL1(mute);
283
+
284
+ CASE(SLEEP): SYMBOL1(sleep);
285
+ CASE(EXEC): SYMBOL1(exec);
286
+ CASE(PRINT): SYMBOL1(print);
287
+ CASE(CONTEXT_MENU): SYMBOL1(context_menu);
288
+ CASE(SELECT): SYMBOL1(select);
289
+ CASE(CLEAR): SYMBOL1(clear);
290
+
291
+ CASE(NAVIGATION_VIEW): SYMBOL1(navigation_view);
292
+ CASE(NAVIGATION_MENU): SYMBOL1(navigation_menu);
293
+ CASE(NAVIGATION_UP): SYMBOL1(navigation_up);
294
+ CASE(NAVIGATION_DOWN): SYMBOL1(navigation_down);
295
+ CASE(NAVIGATION_LEFT): SYMBOL1(navigation_left);
296
+ CASE(NAVIGATION_RIGHT): SYMBOL1(navigation_right);
297
+ CASE(NAVIGATION_ACCEPT): SYMBOL1(navigation_accept);
298
+ CASE(NAVIGATION_CANCEL): SYMBOL1(navigation_cancel);
299
+
300
+ CASE(BROWSER_BACK): SYMBOL1(browser_back);
301
+ CASE(BROWSER_FORWARD): SYMBOL1(browser_forward);
302
+ CASE(BROWSER_REFRESH): SYMBOL1(browser_refresh);
303
+ CASE(BROWSER_STOP): SYMBOL1(browser_stop);
304
+ CASE(BROWSER_SEARCH): SYMBOL1(browser_search);
305
+ CASE(BROWSER_FAVORITES): SYMBOL1(browser_favorites);
306
+ CASE(BROWSER_HOME): SYMBOL1(browser_home);
307
+
308
+ CASE(MEDIA_PREV_TRACK): SYMBOL1(media_prev);
309
+ CASE(MEDIA_NEXT_TRACK): SYMBOL1(media_next);
310
+ CASE(MEDIA_PLAY_PAUSE): SYMBOL1(media_play_pause);
311
+ CASE(MEDIA_STOP): SYMBOL1(media_stop);
312
+
313
+ CASE(LAUNCH_MAIL): SYMBOL1(launch_mail);
314
+ CASE(LAUNCH_MEDIA_SELECT): SYMBOL1(launch_media_select);
315
+ CASE(LAUNCH_APP1): SYMBOL1(launch_app1);
316
+ CASE(LAUNCH_APP2): SYMBOL1(launch_app2);
317
+
318
+ CASE(GAMEPAD_LEFT): SYMBOL1(gamepad_left);
319
+ CASE(GAMEPAD_RIGHT): SYMBOL1(gamepad_right);
320
+ CASE(GAMEPAD_UP): SYMBOL1(gamepad_up);
321
+ CASE(GAMEPAD_DOWN): SYMBOL1(gamepad_down);
322
+ CASE(GAMEPAD_LSTICK_LEFT): SYMBOL1(gamepad_lstick_left);
323
+ CASE(GAMEPAD_LSTICK_RIGHT): SYMBOL1(gamepad_lstick_right);
324
+ CASE(GAMEPAD_LSTICK_UP): SYMBOL1(gamepad_lstick_up);
325
+ CASE(GAMEPAD_LSTICK_DOWN): SYMBOL1(gamepad_lstick_down);
326
+ CASE(GAMEPAD_RSTICK_LEFT): SYMBOL1(gamepad_rstick_left);
327
+ CASE(GAMEPAD_RSTICK_RIGHT): SYMBOL1(gamepad_rstick_right);
328
+ CASE(GAMEPAD_RSTICK_UP): SYMBOL1(gamepad_rstick_up);
329
+ CASE(GAMEPAD_RSTICK_DOWN): SYMBOL1(gamepad_rstick_down);
330
+ CASE(GAMEPAD_A): SYMBOL1(gamepad_a);
331
+ CASE(GAMEPAD_B): SYMBOL1(gamepad_b);
332
+ CASE(GAMEPAD_X): SYMBOL1(gamepad_x);
333
+ CASE(GAMEPAD_Y): SYMBOL1(gamepad_y);
334
+ CASE(GAMEPAD_LTRIGGER): SYMBOL1(gamepad_ltrigger);
335
+ CASE(GAMEPAD_RTRIGGER): SYMBOL1(gamepad_rtrigger);
336
+ CASE(GAMEPAD_LSHOULDER): SYMBOL1(gamepad_lshoulder);
337
+ CASE(GAMEPAD_RSHOULDER): SYMBOL1(gamepad_rshoulder);
338
+ CASE(GAMEPAD_LTHUMB): SYMBOL1(gamepad_lthumb);
339
+ CASE(GAMEPAD_RTHUMB): SYMBOL1(gamepad_rthumb);
340
+ CASE(GAMEPAD_LPADDLE_0): SYMBOL1(gamepad_lpaddle_0);
341
+ CASE(GAMEPAD_LPADDLE_1): SYMBOL1(gamepad_lpaddle_1);
342
+ CASE(GAMEPAD_RPADDLE_0): SYMBOL1(gamepad_rpaddle_0);
343
+ CASE(GAMEPAD_RPADDLE_1): SYMBOL1(gamepad_rpaddle_1);
344
+ CASE(GAMEPAD_HOME): SYMBOL1(gamepad_home);
345
+ CASE(GAMEPAD_MENU): SYMBOL1(gamepad_menu);
346
+ CASE(GAMEPAD_OPTION): SYMBOL1(gamepad_option);
347
+ CASE(GAMEPAD_SHARE): SYMBOL1(gamepad_share);
348
+ CASE(GAMEPAD_START): SYMBOL1(gamepad_start);
349
+ CASE(GAMEPAD_SELECT): SYMBOL1(gamepad_select);
350
+ CASE(GAMEPAD_BUTTON_TOUCH): SYMBOL1(gamepad_button_touch);
351
+ CASE(GAMEPAD_BUTTON_0): SYMBOL1(gamepad_button_0);
352
+ CASE(GAMEPAD_BUTTON_1): SYMBOL1(gamepad_button_1);
353
+ CASE(GAMEPAD_BUTTON_2): SYMBOL1(gamepad_button_2);
354
+ CASE(GAMEPAD_BUTTON_3): SYMBOL1(gamepad_button_3);
355
+ CASE(GAMEPAD_BUTTON_4): SYMBOL1(gamepad_button_4);
356
+ CASE(GAMEPAD_BUTTON_5): SYMBOL1(gamepad_button_5);
357
+ CASE(GAMEPAD_BUTTON_6): SYMBOL1(gamepad_button_6);
358
+ CASE(GAMEPAD_BUTTON_7): SYMBOL1(gamepad_button_7);
359
+ CASE(GAMEPAD_BUTTON_8): SYMBOL1(gamepad_button_8);
360
+ CASE(GAMEPAD_BUTTON_9): SYMBOL1(gamepad_button_9);
361
+ CASE(GAMEPAD_BUTTON_10): SYMBOL1(gamepad_button_10);
362
+ CASE(GAMEPAD_BUTTON_11): SYMBOL1(gamepad_button_11);
363
+ CASE(GAMEPAD_BUTTON_12): SYMBOL1(gamepad_button_12);
364
+ CASE(GAMEPAD_BUTTON_13): SYMBOL1(gamepad_button_13);
365
+ CASE(GAMEPAD_BUTTON_14): SYMBOL1(gamepad_button_14);
366
+ CASE(GAMEPAD_BUTTON_15): SYMBOL1(gamepad_button_15);
367
+
368
+ #undef HID
369
+ #undef CASE
370
+ #undef SYMBOL1
371
+ #undef SYMBOL2
372
+ }
373
+ return nil();
374
+ }
375
+
376
+ static
377
+ RUCY_DEF1(get_key_symbol, key)
378
+ {
379
+ return get_key_symbol((Reflex::KeyCode) to<int>(key));
380
+ }
381
+ RUCY_END
382
+
92
383
  static
93
384
  RUCY_DEF0(process_events)
94
385
  {
@@ -98,6 +389,15 @@ RUCY_DEF0(process_events)
98
389
  }
99
390
  RUCY_END
100
391
 
392
+ static
393
+ RUCY_DEF2(alert, message, title)
394
+ {
395
+ Reflex::alert(message.c_str(), title.is_nil() ? NULL : title.c_str());
396
+
397
+ return nil();
398
+ }
399
+ RUCY_END
400
+
101
401
 
102
402
  static Module mReflex;
103
403
 
@@ -107,246 +407,282 @@ Init_reflex ()
107
407
  mReflex = define_module("Reflex");
108
408
  mReflex.define_singleton_method("init!", init);
109
409
  mReflex.define_singleton_method("fin!", fin);
410
+ mReflex.define_singleton_method("get_key_symbol!", get_key_symbol);
110
411
  mReflex.define_singleton_method("process_events!", process_events);
412
+ mReflex.define_singleton_method("alert!", alert);
111
413
 
112
414
  using namespace Reflex;
113
415
 
114
- #define DEFINE_CONST(name) mReflex.define_const(#name, name)
115
-
116
- DEFINE_CONST(KEY_A);
117
- DEFINE_CONST(KEY_B);
118
- DEFINE_CONST(KEY_C);
119
- DEFINE_CONST(KEY_D);
120
- DEFINE_CONST(KEY_E);
121
- DEFINE_CONST(KEY_F);
122
- DEFINE_CONST(KEY_G);
123
- DEFINE_CONST(KEY_H);
124
- DEFINE_CONST(KEY_I);
125
- DEFINE_CONST(KEY_J);
126
- DEFINE_CONST(KEY_K);
127
- DEFINE_CONST(KEY_L);
128
- DEFINE_CONST(KEY_M);
129
- DEFINE_CONST(KEY_N);
130
- DEFINE_CONST(KEY_O);
131
- DEFINE_CONST(KEY_P);
132
- DEFINE_CONST(KEY_Q);
133
- DEFINE_CONST(KEY_R);
134
- DEFINE_CONST(KEY_S);
135
- DEFINE_CONST(KEY_T);
136
- DEFINE_CONST(KEY_U);
137
- DEFINE_CONST(KEY_V);
138
- DEFINE_CONST(KEY_W);
139
- DEFINE_CONST(KEY_X);
140
- DEFINE_CONST(KEY_Y);
141
- DEFINE_CONST(KEY_Z);
142
-
143
- DEFINE_CONST(KEY_0);
144
- DEFINE_CONST(KEY_1);
145
- DEFINE_CONST(KEY_2);
146
- DEFINE_CONST(KEY_3);
147
- DEFINE_CONST(KEY_4);
148
- DEFINE_CONST(KEY_5);
149
- DEFINE_CONST(KEY_6);
150
- DEFINE_CONST(KEY_7);
151
- DEFINE_CONST(KEY_8);
152
- DEFINE_CONST(KEY_9);
153
-
154
- DEFINE_CONST(KEY_MINUS);
155
- DEFINE_CONST(KEY_EQUAL);
156
- DEFINE_CONST(KEY_COMMA);
157
- DEFINE_CONST(KEY_PERIOD);
158
- DEFINE_CONST(KEY_SEMICOLON);
159
- DEFINE_CONST(KEY_QUOTE);
160
- DEFINE_CONST(KEY_SLASH);
161
- DEFINE_CONST(KEY_BACKSLASH);
162
- DEFINE_CONST(KEY_UNDERSCORE);
163
- DEFINE_CONST(KEY_GRAVE);
164
- DEFINE_CONST(KEY_YEN);
165
- DEFINE_CONST(KEY_LBRACKET);
166
- DEFINE_CONST(KEY_RBRACKET);
167
-
168
- DEFINE_CONST(KEY_ENTER);
169
- DEFINE_CONST(KEY_RETURN);
170
- DEFINE_CONST(KEY_SPACE);
171
- DEFINE_CONST(KEY_TAB);
172
- DEFINE_CONST(KEY_DELETE);
173
- DEFINE_CONST(KEY_BACKSPACE);
174
- DEFINE_CONST(KEY_INSERT);
175
- DEFINE_CONST(KEY_ESCAPE);
176
-
177
- DEFINE_CONST(KEY_LEFT);
178
- DEFINE_CONST(KEY_RIGHT);
179
- DEFINE_CONST(KEY_UP);
180
- DEFINE_CONST(KEY_DOWN);
181
- DEFINE_CONST(KEY_HOME);
182
- DEFINE_CONST(KEY_END);
183
- DEFINE_CONST(KEY_PAGEUP);
184
- DEFINE_CONST(KEY_PAGEDOWN);
185
-
186
- DEFINE_CONST(KEY_SHIFT);
187
- DEFINE_CONST(KEY_LSHIFT);
188
- DEFINE_CONST(KEY_RSHIFT);
189
- DEFINE_CONST(KEY_CONTROL);
190
- DEFINE_CONST(KEY_LCONTROL);
191
- DEFINE_CONST(KEY_RCONTROL);
192
- DEFINE_CONST(KEY_ALT);
193
- DEFINE_CONST(KEY_LALT);
194
- DEFINE_CONST(KEY_RALT);
195
- DEFINE_CONST(KEY_LWIN);
196
- DEFINE_CONST(KEY_RWIN);
197
- DEFINE_CONST(KEY_COMMAND);
198
- DEFINE_CONST(KEY_LCOMMAND);
199
- DEFINE_CONST(KEY_RCOMMAND);
200
- DEFINE_CONST(KEY_OPTION);
201
- DEFINE_CONST(KEY_LOPTION);
202
- DEFINE_CONST(KEY_ROPTION);
203
- DEFINE_CONST(KEY_FUNCTION);
204
-
205
- DEFINE_CONST(KEY_F1);
206
- DEFINE_CONST(KEY_F2);
207
- DEFINE_CONST(KEY_F3);
208
- DEFINE_CONST(KEY_F4);
209
- DEFINE_CONST(KEY_F5);
210
- DEFINE_CONST(KEY_F6);
211
- DEFINE_CONST(KEY_F7);
212
- DEFINE_CONST(KEY_F8);
213
- DEFINE_CONST(KEY_F9);
214
- DEFINE_CONST(KEY_F10);
215
- DEFINE_CONST(KEY_F11);
216
- DEFINE_CONST(KEY_F12);
217
- DEFINE_CONST(KEY_F13);
218
- DEFINE_CONST(KEY_F14);
219
- DEFINE_CONST(KEY_F15);
220
- DEFINE_CONST(KEY_F16);
221
- DEFINE_CONST(KEY_F17);
222
- DEFINE_CONST(KEY_F18);
223
- DEFINE_CONST(KEY_F19);
224
- DEFINE_CONST(KEY_F20);
225
- DEFINE_CONST(KEY_F21);
226
- DEFINE_CONST(KEY_F22);
227
- DEFINE_CONST(KEY_F23);
228
- DEFINE_CONST(KEY_F24);
229
-
230
- DEFINE_CONST(KEY_NUM_0);
231
- DEFINE_CONST(KEY_NUM_1);
232
- DEFINE_CONST(KEY_NUM_2);
233
- DEFINE_CONST(KEY_NUM_3);
234
- DEFINE_CONST(KEY_NUM_4);
235
- DEFINE_CONST(KEY_NUM_5);
236
- DEFINE_CONST(KEY_NUM_6);
237
- DEFINE_CONST(KEY_NUM_7);
238
- DEFINE_CONST(KEY_NUM_8);
239
- DEFINE_CONST(KEY_NUM_9);
240
-
241
- DEFINE_CONST(KEY_NUM_PLUS);
242
- DEFINE_CONST(KEY_NUM_MINUS);
243
- DEFINE_CONST(KEY_NUM_MULTIPLY);
244
- DEFINE_CONST(KEY_NUM_DIVIDE);
245
- DEFINE_CONST(KEY_NUM_EQUAL);
246
- DEFINE_CONST(KEY_NUM_COMMA);
247
- DEFINE_CONST(KEY_NUM_DECIMAL);
248
- DEFINE_CONST(KEY_NUM_CLEAR);
249
- DEFINE_CONST(KEY_NUM_ENTER);
250
-
251
- DEFINE_CONST(KEY_CAPSLOCK);
252
- DEFINE_CONST(KEY_NUMLOCK);
253
- DEFINE_CONST(KEY_SCROLLLOCK);
254
-
255
- DEFINE_CONST(KEY_PRINTSCREEN);
256
- DEFINE_CONST(KEY_PAUSE);
257
- DEFINE_CONST(KEY_BREAK);
258
- DEFINE_CONST(KEY_SECTION);
259
- DEFINE_CONST(KEY_HELP);
260
-
261
- DEFINE_CONST(KEY_EISU);
262
- DEFINE_CONST(KEY_KANA);
263
- DEFINE_CONST(KEY_KANJI);
264
- DEFINE_CONST(KEY_IME_ON);
265
- DEFINE_CONST(KEY_IME_OFF);
266
- DEFINE_CONST(KEY_IME_MODECHANGE);
267
- DEFINE_CONST(KEY_CONVERT);
268
- DEFINE_CONST(KEY_NONCONVERT);
269
- DEFINE_CONST(KEY_ACCEPT);
270
- DEFINE_CONST(KEY_PROCESS);
271
-
272
- DEFINE_CONST(KEY_VOLUME_UP);
273
- DEFINE_CONST(KEY_VOLUME_DOWN);
274
- DEFINE_CONST(KEY_MUTE);
275
-
276
- DEFINE_CONST(KEY_SLEEP);
277
- DEFINE_CONST(KEY_EXEC);
278
- DEFINE_CONST(KEY_PRINT);
279
- DEFINE_CONST(KEY_CONTEXT_MENU);
280
- DEFINE_CONST(KEY_SELECT);
281
- DEFINE_CONST(KEY_CLEAR);
282
-
283
- DEFINE_CONST(KEY_NAVIGATION_VIEW);
284
- DEFINE_CONST(KEY_NAVIGATION_MENU);
285
- DEFINE_CONST(KEY_NAVIGATION_UP);
286
- DEFINE_CONST(KEY_NAVIGATION_DOWN);
287
- DEFINE_CONST(KEY_NAVIGATION_LEFT);
288
- DEFINE_CONST(KEY_NAVIGATION_RIGHT);
289
- DEFINE_CONST(KEY_NAVIGATION_ACCEPT);
290
- DEFINE_CONST(KEY_NAVIGATION_CANCEL);
291
-
292
- DEFINE_CONST(KEY_BROWSER_BACK);
293
- DEFINE_CONST(KEY_BROWSER_FORWARD);
294
- DEFINE_CONST(KEY_BROWSER_REFRESH);
295
- DEFINE_CONST(KEY_BROWSER_STOP);
296
- DEFINE_CONST(KEY_BROWSER_SEARCH);
297
- DEFINE_CONST(KEY_BROWSER_FAVORITES);
298
- DEFINE_CONST(KEY_BROWSER_HOME);
299
-
300
- DEFINE_CONST(KEY_MEDIA_PREV_TRACK);
301
- DEFINE_CONST(KEY_MEDIA_NEXT_TRACK);
302
- DEFINE_CONST(KEY_MEDIA_PLAY_PAUSE);
303
- DEFINE_CONST(KEY_MEDIA_STOP);
304
-
305
- DEFINE_CONST(KEY_LAUNCH_MAIL);
306
- DEFINE_CONST(KEY_LAUNCH_MEDIA_SELECT);
307
- DEFINE_CONST(KEY_LAUNCH_APP1);
308
- DEFINE_CONST(KEY_LAUNCH_APP2);
309
-
310
- DEFINE_CONST(KEY_GAMEPAD_LEFT);
311
- DEFINE_CONST(KEY_GAMEPAD_RIGHT);
312
- DEFINE_CONST(KEY_GAMEPAD_UP);
313
- DEFINE_CONST(KEY_GAMEPAD_DOWN);
314
-
315
- DEFINE_CONST(KEY_GAMEPAD_A);
316
- DEFINE_CONST(KEY_GAMEPAD_B);
317
- DEFINE_CONST(KEY_GAMEPAD_X);
318
- DEFINE_CONST(KEY_GAMEPAD_Y);
319
-
320
- DEFINE_CONST(KEY_GAMEPAD_LSHOULDER);
321
- DEFINE_CONST(KEY_GAMEPAD_RSHOULDER);
322
- DEFINE_CONST(KEY_GAMEPAD_LTRIGGER);
323
- DEFINE_CONST(KEY_GAMEPAD_RTRIGGER);
324
- DEFINE_CONST(KEY_GAMEPAD_LTHUMB);
325
- DEFINE_CONST(KEY_GAMEPAD_RTHUMB);
326
-
327
- DEFINE_CONST(KEY_GAMEPAD_HOME);
328
- DEFINE_CONST(KEY_GAMEPAD_MENU);
329
- DEFINE_CONST(KEY_GAMEPAD_OPTION);
330
- DEFINE_CONST(KEY_GAMEPAD_SHARE);
331
- DEFINE_CONST(KEY_GAMEPAD_START);
332
- DEFINE_CONST(KEY_GAMEPAD_SELECT);
333
-
334
- DEFINE_CONST(MOD_SHIFT);
335
- DEFINE_CONST(MOD_CONTROL);
336
- DEFINE_CONST(MOD_ALT);
337
- DEFINE_CONST(MOD_WIN);
338
- DEFINE_CONST(MOD_OPTION);
339
- DEFINE_CONST(MOD_COMMAND);
340
- DEFINE_CONST(MOD_HELP);
341
- DEFINE_CONST(MOD_FUNCTION);
342
- DEFINE_CONST(MOD_NUMPAD);
343
- DEFINE_CONST(MOD_CAPS);
344
- DEFINE_CONST(MOD_SCROLL);
345
-
416
+ #define DEFINE_CONST(name) \
417
+ mReflex.define_const(#name, name)
418
+ {
419
+ DEFINE_CONST(MOD_SHIFT);
420
+ DEFINE_CONST(MOD_CONTROL);
421
+ DEFINE_CONST(MOD_ALT);
422
+ DEFINE_CONST(MOD_WIN);
423
+ DEFINE_CONST(MOD_OPTION);
424
+ DEFINE_CONST(MOD_COMMAND);
425
+ DEFINE_CONST(MOD_HELP);
426
+ DEFINE_CONST(MOD_FUNCTION);
427
+ DEFINE_CONST(MOD_NUMPAD);
428
+ DEFINE_CONST(MOD_CAPS);
429
+ DEFINE_CONST(MOD_SCROLL);
430
+ }
346
431
  #undef DEFINE_CONST
432
+
433
+ #define DEFINE_KEY_CONST(key) \
434
+ mReflex.define_const(#key, key); \
435
+ if ((int) key >= 0) keys.emplace_back(key)
436
+ {
437
+ std::vector<Value> keys;
438
+
439
+ DEFINE_KEY_CONST(KEY_A);
440
+ DEFINE_KEY_CONST(KEY_B);
441
+ DEFINE_KEY_CONST(KEY_C);
442
+ DEFINE_KEY_CONST(KEY_D);
443
+ DEFINE_KEY_CONST(KEY_E);
444
+ DEFINE_KEY_CONST(KEY_F);
445
+ DEFINE_KEY_CONST(KEY_G);
446
+ DEFINE_KEY_CONST(KEY_H);
447
+ DEFINE_KEY_CONST(KEY_I);
448
+ DEFINE_KEY_CONST(KEY_J);
449
+ DEFINE_KEY_CONST(KEY_K);
450
+ DEFINE_KEY_CONST(KEY_L);
451
+ DEFINE_KEY_CONST(KEY_M);
452
+ DEFINE_KEY_CONST(KEY_N);
453
+ DEFINE_KEY_CONST(KEY_O);
454
+ DEFINE_KEY_CONST(KEY_P);
455
+ DEFINE_KEY_CONST(KEY_Q);
456
+ DEFINE_KEY_CONST(KEY_R);
457
+ DEFINE_KEY_CONST(KEY_S);
458
+ DEFINE_KEY_CONST(KEY_T);
459
+ DEFINE_KEY_CONST(KEY_U);
460
+ DEFINE_KEY_CONST(KEY_V);
461
+ DEFINE_KEY_CONST(KEY_W);
462
+ DEFINE_KEY_CONST(KEY_X);
463
+ DEFINE_KEY_CONST(KEY_Y);
464
+ DEFINE_KEY_CONST(KEY_Z);
465
+
466
+ DEFINE_KEY_CONST(KEY_0);
467
+ DEFINE_KEY_CONST(KEY_1);
468
+ DEFINE_KEY_CONST(KEY_2);
469
+ DEFINE_KEY_CONST(KEY_3);
470
+ DEFINE_KEY_CONST(KEY_4);
471
+ DEFINE_KEY_CONST(KEY_5);
472
+ DEFINE_KEY_CONST(KEY_6);
473
+ DEFINE_KEY_CONST(KEY_7);
474
+ DEFINE_KEY_CONST(KEY_8);
475
+ DEFINE_KEY_CONST(KEY_9);
476
+
477
+ DEFINE_KEY_CONST(KEY_MINUS);
478
+ DEFINE_KEY_CONST(KEY_EQUAL);
479
+ DEFINE_KEY_CONST(KEY_COMMA);
480
+ DEFINE_KEY_CONST(KEY_PERIOD);
481
+ DEFINE_KEY_CONST(KEY_SEMICOLON);
482
+ DEFINE_KEY_CONST(KEY_QUOTE);
483
+ DEFINE_KEY_CONST(KEY_SLASH);
484
+ DEFINE_KEY_CONST(KEY_BACKSLASH);
485
+ DEFINE_KEY_CONST(KEY_UNDERSCORE);
486
+ DEFINE_KEY_CONST(KEY_GRAVE);
487
+ DEFINE_KEY_CONST(KEY_YEN);
488
+ DEFINE_KEY_CONST(KEY_LBRACKET);
489
+ DEFINE_KEY_CONST(KEY_RBRACKET);
490
+
491
+ DEFINE_KEY_CONST(KEY_ENTER);
492
+ DEFINE_KEY_CONST(KEY_RETURN);
493
+ DEFINE_KEY_CONST(KEY_SPACE);
494
+ DEFINE_KEY_CONST(KEY_TAB);
495
+ DEFINE_KEY_CONST(KEY_DELETE);
496
+ DEFINE_KEY_CONST(KEY_BACKSPACE);
497
+ DEFINE_KEY_CONST(KEY_INSERT);
498
+ DEFINE_KEY_CONST(KEY_ESCAPE);
499
+
500
+ DEFINE_KEY_CONST(KEY_LEFT);
501
+ DEFINE_KEY_CONST(KEY_RIGHT);
502
+ DEFINE_KEY_CONST(KEY_UP);
503
+ DEFINE_KEY_CONST(KEY_DOWN);
504
+ DEFINE_KEY_CONST(KEY_HOME);
505
+ DEFINE_KEY_CONST(KEY_END);
506
+ DEFINE_KEY_CONST(KEY_PAGEUP);
507
+ DEFINE_KEY_CONST(KEY_PAGEDOWN);
508
+
509
+ DEFINE_KEY_CONST(KEY_SHIFT);
510
+ DEFINE_KEY_CONST(KEY_LSHIFT);
511
+ DEFINE_KEY_CONST(KEY_RSHIFT);
512
+ DEFINE_KEY_CONST(KEY_CONTROL);
513
+ DEFINE_KEY_CONST(KEY_LCONTROL);
514
+ DEFINE_KEY_CONST(KEY_RCONTROL);
515
+ DEFINE_KEY_CONST(KEY_ALT);
516
+ DEFINE_KEY_CONST(KEY_LALT);
517
+ DEFINE_KEY_CONST(KEY_RALT);
518
+ DEFINE_KEY_CONST(KEY_LWIN);
519
+ DEFINE_KEY_CONST(KEY_RWIN);
520
+ DEFINE_KEY_CONST(KEY_COMMAND);
521
+ DEFINE_KEY_CONST(KEY_LCOMMAND);
522
+ DEFINE_KEY_CONST(KEY_RCOMMAND);
523
+ DEFINE_KEY_CONST(KEY_OPTION);
524
+ DEFINE_KEY_CONST(KEY_LOPTION);
525
+ DEFINE_KEY_CONST(KEY_ROPTION);
526
+ DEFINE_KEY_CONST(KEY_FUNCTION);
527
+
528
+ DEFINE_KEY_CONST(KEY_F1);
529
+ DEFINE_KEY_CONST(KEY_F2);
530
+ DEFINE_KEY_CONST(KEY_F3);
531
+ DEFINE_KEY_CONST(KEY_F4);
532
+ DEFINE_KEY_CONST(KEY_F5);
533
+ DEFINE_KEY_CONST(KEY_F6);
534
+ DEFINE_KEY_CONST(KEY_F7);
535
+ DEFINE_KEY_CONST(KEY_F8);
536
+ DEFINE_KEY_CONST(KEY_F9);
537
+ DEFINE_KEY_CONST(KEY_F10);
538
+ DEFINE_KEY_CONST(KEY_F11);
539
+ DEFINE_KEY_CONST(KEY_F12);
540
+ DEFINE_KEY_CONST(KEY_F13);
541
+ DEFINE_KEY_CONST(KEY_F14);
542
+ DEFINE_KEY_CONST(KEY_F15);
543
+ DEFINE_KEY_CONST(KEY_F16);
544
+ DEFINE_KEY_CONST(KEY_F17);
545
+ DEFINE_KEY_CONST(KEY_F18);
546
+ DEFINE_KEY_CONST(KEY_F19);
547
+ DEFINE_KEY_CONST(KEY_F20);
548
+ DEFINE_KEY_CONST(KEY_F21);
549
+ DEFINE_KEY_CONST(KEY_F22);
550
+ DEFINE_KEY_CONST(KEY_F23);
551
+ DEFINE_KEY_CONST(KEY_F24);
552
+
553
+ DEFINE_KEY_CONST(KEY_NUM_0);
554
+ DEFINE_KEY_CONST(KEY_NUM_1);
555
+ DEFINE_KEY_CONST(KEY_NUM_2);
556
+ DEFINE_KEY_CONST(KEY_NUM_3);
557
+ DEFINE_KEY_CONST(KEY_NUM_4);
558
+ DEFINE_KEY_CONST(KEY_NUM_5);
559
+ DEFINE_KEY_CONST(KEY_NUM_6);
560
+ DEFINE_KEY_CONST(KEY_NUM_7);
561
+ DEFINE_KEY_CONST(KEY_NUM_8);
562
+ DEFINE_KEY_CONST(KEY_NUM_9);
563
+
564
+ DEFINE_KEY_CONST(KEY_NUM_PLUS);
565
+ DEFINE_KEY_CONST(KEY_NUM_MINUS);
566
+ DEFINE_KEY_CONST(KEY_NUM_MULTIPLY);
567
+ DEFINE_KEY_CONST(KEY_NUM_DIVIDE);
568
+ DEFINE_KEY_CONST(KEY_NUM_EQUAL);
569
+ DEFINE_KEY_CONST(KEY_NUM_COMMA);
570
+ DEFINE_KEY_CONST(KEY_NUM_DECIMAL);
571
+ DEFINE_KEY_CONST(KEY_NUM_CLEAR);
572
+ DEFINE_KEY_CONST(KEY_NUM_ENTER);
573
+
574
+ DEFINE_KEY_CONST(KEY_CAPSLOCK);
575
+ DEFINE_KEY_CONST(KEY_NUMLOCK);
576
+ DEFINE_KEY_CONST(KEY_SCROLLLOCK);
577
+
578
+ DEFINE_KEY_CONST(KEY_PRINTSCREEN);
579
+ DEFINE_KEY_CONST(KEY_PAUSE);
580
+ DEFINE_KEY_CONST(KEY_BREAK);
581
+ DEFINE_KEY_CONST(KEY_SECTION);
582
+ DEFINE_KEY_CONST(KEY_HELP);
583
+
584
+ DEFINE_KEY_CONST(KEY_EISU);
585
+ DEFINE_KEY_CONST(KEY_KANA);
586
+ DEFINE_KEY_CONST(KEY_KANJI);
587
+ DEFINE_KEY_CONST(KEY_IME_ON);
588
+ DEFINE_KEY_CONST(KEY_IME_OFF);
589
+ DEFINE_KEY_CONST(KEY_IME_MODECHANGE);
590
+ DEFINE_KEY_CONST(KEY_CONVERT);
591
+ DEFINE_KEY_CONST(KEY_NONCONVERT);
592
+ DEFINE_KEY_CONST(KEY_ACCEPT);
593
+ DEFINE_KEY_CONST(KEY_PROCESS);
594
+
595
+ DEFINE_KEY_CONST(KEY_VOLUME_UP);
596
+ DEFINE_KEY_CONST(KEY_VOLUME_DOWN);
597
+ DEFINE_KEY_CONST(KEY_MUTE);
598
+
599
+ DEFINE_KEY_CONST(KEY_SLEEP);
600
+ DEFINE_KEY_CONST(KEY_EXEC);
601
+ DEFINE_KEY_CONST(KEY_PRINT);
602
+ DEFINE_KEY_CONST(KEY_CONTEXT_MENU);
603
+ DEFINE_KEY_CONST(KEY_SELECT);
604
+ DEFINE_KEY_CONST(KEY_CLEAR);
605
+
606
+ DEFINE_KEY_CONST(KEY_NAVIGATION_VIEW);
607
+ DEFINE_KEY_CONST(KEY_NAVIGATION_MENU);
608
+ DEFINE_KEY_CONST(KEY_NAVIGATION_UP);
609
+ DEFINE_KEY_CONST(KEY_NAVIGATION_DOWN);
610
+ DEFINE_KEY_CONST(KEY_NAVIGATION_LEFT);
611
+ DEFINE_KEY_CONST(KEY_NAVIGATION_RIGHT);
612
+ DEFINE_KEY_CONST(KEY_NAVIGATION_ACCEPT);
613
+ DEFINE_KEY_CONST(KEY_NAVIGATION_CANCEL);
614
+
615
+ DEFINE_KEY_CONST(KEY_BROWSER_BACK);
616
+ DEFINE_KEY_CONST(KEY_BROWSER_FORWARD);
617
+ DEFINE_KEY_CONST(KEY_BROWSER_REFRESH);
618
+ DEFINE_KEY_CONST(KEY_BROWSER_STOP);
619
+ DEFINE_KEY_CONST(KEY_BROWSER_SEARCH);
620
+ DEFINE_KEY_CONST(KEY_BROWSER_FAVORITES);
621
+ DEFINE_KEY_CONST(KEY_BROWSER_HOME);
622
+
623
+ DEFINE_KEY_CONST(KEY_MEDIA_PREV_TRACK);
624
+ DEFINE_KEY_CONST(KEY_MEDIA_NEXT_TRACK);
625
+ DEFINE_KEY_CONST(KEY_MEDIA_PLAY_PAUSE);
626
+ DEFINE_KEY_CONST(KEY_MEDIA_STOP);
627
+
628
+ DEFINE_KEY_CONST(KEY_LAUNCH_MAIL);
629
+ DEFINE_KEY_CONST(KEY_LAUNCH_MEDIA_SELECT);
630
+ DEFINE_KEY_CONST(KEY_LAUNCH_APP1);
631
+ DEFINE_KEY_CONST(KEY_LAUNCH_APP2);
632
+
633
+ DEFINE_KEY_CONST(KEY_GAMEPAD_LEFT);
634
+ DEFINE_KEY_CONST(KEY_GAMEPAD_RIGHT);
635
+ DEFINE_KEY_CONST(KEY_GAMEPAD_UP);
636
+ DEFINE_KEY_CONST(KEY_GAMEPAD_DOWN);
637
+
638
+ DEFINE_KEY_CONST(KEY_GAMEPAD_A);
639
+ DEFINE_KEY_CONST(KEY_GAMEPAD_B);
640
+ DEFINE_KEY_CONST(KEY_GAMEPAD_X);
641
+ DEFINE_KEY_CONST(KEY_GAMEPAD_Y);
642
+
643
+ DEFINE_KEY_CONST(KEY_GAMEPAD_LSHOULDER);
644
+ DEFINE_KEY_CONST(KEY_GAMEPAD_RSHOULDER);
645
+ DEFINE_KEY_CONST(KEY_GAMEPAD_LTRIGGER);
646
+ DEFINE_KEY_CONST(KEY_GAMEPAD_RTRIGGER);
647
+ DEFINE_KEY_CONST(KEY_GAMEPAD_LTHUMB);
648
+ DEFINE_KEY_CONST(KEY_GAMEPAD_RTHUMB);
649
+
650
+ DEFINE_KEY_CONST(KEY_GAMEPAD_HOME);
651
+ DEFINE_KEY_CONST(KEY_GAMEPAD_MENU);
652
+ DEFINE_KEY_CONST(KEY_GAMEPAD_OPTION);
653
+ DEFINE_KEY_CONST(KEY_GAMEPAD_SHARE);
654
+ DEFINE_KEY_CONST(KEY_GAMEPAD_START);
655
+ DEFINE_KEY_CONST(KEY_GAMEPAD_SELECT);
656
+
657
+ mReflex.define_const("KEYS", array(keys.data(), keys.size()).freeze());
658
+ }
659
+ #undef DEFINE_KEY_CONST
347
660
  }
348
661
 
349
662
 
663
+ namespace Rucy
664
+ {
665
+
666
+
667
+ template <> REFLEX_EXPORT Reflex::KeyCode
668
+ value_to<Reflex::KeyCode> (int argc, const Value* argv, bool convert)
669
+ {
670
+ assert(argc > 0 && argv);
671
+
672
+ int code = value_to<int>(*argv, convert);
673
+ if (
674
+ code != Reflex::KEY_NONE &&
675
+ get_key_symbol((Reflex::KeyCode) code).is_nil())
676
+ {
677
+ argument_error(__FILE__, __LINE__, "invalid key code -- %d", code);
678
+ }
679
+
680
+ return (Reflex::KeyCode) code;
681
+ }
682
+
683
+ }// Rucy
684
+
685
+
350
686
  namespace Reflex
351
687
  {
352
688