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
data/src/view.h CHANGED
@@ -11,10 +11,14 @@ namespace Reflex
11
11
  {
12
12
 
13
13
 
14
+ typedef std::vector<View::Ref> ViewList;
15
+
16
+
14
17
  constexpr const char* VIEW_TAG_ROOT = "ROOT";
15
18
 
16
19
 
17
20
  class Body;
21
+ class Constraint;
18
22
 
19
23
 
20
24
  void View_set_window (View* view, Window* window);
@@ -23,33 +27,47 @@ namespace Reflex
23
27
 
24
28
  const Style& View_get_style (const View* view);
25
29
 
26
- Body* View_get_body (View* view, bool create = true);
30
+ Body* View_get_body ( View* view, bool create = true);
31
+
32
+ const Body* View_get_body (const View* view);
33
+
34
+ void View_add_constraint (View* view, Constraint* constraint);
35
+
36
+ void View_remove_constraint (View* view, Constraint* constraint);
27
37
 
28
38
  bool View_is_active (const View& view);
29
39
 
40
+ void View_activate_tree (View* view, Event* event);
41
+
42
+ void View_deactivate_tree (View* view, Event* event);
43
+
30
44
  void View_update_tree (View* view, const UpdateEvent& event);
31
45
 
32
46
  void View_draw_tree (
33
- View* view, DrawEvent* event, const Point& offset, const Bounds& clip);
47
+ View* view, DrawEvent* event, const Point& offset, Bounds clip, float scale = 1);
34
48
 
35
49
  void View_update_styles (View* view, const Selector& selector);
36
50
 
37
51
  void View_update_shapes (View* view);
38
52
 
53
+ void View_get_hovered_views (ViewList* result, View* view, const Point& position);
54
+
39
55
  void View_call_key_event (View* view, KeyEvent* event);
40
56
 
57
+ void View_call_text_event (View* view, TextEvent* event);
58
+
41
59
  void View_call_pointer_event (View* view, PointerEvent* event);
42
60
 
43
61
  void View_call_wheel_event (View* view, WheelEvent* event);
44
62
 
63
+ void View_call_contact_event (View* view, ContactEvent* event);
64
+
45
65
  void View_call_midi_event (View* view, MIDIEvent* event);
46
66
 
47
67
  void View_call_note_event (View* view, NoteEvent* event);
48
68
 
49
69
  void View_call_control_change_event (View* view, ControlChangeEvent* event);
50
70
 
51
- void View_call_contact_event (View* view, ContactEvent* event);
52
-
53
71
 
54
72
  }// Reflex
55
73
 
