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