data/src/vk.h ADDED
@@ -0,0 +1,416 @@
1
+ // -*- c++ -*-
2
+ #pragma once
3
+ #ifndef __REFLEX_SRC_VK_H__
4
+ #define __REFLEX_SRC_VK_H__
5
+
6
+
7
+ #include <limits.h>
8
+ #include "reflex/defs.h"
9
+
10
+ #if defined(OSX)
11
+ #include <Carbon/Carbon.h>
12
+ #elif defined(IOS)
13
+ #import <UIKit/UIKit.h>
14
+ #elif defined(WIN32)
15
+ #include <windows.h>
16
+ #else
17
+ #include <SDL.h>
18
+ #endif
19
+
20
+
21
+ namespace Reflex
22
+ {
23
+
24
+
25
+ #define _NONE (INT_MIN + 0)
26
+ #define _SKIP (INT_MIN + 1)
27
+
28
+
29
+ struct NativeVK
30
+ {
31
+
32
+ int code;
33
+
34
+ friend constexpr bool operator == (int key, NativeVK native)
35
+ {
36
+ if (native.code == _SKIP) return true;
37
+ return native.code == _NONE ? key < 0 : key == native.code;
38
+ }
39
+
40
+ };// NativeVK
41
+
42
+
43
+ enum
44
+ {
45
+ kVK__NONE = _NONE,
46
+ UIKeyboardHIDUsage_NONE = _NONE,
47
+ UIKeyboardHIDUsage_SKIP = _SKIP,
48
+ VK__NONE = _NONE,
49
+ SDL_SCANCODE__NONE = _NONE,
50
+ };
51
+
52
+
53
+ #if defined(OSX)
54
+ #define VK(darwin, ios, win32, sdl) NativeVK {kVK_##darwin}
55
+ #elif defined(IOS)
56
+ #define VK(darwin, ios, win32, sdl) NativeVK {UIKeyboardHIDUsage##ios}
57
+ #elif defined(LINUX) || defined(WASM)
58
+ #define VK(darwin, ios, win32, sdl) NativeVK {SDL_SCANCODE_##sdl}
59
+ #elif defined(WIN32)
60
+ #define VK(darwin, ios, win32, sdl) NativeVK {VK_##win32}
61
+ #define VK_A 'A'
62
+ #define VK_B 'B'
63
+ #define VK_C 'C'
64
+ #define VK_D 'D'
65
+ #define VK_E 'E'
66
+ #define VK_F 'F'
67
+ #define VK_G 'G'
68
+ #define VK_H 'H'
69
+ #define VK_I 'I'
70
+ #define VK_J 'J'
71
+ #define VK_K 'K'
72
+ #define VK_L 'L'
73
+ #define VK_M 'M'
74
+ #define VK_N 'N'
75
+ #define VK_O 'O'
76
+ #define VK_P 'P'
77
+ #define VK_Q 'Q'
78
+ #define VK_R 'R'
79
+ #define VK_S 'S'
80
+ #define VK_T 'T'
81
+ #define VK_U 'U'
82
+ #define VK_V 'V'
83
+ #define VK_W 'W'
84
+ #define VK_X 'X'
85
+ #define VK_Y 'Y'
86
+ #define VK_Z 'Z'
87
+ #define VK_0 '0'
88
+ #define VK_1 '1'
89
+ #define VK_2 '2'
90
+ #define VK_3 '3'
91
+ #define VK_4 '4'
92
+ #define VK_5 '5'
93
+ #define VK_6 '6'
94
+ #define VK_7 '7'
95
+ #define VK_8 '8'
96
+ #define VK_9 '9'
97
+ #else
98
+ #error unknown platform
99
+ #endif
100
+
101
+ static_assert(KEY_A == VK(ANSI_A, KeyboardA, A, A));
102
+ static_assert(KEY_B == VK(ANSI_B, KeyboardB, B, B));
103
+ static_assert(KEY_C == VK(ANSI_C, KeyboardC, C, C));
104
+ static_assert(KEY_D == VK(ANSI_D, KeyboardD, D, D));
105
+ static_assert(KEY_E == VK(ANSI_E, KeyboardE, E, E));
106
+ static_assert(KEY_F == VK(ANSI_F, KeyboardF, F, F));
107
+ static_assert(KEY_G == VK(ANSI_G, KeyboardG, G, G));
108
+ static_assert(KEY_H == VK(ANSI_H, KeyboardH, H, H));
109
+ static_assert(KEY_I == VK(ANSI_I, KeyboardI, I, I));
110
+ static_assert(KEY_J == VK(ANSI_J, KeyboardJ, J, J));
111
+ static_assert(KEY_K == VK(ANSI_K, KeyboardK, K, K));
112
+ static_assert(KEY_L == VK(ANSI_L, KeyboardL, L, L));
113
+ static_assert(KEY_M == VK(ANSI_M, KeyboardM, M, M));
114
+ static_assert(KEY_N == VK(ANSI_N, KeyboardN, N, N));
115
+ static_assert(KEY_O == VK(ANSI_O, KeyboardO, O, O));
116
+ static_assert(KEY_P == VK(ANSI_P, KeyboardP, P, P));
117
+ static_assert(KEY_Q == VK(ANSI_Q, KeyboardQ, Q, Q));
118
+ static_assert(KEY_R == VK(ANSI_R, KeyboardR, R, R));
119
+ static_assert(KEY_S == VK(ANSI_S, KeyboardS, S, S));
120
+ static_assert(KEY_T == VK(ANSI_T, KeyboardT, T, T));
121
+ static_assert(KEY_U == VK(ANSI_U, KeyboardU, U, U));
122
+ static_assert(KEY_V == VK(ANSI_V, KeyboardV, V, V));
123
+ static_assert(KEY_W == VK(ANSI_W, KeyboardW, W, W));
124
+ static_assert(KEY_X == VK(ANSI_X, KeyboardX, X, X));
125
+ static_assert(KEY_Y == VK(ANSI_Y, KeyboardY, Y, Y));
126
+ static_assert(KEY_Z == VK(ANSI_Z, KeyboardZ, Z, Z));
127
+
128
+ static_assert(KEY_0 == VK(ANSI_0, Keyboard0, 0, 0));
129
+ static_assert(KEY_1 == VK(ANSI_1, Keyboard1, 1, 1));
130
+ static_assert(KEY_2 == VK(ANSI_2, Keyboard2, 2, 2));
131
+ static_assert(KEY_3 == VK(ANSI_3, Keyboard3, 3, 3));
132
+ static_assert(KEY_4 == VK(ANSI_4, Keyboard4, 4, 4));
133
+ static_assert(KEY_5 == VK(ANSI_5, Keyboard5, 5, 5));
134
+ static_assert(KEY_6 == VK(ANSI_6, Keyboard6, 6, 6));
135
+ static_assert(KEY_7 == VK(ANSI_7, Keyboard7, 7, 7));
136
+ static_assert(KEY_8 == VK(ANSI_8, Keyboard8, 8, 8));
137
+ static_assert(KEY_9 == VK(ANSI_9, Keyboard9, 9, 9));
138
+
139
+ static_assert(KEY_MINUS == VK(ANSI_Minus, KeyboardHyphen, OEM_MINUS, MINUS));
140
+ static_assert(KEY_EQUAL == VK(ANSI_Equal, KeyboardEqualSign, OEM_PLUS, EQUALS));
141
+ static_assert(KEY_COMMA == VK(ANSI_Comma, KeyboardComma, OEM_COMMA, COMMA));
142
+ static_assert(KEY_PERIOD == VK(ANSI_Period, KeyboardPeriod, OEM_PERIOD, PERIOD));
143
+ static_assert(KEY_SEMICOLON == VK(ANSI_Semicolon, KeyboardSemicolon, OEM_1, SEMICOLON));
144
+ static_assert(KEY_QUOTE == VK(ANSI_Quote, KeyboardQuote, OEM_7, APOSTROPHE));
145
+ static_assert(KEY_SLASH == VK(ANSI_Slash, KeyboardSlash, OEM_2, SLASH));
146
+ static_assert(KEY_BACKSLASH == VK(ANSI_Backslash, KeyboardBackslash, OEM_5, BACKSLASH));
147
+ static_assert(KEY_UNDERSCORE == VK(JIS_Underscore, KeyboardInternational1, _NONE, INTERNATIONAL1));
148
+ static_assert(KEY_GRAVE == VK(ANSI_Grave, KeyboardGraveAccentAndTilde, OEM_3, GRAVE));
149
+ static_assert(KEY_YEN == VK(JIS_Yen, KeyboardInternational3, _NONE, INTERNATIONAL3));
150
+ static_assert(KEY_LBRACKET == VK(ANSI_LeftBracket, KeyboardOpenBracket, OEM_4, LEFTBRACKET));
151
+ static_assert(KEY_RBRACKET == VK(ANSI_RightBracket, KeyboardCloseBracket, OEM_6, RIGHTBRACKET));
152
+
153
+ static_assert(KEY_ENTER == VK(Return, KeyboardReturnOrEnter, RETURN, RETURN));
154
+ static_assert(KEY_RETURN == VK(Return, KeyboardReturnOrEnter, RETURN, RETURN));
155
+ static_assert(KEY_SPACE == VK(Space, KeyboardSpacebar, SPACE, SPACE));
156
+ static_assert(KEY_TAB == VK(Tab, KeyboardTab, TAB, TAB));
157
+ static_assert(KEY_DELETE == VK(ForwardDelete, KeyboardDeleteForward, DELETE, DELETE));
158
+ static_assert(KEY_BACKSPACE == VK(Delete, KeyboardDeleteOrBackspace, BACK, BACKSPACE));
159
+ static_assert(KEY_INSERT == VK(_NONE, KeyboardInsert, INSERT, INSERT));
160
+ static_assert(KEY_ESCAPE == VK(Escape, KeyboardEscape, ESCAPE, ESCAPE));
161
+
162
+ static_assert(KEY_LEFT == VK(LeftArrow, KeyboardLeftArrow, LEFT, LEFT));
163
+ static_assert(KEY_RIGHT == VK(RightArrow, KeyboardRightArrow, RIGHT, RIGHT));
164
+ static_assert(KEY_UP == VK(UpArrow, KeyboardUpArrow, UP, UP));
165
+ static_assert(KEY_DOWN == VK(DownArrow, KeyboardDownArrow, DOWN, DOWN));
166
+ static_assert(KEY_HOME == VK(Home, KeyboardHome, HOME, HOME));
167
+ static_assert(KEY_END == VK(End, KeyboardEnd, END, END));
168
+ static_assert(KEY_PAGEUP == VK(PageUp, KeyboardPageUp, PRIOR, PAGEUP));
169
+ static_assert(KEY_PAGEDOWN == VK(PageDown, KeyboardPageDown, NEXT, PAGEDOWN));
170
+
171
+ static_assert(KEY_SHIFT == VK(Shift, KeyboardLeftShift, SHIFT, LSHIFT));
172
+ static_assert(KEY_LSHIFT == VK(Shift, KeyboardLeftShift, LSHIFT, LSHIFT));
173
+ static_assert(KEY_RSHIFT == VK(RightShift, KeyboardRightShift, RSHIFT, RSHIFT));
174
+ static_assert(KEY_CONTROL == VK(Control, KeyboardLeftControl, CONTROL, LCTRL));
175
+ static_assert(KEY_LCONTROL == VK(Control, KeyboardLeftControl, LCONTROL, LCTRL));
176
+ static_assert(KEY_RCONTROL == VK(RightControl, KeyboardRightControl, RCONTROL, RCTRL));
177
+ static_assert(KEY_ALT == VK(_NONE, KeyboardLeftAlt, MENU, LALT));
178
+ static_assert(KEY_LALT == VK(_NONE, KeyboardLeftAlt, LMENU, LALT));
179
+ static_assert(KEY_RALT == VK(_NONE, KeyboardRightAlt, RMENU, RALT));
180
+ static_assert(KEY_LWIN == VK(_NONE, KeyboardLeftGUI, LWIN, LGUI));
181
+ static_assert(KEY_RWIN == VK(_NONE, KeyboardRightGUI, RWIN, RGUI));
182
+ static_assert(KEY_COMMAND == VK(Command, KeyboardLeftGUI, _NONE, LGUI));
183
+ static_assert(KEY_LCOMMAND == VK(Command, KeyboardLeftGUI, _NONE, LGUI));
184
+ static_assert(KEY_RCOMMAND == VK(RightCommand, KeyboardRightGUI, _NONE, RGUI));
185
+ static_assert(KEY_OPTION == VK(Option, KeyboardLeftAlt, _NONE, LALT));
186
+ static_assert(KEY_LOPTION == VK(Option, KeyboardLeftAlt, _NONE, LALT));
187
+ static_assert(KEY_ROPTION == VK(RightOption, KeyboardRightAlt, _NONE, RALT));
188
+ static_assert(KEY_FUNCTION == VK(Function, _NONE, _NONE, _NONE));
189
+
190
+ static_assert(KEY_F1 == VK(F1, KeyboardF1, F1, F1));
191
+ static_assert(KEY_F2 == VK(F2, KeyboardF2, F2, F2));
192
+ static_assert(KEY_F3 == VK(F3, KeyboardF3, F3, F3));
193
+ static_assert(KEY_F4 == VK(F4, KeyboardF4, F4, F4));
194
+ static_assert(KEY_F5 == VK(F5, KeyboardF5, F5, F5));
195
+ static_assert(KEY_F6 == VK(F6, KeyboardF6, F6, F6));
196
+ static_assert(KEY_F7 == VK(F7, KeyboardF7, F7, F7));
197
+ static_assert(KEY_F8 == VK(F8, KeyboardF8, F8, F8));
198
+ static_assert(KEY_F9 == VK(F9, KeyboardF9, F9, F9));
199
+ static_assert(KEY_F10 == VK(F10, KeyboardF10, F10, F10));
200
+ static_assert(KEY_F11 == VK(F11, KeyboardF11, F11, F11));
201
+ static_assert(KEY_F12 == VK(F12, KeyboardF12, F12, F12));
202
+ static_assert(KEY_F13 == VK(F13, KeyboardF13, F13, F13));
203
+ static_assert(KEY_F14 == VK(F14, KeyboardF14, F14, F14));
204
+ static_assert(KEY_F15 == VK(F15, KeyboardF15, F15, F15));
205
+ static_assert(KEY_F16 == VK(F16, KeyboardF16, F16, F16));
206
+ static_assert(KEY_F17 == VK(F17, KeyboardF17, F17, F17));
207
+ static_assert(KEY_F18 == VK(F18, KeyboardF18, F18, F18));
208
+ static_assert(KEY_F19 == VK(F19, KeyboardF19, F19, F19));
209
+ static_assert(KEY_F20 == VK(F20, KeyboardF20, F20, F20));
210
+ static_assert(KEY_F21 == VK(_NONE, KeyboardF21, F21, F21));
211
+ static_assert(KEY_F22 == VK(_NONE, KeyboardF22, F22, F22));
212
+ static_assert(KEY_F23 == VK(_NONE, KeyboardF23, F23, F23));
213
+ static_assert(KEY_F24 == VK(_NONE, KeyboardF24, F24, F24));
214
+
215
+ static_assert(KEY_NUM_0 == VK(ANSI_Keypad0, Keypad0, NUMPAD0, KP_0));
216
+ static_assert(KEY_NUM_1 == VK(ANSI_Keypad1, Keypad1, NUMPAD1, KP_1));
217
+ static_assert(KEY_NUM_2 == VK(ANSI_Keypad2, Keypad2, NUMPAD2, KP_2));
218
+ static_assert(KEY_NUM_3 == VK(ANSI_Keypad3, Keypad3, NUMPAD3, KP_3));
219
+ static_assert(KEY_NUM_4 == VK(ANSI_Keypad4, Keypad4, NUMPAD4, KP_4));
220
+ static_assert(KEY_NUM_5 == VK(ANSI_Keypad5, Keypad5, NUMPAD5, KP_5));
221
+ static_assert(KEY_NUM_6 == VK(ANSI_Keypad6, Keypad6, NUMPAD6, KP_6));
222
+ static_assert(KEY_NUM_7 == VK(ANSI_Keypad7, Keypad7, NUMPAD7, KP_7));
223
+ static_assert(KEY_NUM_8 == VK(ANSI_Keypad8, Keypad8, NUMPAD8, KP_8));
224
+ static_assert(KEY_NUM_9 == VK(ANSI_Keypad9, Keypad9, NUMPAD9, KP_9));
225
+
226
+ static_assert(KEY_NUM_PLUS == VK(ANSI_KeypadPlus, KeypadPlus, ADD, KP_PLUS));
227
+ static_assert(KEY_NUM_MINUS == VK(ANSI_KeypadMinus, KeypadHyphen, SUBTRACT, KP_MINUS));
228
+ static_assert(KEY_NUM_MULTIPLY == VK(ANSI_KeypadMultiply, KeypadAsterisk, MULTIPLY, KP_MULTIPLY));
229
+ static_assert(KEY_NUM_DIVIDE == VK(ANSI_KeypadDivide, KeypadSlash, DIVIDE, KP_DIVIDE));
230
+ static_assert(KEY_NUM_EQUAL == VK(ANSI_KeypadEquals, KeypadEqualSign, _NONE, KP_EQUALS));
231
+ static_assert(KEY_NUM_PERIOD == VK(_NONE, KeypadPeriod, _NONE, KP_PERIOD));
232
+ static_assert(KEY_NUM_COMMA == VK(JIS_KeypadComma, KeypadComma, _NONE, KP_COMMA));
233
+ static_assert(KEY_NUM_DECIMAL == VK(ANSI_KeypadDecimal, _SKIP, DECIMAL, KP_DECIMAL));
234
+ static_assert(KEY_NUM_CLEAR == VK(ANSI_KeypadClear, KeypadNumLock, _NONE, NUMLOCKCLEAR));
235
+ static_assert(KEY_NUM_ENTER == VK(ANSI_KeypadEnter, KeypadEnter, _NONE, KP_ENTER));
236
+
237
+ static_assert(KEY_CAPSLOCK == VK(CapsLock, KeyboardCapsLock, CAPITAL, CAPSLOCK));
238
+ static_assert(KEY_NUMLOCK == VK(_NONE, KeypadNumLock, NUMLOCK, NUMLOCKCLEAR));
239
+ static_assert(KEY_SCROLLLOCK == VK(_NONE, KeyboardScrollLock, SCROLL, SCROLLLOCK));
240
+
241
+ static_assert(KEY_PRINTSCREEN == VK(_NONE, KeyboardPrintScreen, SNAPSHOT, PRINTSCREEN));
242
+ static_assert(KEY_PAUSE == VK(_NONE, KeyboardPause, PAUSE, PAUSE));
243
+ static_assert(KEY_BREAK == VK(_NONE, _NONE, _NONE, _NONE));
244
+ static_assert(KEY_SECTION == VK(ISO_Section, KeyboardNonUSBackslash, OEM_102, NONUSBACKSLASH));
245
+ static_assert(KEY_HELP == VK(Help, KeyboardHelp, HELP, HELP));
246
+
247
+ static_assert(KEY_EISU == VK(JIS_Eisu, KeyboardLANG1, _NONE, LANG1));
248
+ static_assert(KEY_KANA == VK(JIS_Kana, KeyboardLANG2, KANA, LANG2));
249
+ static_assert(KEY_KANJI == VK(_NONE, KeyboardLANG5, KANJI, LANG5));
250
+ static_assert(KEY_IME_ON == VK(_NONE, _NONE, IME_ON, _NONE));
251
+ static_assert(KEY_IME_OFF == VK(_NONE, _NONE, IME_OFF, _NONE));
252
+ static_assert(KEY_IME_MODECHANGE == VK(_NONE, _NONE, MODECHANGE, _NONE));
253
+ static_assert(KEY_CONVERT == VK(_NONE, _NONE, CONVERT, _NONE));
254
+ static_assert(KEY_NONCONVERT == VK(_NONE, _NONE, NONCONVERT, _NONE));
255
+ static_assert(KEY_ACCEPT == VK(_NONE, _NONE, ACCEPT, _NONE));
256
+ static_assert(KEY_PROCESS == VK(_NONE, _NONE, PROCESSKEY, _NONE));
257
+
258
+ static_assert(KEY_VOLUME_UP == VK(VolumeUp, KeyboardVolumeUp, VOLUME_UP, VOLUMEUP));
259
+ static_assert(KEY_VOLUME_DOWN == VK(VolumeDown, KeyboardVolumeDown, VOLUME_DOWN, VOLUMEDOWN));
260
+ static_assert(KEY_MUTE == VK(Mute, KeyboardMute, VOLUME_MUTE, MUTE));
261
+
262
+ static_assert(KEY_SLEEP == VK(_NONE, _SKIP, SLEEP, SLEEP));
263
+ static_assert(KEY_EXEC == VK(_NONE, KeyboardExecute, EXECUTE, EXECUTE));
264
+ static_assert(KEY_PRINT == VK(_NONE, _NONE, PRINT, _NONE));
265
+ static_assert(KEY_CONTEXT_MENU == VK(ContextualMenu, KeyboardApplication, APPS, APPLICATION));
266
+ static_assert(KEY_SELECT == VK(_NONE, KeyboardSelect, SELECT, SELECT));
267
+ static_assert(KEY_CLEAR == VK(_NONE, KeyboardClear, CLEAR, CLEAR));
268
+
269
+ static_assert(KEY_NAVIGATION_VIEW == VK(_NONE, _NONE, NAVIGATION_VIEW, _NONE));
270
+ static_assert(KEY_NAVIGATION_MENU == VK(_NONE, _NONE, NAVIGATION_MENU, _NONE));
271
+ static_assert(KEY_NAVIGATION_UP == VK(_NONE, _NONE, NAVIGATION_UP, _NONE));
272
+ static_assert(KEY_NAVIGATION_DOWN == VK(_NONE, _NONE, NAVIGATION_DOWN, _NONE));
273
+ static_assert(KEY_NAVIGATION_LEFT == VK(_NONE, _NONE, NAVIGATION_LEFT, _NONE));
274
+ static_assert(KEY_NAVIGATION_RIGHT == VK(_NONE, _NONE, NAVIGATION_RIGHT, _NONE));
275
+ static_assert(KEY_NAVIGATION_ACCEPT == VK(_NONE, _NONE, NAVIGATION_ACCEPT, _NONE));
276
+ static_assert(KEY_NAVIGATION_CANCEL == VK(_NONE, _NONE, NAVIGATION_CANCEL, _NONE));
277
+
278
+ static_assert(KEY_BROWSER_BACK == VK(_NONE, _SKIP, BROWSER_BACK, AC_BACK));
279
+ static_assert(KEY_BROWSER_FORWARD == VK(_NONE, _SKIP, BROWSER_FORWARD, AC_FORWARD));
280
+ static_assert(KEY_BROWSER_REFRESH == VK(_NONE, _SKIP, BROWSER_REFRESH, AC_REFRESH));
281
+ static_assert(KEY_BROWSER_STOP == VK(_NONE, _SKIP, BROWSER_STOP, AC_STOP));
282
+ static_assert(KEY_BROWSER_SEARCH == VK(_NONE, _SKIP, BROWSER_SEARCH, AC_SEARCH));
283
+ static_assert(KEY_BROWSER_FAVORITES == VK(_NONE, _SKIP, BROWSER_FAVORITES, AC_BOOKMARKS));
284
+ static_assert(KEY_BROWSER_HOME == VK(_NONE, _SKIP, BROWSER_HOME, AC_HOME));
285
+
286
+ static_assert(KEY_MEDIA_PREV_TRACK == VK(_NONE, _SKIP, MEDIA_PREV_TRACK, AUDIOPREV));
287
+ static_assert(KEY_MEDIA_NEXT_TRACK == VK(_NONE, _SKIP, MEDIA_NEXT_TRACK, AUDIONEXT));
288
+ static_assert(KEY_MEDIA_PLAY_PAUSE == VK(_NONE, _SKIP, MEDIA_PLAY_PAUSE, AUDIOPLAY));
289
+ static_assert(KEY_MEDIA_STOP == VK(_NONE, _SKIP, MEDIA_STOP, AUDIOSTOP));
290
+
291
+ static_assert(KEY_LAUNCH_MAIL == VK(_NONE, _SKIP, LAUNCH_MAIL, MAIL));
292
+ static_assert(KEY_LAUNCH_MEDIA_SELECT == VK(_NONE, _SKIP, LAUNCH_MEDIA_SELECT, MEDIASELECT));
293
+ static_assert(KEY_LAUNCH_APP1 == VK(_NONE, _SKIP, LAUNCH_APP1, APP1));
294
+ static_assert(KEY_LAUNCH_APP2 == VK(_NONE, _SKIP, LAUNCH_APP2, APP2));
295
+
296
+ static_assert(KEY_NONUSHASH == VK(_NONE, KeyboardNonUSPound, _NONE, NONUSHASH));
297
+ static_assert(KEY_POWER == VK(_NONE, KeyboardPower, _NONE, POWER));
298
+ static_assert(KEY_MENU == VK(_NONE, KeyboardMenu, _NONE, MENU));
299
+
300
+ static_assert(KEY_STOP == VK(_NONE, KeyboardStop, _NONE, STOP));
301
+ static_assert(KEY_AGAIN == VK(_NONE, KeyboardAgain, _NONE, AGAIN));
302
+ static_assert(KEY_UNDO == VK(_NONE, KeyboardUndo, _NONE, UNDO));
303
+ static_assert(KEY_CUT == VK(_NONE, KeyboardCut, _NONE, CUT));
304
+ static_assert(KEY_COPY == VK(_NONE, KeyboardCopy, _NONE, COPY));
305
+ static_assert(KEY_PASTE == VK(_NONE, KeyboardPaste, _NONE, PASTE));
306
+ static_assert(KEY_FIND == VK(_NONE, KeyboardFind, _NONE, FIND));
307
+
308
+ static_assert(KEY_NUM_EQUALSAS400 == VK(_NONE, KeypadEqualSignAS400, _NONE, KP_EQUALSAS400));
309
+
310
+ static_assert(KEY_INTERNATIONAL2 == VK(_NONE, KeyboardInternational2, _NONE, INTERNATIONAL2));
311
+ static_assert(KEY_INTERNATIONAL4 == VK(_NONE, KeyboardInternational4, _NONE, INTERNATIONAL4));
312
+ static_assert(KEY_INTERNATIONAL5 == VK(_NONE, KeyboardInternational5, _NONE, INTERNATIONAL5));
313
+ static_assert(KEY_INTERNATIONAL6 == VK(_NONE, KeyboardInternational6, _NONE, INTERNATIONAL6));
314
+ static_assert(KEY_INTERNATIONAL7 == VK(_NONE, KeyboardInternational7, _NONE, INTERNATIONAL7));
315
+ static_assert(KEY_INTERNATIONAL8 == VK(_NONE, KeyboardInternational8, _NONE, INTERNATIONAL8));
316
+ static_assert(KEY_INTERNATIONAL9 == VK(_NONE, KeyboardInternational9, _NONE, INTERNATIONAL9));
317
+
318
+ static_assert(KEY_LANG1 == VK(_NONE, KeyboardLANG1, _NONE, LANG1));
319
+ static_assert(KEY_LANG2 == VK(_NONE, KeyboardLANG2, _NONE, LANG2));
320
+ static_assert(KEY_LANG3 == VK(_NONE, KeyboardLANG3, _NONE, LANG3));
321
+ static_assert(KEY_LANG4 == VK(_NONE, KeyboardLANG4, _NONE, LANG4));
322
+ static_assert(KEY_LANG5 == VK(_NONE, KeyboardLANG5, _NONE, LANG5));
323
+ static_assert(KEY_LANG6 == VK(_NONE, KeyboardLANG6, _NONE, LANG6));
324
+ static_assert(KEY_LANG7 == VK(_NONE, KeyboardLANG7, _NONE, LANG7));
325
+ static_assert(KEY_LANG8 == VK(_NONE, KeyboardLANG8, _NONE, LANG8));
326
+ static_assert(KEY_LANG9 == VK(_NONE, KeyboardLANG9, _NONE, LANG9));
327
+
328
+ static_assert(KEY_ALTERASE == VK(_NONE, KeyboardAlternateErase, _NONE, ALTERASE));
329
+ static_assert(KEY_SYSREQ == VK(_NONE, KeyboardSysReqOrAttention, _NONE, SYSREQ));
330
+ static_assert(KEY_CANCEL == VK(_NONE, KeyboardCancel, _NONE, CANCEL));
331
+ static_assert(KEY_PRIOR == VK(_NONE, KeyboardPrior, _NONE, PRIOR));
332
+ static_assert(KEY_RETURN2 == VK(_NONE, KeyboardReturn, _NONE, RETURN2));
333
+ static_assert(KEY_SEPARATOR == VK(_NONE, KeyboardSeparator, _NONE, SEPARATOR));
334
+ static_assert(KEY_OUT == VK(_NONE, KeyboardOut, _NONE, OUT));
335
+ static_assert(KEY_OPER == VK(_NONE, KeyboardOper, _NONE, OPER));
336
+ static_assert(KEY_CLEARAGAIN == VK(_NONE, KeyboardClearOrAgain, _NONE, CLEARAGAIN));
337
+ static_assert(KEY_CRSEL == VK(_NONE, KeyboardCrSelOrProps, _NONE, CRSEL));
338
+ static_assert(KEY_EXSEL == VK(_NONE, KeyboardExSel, _NONE, EXSEL));
339
+
340
+ static_assert(KEY_NUM_00 == VK(_NONE, _SKIP, _NONE, KP_00));
341
+ static_assert(KEY_NUM_000 == VK(_NONE, _SKIP, _NONE, KP_000));
342
+ static_assert(KEY_THOUSANDSSEP == VK(_NONE, _SKIP, _NONE, THOUSANDSSEPARATOR));
343
+ static_assert(KEY_DECIMALSEP == VK(_NONE, _SKIP, _NONE, DECIMALSEPARATOR));
344
+ static_assert(KEY_CURRENCYUNIT == VK(_NONE, _SKIP, _NONE, CURRENCYUNIT));
345
+ static_assert(KEY_CURRENCYSUBUNIT == VK(_NONE, _SKIP, _NONE, CURRENCYSUBUNIT));
346
+ static_assert(KEY_NUM_LPAREN == VK(_NONE, _SKIP, _NONE, KP_LEFTPAREN));
347
+ static_assert(KEY_NUM_RPAREN == VK(_NONE, _SKIP, _NONE, KP_RIGHTPAREN));
348
+ static_assert(KEY_NUM_LBRACE == VK(_NONE, _SKIP, _NONE, KP_LEFTBRACE));
349
+ static_assert(KEY_NUM_RBRACE == VK(_NONE, _SKIP, _NONE, KP_RIGHTBRACE));
350
+ static_assert(KEY_NUM_TAB == VK(_NONE, _SKIP, _NONE, KP_TAB));
351
+ static_assert(KEY_NUM_BACKSPACE == VK(_NONE, _SKIP, _NONE, KP_BACKSPACE));
352
+ static_assert(KEY_NUM_A == VK(_NONE, _SKIP, _NONE, KP_A));
353
+ static_assert(KEY_NUM_B == VK(_NONE, _SKIP, _NONE, KP_B));
354
+ static_assert(KEY_NUM_C == VK(_NONE, _SKIP, _NONE, KP_C));
355
+ static_assert(KEY_NUM_D == VK(_NONE, _SKIP, _NONE, KP_D));
356
+ static_assert(KEY_NUM_E == VK(_NONE, _SKIP, _NONE, KP_E));
357
+ static_assert(KEY_NUM_F == VK(_NONE, _SKIP, _NONE, KP_F));
358
+ static_assert(KEY_NUM_XOR == VK(_NONE, _SKIP, _NONE, KP_XOR));
359
+ static_assert(KEY_NUM_POWER == VK(_NONE, _SKIP, _NONE, KP_POWER));
360
+ static_assert(KEY_NUM_PERCENT == VK(_NONE, _SKIP, _NONE, KP_PERCENT));
361
+ static_assert(KEY_NUM_LESS == VK(_NONE, _SKIP, _NONE, KP_LESS));
362
+ static_assert(KEY_NUM_GREATER == VK(_NONE, _SKIP, _NONE, KP_GREATER));
363
+ static_assert(KEY_NUM_AMPERSAND == VK(_NONE, _SKIP, _NONE, KP_AMPERSAND));
364
+ static_assert(KEY_NUM_DBLAMPERSAND == VK(_NONE, _SKIP, _NONE, KP_DBLAMPERSAND));
365
+ static_assert(KEY_NUM_VERTICALBAR == VK(_NONE, _SKIP, _NONE, KP_VERTICALBAR));
366
+ static_assert(KEY_NUM_DBLVERTICALBAR == VK(_NONE, _SKIP, _NONE, KP_DBLVERTICALBAR));
367
+ static_assert(KEY_NUM_COLON == VK(_NONE, _SKIP, _NONE, KP_COLON));
368
+ static_assert(KEY_NUM_HASH == VK(_NONE, _SKIP, _NONE, KP_HASH));
369
+ static_assert(KEY_NUM_SPACE == VK(_NONE, _SKIP, _NONE, KP_SPACE));
370
+ static_assert(KEY_NUM_AT == VK(_NONE, _SKIP, _NONE, KP_AT));
371
+ static_assert(KEY_NUM_EXCLAM == VK(_NONE, _SKIP, _NONE, KP_EXCLAM));
372
+ static_assert(KEY_NUM_MEMSTORE == VK(_NONE, _SKIP, _NONE, KP_MEMSTORE));
373
+ static_assert(KEY_NUM_MEMRECALL == VK(_NONE, _SKIP, _NONE, KP_MEMRECALL));
374
+ static_assert(KEY_NUM_MEMCLEAR == VK(_NONE, _SKIP, _NONE, KP_MEMCLEAR));
375
+ static_assert(KEY_NUM_MEMADD == VK(_NONE, _SKIP, _NONE, KP_MEMADD));
376
+ static_assert(KEY_NUM_MEMSUBTRACT == VK(_NONE, _SKIP, _NONE, KP_MEMSUBTRACT));
377
+ static_assert(KEY_NUM_MEMMULTIPLY == VK(_NONE, _SKIP, _NONE, KP_MEMMULTIPLY));
378
+ static_assert(KEY_NUM_MEMDIVIDE == VK(_NONE, _SKIP, _NONE, KP_MEMDIVIDE));
379
+ static_assert(KEY_NUM_PLUSMINUS == VK(_NONE, _SKIP, _NONE, KP_PLUSMINUS));
380
+ static_assert(KEY_NUM_CLEARENTRY == VK(_NONE, _SKIP, _NONE, KP_CLEARENTRY));
381
+ static_assert(KEY_NUM_BINARY == VK(_NONE, _SKIP, _NONE, KP_BINARY));
382
+ static_assert(KEY_NUM_OCTAL == VK(_NONE, _SKIP, _NONE, KP_OCTAL));
383
+ static_assert(KEY_NUM_HEXADECIMAL == VK(_NONE, _SKIP, _NONE, KP_HEXADECIMAL));
384
+
385
+ static_assert(KEY_MODE == VK(_NONE, _SKIP, _NONE, MODE));
386
+
387
+ static_assert(KEY_AUDIOMUTE == VK(_NONE, _SKIP, _NONE, AUDIOMUTE));
388
+ static_assert(KEY_WWW == VK(_NONE, _SKIP, _NONE, WWW));
389
+ static_assert(KEY_CALCULATOR == VK(_NONE, _SKIP, _NONE, CALCULATOR));
390
+ static_assert(KEY_COMPUTER == VK(_NONE, _SKIP, _NONE, COMPUTER));
391
+
392
+ static_assert(KEY_BRIGHTNESSDOWN == VK(_NONE, _SKIP, _NONE, BRIGHTNESSDOWN));
393
+ static_assert(KEY_BRIGHTNESSUP == VK(_NONE, _SKIP, _NONE, BRIGHTNESSUP));
394
+ static_assert(KEY_DISPLAYSWITCH == VK(_NONE, _SKIP, _NONE, DISPLAYSWITCH));
395
+ static_assert(KEY_KBDILLUMTOGGLE == VK(_NONE, _SKIP, _NONE, KBDILLUMTOGGLE));
396
+ static_assert(KEY_KBDILLUMDOWN == VK(_NONE, _SKIP, _NONE, KBDILLUMDOWN));
397
+ static_assert(KEY_KBDILLUMUP == VK(_NONE, _SKIP, _NONE, KBDILLUMUP));
398
+ static_assert(KEY_EJECT == VK(_NONE, _SKIP, _NONE, EJECT));
399
+
400
+ static_assert(KEY_AUDIOREWIND == VK(_NONE, _SKIP, _NONE, AUDIOREWIND));
401
+ static_assert(KEY_AUDIOFASTFORWARD == VK(_NONE, _SKIP, _NONE, AUDIOFASTFORWARD));
402
+
403
+ static_assert(KEY_SOFTLEFT == VK(_NONE, _SKIP, _NONE, SOFTLEFT));
404
+ static_assert(KEY_SOFTRIGHT == VK(_NONE, _SKIP, _NONE, SOFTRIGHT));
405
+ static_assert(KEY_CALL == VK(_NONE, _SKIP, _NONE, CALL));
406
+ static_assert(KEY_ENDCALL == VK(_NONE, _SKIP, _NONE, ENDCALL));
407
+
408
+ #undef VK
409
+ #undef _NONE
410
+ #undef _SKIP
411
+
412
+
413
+ }// Reflex
414
+
415
+
416
+ #endif//EOH