reflexion 0.3.14 → 0.3.15

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.
@@ -48,6 +48,8 @@ namespace Reflex
48
48
 
49
49
  using Rays::String;
50
50
 
51
+ using Rays::StringList;
52
+
51
53
 
52
54
  using Rays::coord;
53
55
 
@@ -76,208 +78,324 @@ namespace Reflex
76
78
  KEY_NONE = -1,
77
79
 
78
80
  #if defined(WIN32)
79
- #define NATIVE_VK(_, win32) win32
81
+ #define NATIVE_VK(darwin, win32, sdl) win32
82
+ #elif defined(LINUX)
83
+ #define NATIVE_VK(darwin, win32, sdl) sdl
80
84
  #else
81
- #define NATIVE_VK(darwin, _) darwin
85
+ #define NATIVE_VK(darwin, win32, sdl) darwin
82
86
  #endif
83
87
 
84
- KEY_A = NATIVE_VK(0x00, 0x41),
85
- KEY_B = NATIVE_VK(0x0B, 0x42),
86
- KEY_C = NATIVE_VK(0x08, 0x43),
87
- KEY_D = NATIVE_VK(0x02, 0x44),
88
- KEY_E = NATIVE_VK(0x0E, 0x45),
89
- KEY_F = NATIVE_VK(0x03, 0x46),
90
- KEY_G = NATIVE_VK(0x05, 0x47),
91
- KEY_H = NATIVE_VK(0x04, 0x48),
92
- KEY_I = NATIVE_VK(0x22, 0x49),
93
- KEY_J = NATIVE_VK(0x26, 0x4a),
94
- KEY_K = NATIVE_VK(0x28, 0x4b),
95
- KEY_L = NATIVE_VK(0x25, 0x4c),
96
- KEY_M = NATIVE_VK(0x2E, 0x4d),
97
- KEY_N = NATIVE_VK(0x2D, 0x4e),
98
- KEY_O = NATIVE_VK(0x1F, 0x4f),
99
- KEY_P = NATIVE_VK(0x23, 0x50),
100
- KEY_Q = NATIVE_VK(0x0C, 0x51),
101
- KEY_R = NATIVE_VK(0x0F, 0x52),
102
- KEY_S = NATIVE_VK(0x01, 0x53),
103
- KEY_T = NATIVE_VK(0x11, 0x54),
104
- KEY_U = NATIVE_VK(0x20, 0x55),
105
- KEY_V = NATIVE_VK(0x09, 0x56),
106
- KEY_W = NATIVE_VK(0x0D, 0x57),
107
- KEY_X = NATIVE_VK(0x07, 0x58),
108
- KEY_Y = NATIVE_VK(0x10, 0x59),
109
- KEY_Z = NATIVE_VK(0x06, 0x5a),
110
-
111
- KEY_0 = NATIVE_VK(0x1D, 0x30),
112
- KEY_1 = NATIVE_VK(0x12, 0x31),
113
- KEY_2 = NATIVE_VK(0x13, 0x32),
114
- KEY_3 = NATIVE_VK(0x14, 0x33),
115
- KEY_4 = NATIVE_VK(0x15, 0x34),
116
- KEY_5 = NATIVE_VK(0x17, 0x35),
117
- KEY_6 = NATIVE_VK(0x16, 0x36),
118
- KEY_7 = NATIVE_VK(0x1A, 0x37),
119
- KEY_8 = NATIVE_VK(0x1C, 0x38),
120
- KEY_9 = NATIVE_VK(0x19, 0x39),
121
-
122
- KEY_MINUS = NATIVE_VK(0x1B, -2),
123
- KEY_EQUAL = NATIVE_VK(0x18, -3),
124
- KEY_COMMA = NATIVE_VK(0x2B, -4),
125
- KEY_PERIOD = NATIVE_VK(0x2F, -5),
126
- KEY_SEMICOLON = NATIVE_VK(0x29, -6),
127
- KEY_QUOTE = NATIVE_VK(0x27, -7),
128
- KEY_SLASH = NATIVE_VK(0x2C, -8),
129
- KEY_BACKSLASH = NATIVE_VK(0x2A, -9),
130
- KEY_UNDERSCORE = NATIVE_VK(0x5E, -10),
131
- KEY_GRAVE = NATIVE_VK(0x32, -11),
132
- KEY_YEN = NATIVE_VK(0x5D, -12),
133
- KEY_LBRACKET = NATIVE_VK(0x21, -13),
134
- KEY_RBRACKET = NATIVE_VK(0x1E, -14),
135
-
136
- KEY_ENTER = NATIVE_VK(0x24, 0x0D),
137
- KEY_RETURN = NATIVE_VK(0x24, 0x0D),
138
- KEY_SPACE = NATIVE_VK(0x31, 0x20),
139
- KEY_TAB = NATIVE_VK(0x30, 0x09),
140
- KEY_DELETE = NATIVE_VK(0x75, 0x2E),
141
- KEY_BACKSPACE = NATIVE_VK(0x33, 0x08),
142
- KEY_INSERT = NATIVE_VK(-2, 0x2D),
143
- KEY_ESCAPE = NATIVE_VK(0x35, 0x1B),
144
-
145
- KEY_LEFT = NATIVE_VK(0x7B, 0x25),
146
- KEY_RIGHT = NATIVE_VK(0x7C, 0x27),
147
- KEY_UP = NATIVE_VK(0x7E, 0x26),
148
- KEY_DOWN = NATIVE_VK(0x7D, 0x28),
149
- KEY_HOME = NATIVE_VK(0x73, 0x24),
150
- KEY_END = NATIVE_VK(0x77, 0x23),
151
- KEY_PAGEUP = NATIVE_VK(0x74, 0x21),
152
- KEY_PAGEDOWN = NATIVE_VK(0x79, 0x22),
153
-
154
- KEY_SHIFT = NATIVE_VK(0x38, 0x10),
155
- KEY_LSHIFT = NATIVE_VK(0x38, 0xA0),
156
- KEY_RSHIFT = NATIVE_VK(0x3C, 0xA1),
157
- KEY_CONTROL = NATIVE_VK(0x3B, 0x11),
158
- KEY_LCONTROL = NATIVE_VK(0x3B, 0xA2),
159
- KEY_RCONTROL = NATIVE_VK(0x3E, 0xA3),
160
- KEY_ALT = NATIVE_VK(-3, 0x12),
161
- KEY_LALT = NATIVE_VK(-4, 0xA4),
162
- KEY_RALT = NATIVE_VK(-5, 0xA5),
163
- KEY_LWIN = NATIVE_VK(-6, 0x5B),
164
- KEY_RWIN = NATIVE_VK(-7, 0x5C),
165
- KEY_COMMAND = NATIVE_VK(0x37, -15),
166
- KEY_LCOMMAND = NATIVE_VK(0x37, -16),
167
- KEY_RCOMMAND = NATIVE_VK(0x36, -17),
168
- KEY_OPTION = NATIVE_VK(0x3A, -18),
169
- KEY_LOPTION = NATIVE_VK(0x3A, -19),
170
- KEY_ROPTION = NATIVE_VK(0x3D, -20),
171
- KEY_FUNCTION = NATIVE_VK(0x3F, -21),
172
-
173
- KEY_F1 = NATIVE_VK(0x7A, 0x70),
174
- KEY_F2 = NATIVE_VK(0x78, 0x71),
175
- KEY_F3 = NATIVE_VK(0x63, 0x72),
176
- KEY_F4 = NATIVE_VK(0x76, 0x73),
177
- KEY_F5 = NATIVE_VK(0x60, 0x74),
178
- KEY_F6 = NATIVE_VK(0x61, 0x75),
179
- KEY_F7 = NATIVE_VK(0x62, 0x76),
180
- KEY_F8 = NATIVE_VK(0x64, 0x77),
181
- KEY_F9 = NATIVE_VK(0x65, 0x78),
182
- KEY_F10 = NATIVE_VK(0x6D, 0x79),
183
- KEY_F11 = NATIVE_VK(0x67, 0x7A),
184
- KEY_F12 = NATIVE_VK(0x6F, 0x7B),
185
- KEY_F13 = NATIVE_VK(0x69, 0x7C),
186
- KEY_F14 = NATIVE_VK(0x6B, 0x7D),
187
- KEY_F15 = NATIVE_VK(0x71, 0x7E),
188
- KEY_F16 = NATIVE_VK(0x6A, 0x7F),
189
- KEY_F17 = NATIVE_VK(0x40, 0x80),
190
- KEY_F18 = NATIVE_VK(0x4F, 0x81),
191
- KEY_F19 = NATIVE_VK(0x50, 0x82),
192
- KEY_F20 = NATIVE_VK(0x5A, 0x83),
193
- KEY_F21 = NATIVE_VK(-8, 0x84),
194
- KEY_F22 = NATIVE_VK(-9, 0x85),
195
- KEY_F23 = NATIVE_VK(-10, 0x86),
196
- KEY_F24 = NATIVE_VK(-11, 0x87),
197
-
198
- KEY_NUM_0 = NATIVE_VK(0x52, 0x60),
199
- KEY_NUM_1 = NATIVE_VK(0x53, 0x61),
200
- KEY_NUM_2 = NATIVE_VK(0x54, 0x62),
201
- KEY_NUM_3 = NATIVE_VK(0x55, 0x63),
202
- KEY_NUM_4 = NATIVE_VK(0x56, 0x64),
203
- KEY_NUM_5 = NATIVE_VK(0x57, 0x65),
204
- KEY_NUM_6 = NATIVE_VK(0x58, 0x66),
205
- KEY_NUM_7 = NATIVE_VK(0x59, 0x67),
206
- KEY_NUM_8 = NATIVE_VK(0x5B, 0x68),
207
- KEY_NUM_9 = NATIVE_VK(0x5C, 0x69),
208
-
209
- KEY_NUM_PLUS = NATIVE_VK(0x45, -22),
210
- KEY_NUM_MINUS = NATIVE_VK(0x4E, -23),
211
- KEY_NUM_MULTIPLY = NATIVE_VK(0x43, -24),
212
- KEY_NUM_DIVIDE = NATIVE_VK(0x4B, -25),
213
- KEY_NUM_EQUAL = NATIVE_VK(0x51, -26),
214
- KEY_NUM_COMMA = NATIVE_VK(0x5F, -27),
215
- KEY_NUM_DECIMAL = NATIVE_VK(0x41, -28),
216
- KEY_NUM_CLEAR = NATIVE_VK(0x47, -29),
217
- KEY_NUM_ENTER = NATIVE_VK(0x4C, -30),
218
-
219
- KEY_CAPSLOCK = NATIVE_VK(0x39, 0x14),
220
- KEY_NUMLOCK = NATIVE_VK(-12, 0x90),
221
- KEY_SCROLLLOCK = NATIVE_VK(-13, 0x91),
222
-
223
- KEY_PRINTSCREEN = NATIVE_VK(-14, 0x2C),
224
- KEY_PAUSE = NATIVE_VK(-15, 0x13),
225
- KEY_BREAK = NATIVE_VK(-16, -31),
226
- KEY_SECTION = NATIVE_VK(0x0A, -32),
227
- KEY_HELP = NATIVE_VK(0x72, 0x2F),
228
-
229
- KEY_EISU = NATIVE_VK(0x66, -33),
230
- KEY_KANA = NATIVE_VK(0x68, 0x15),
231
- KEY_KANJI = NATIVE_VK(-17, 0x19),
232
- KEY_IME_ON = NATIVE_VK(-18, 0x16),
233
- KEY_IME_OFF = NATIVE_VK(-19, 0x1A),
234
- KEY_IME_MODECHANGE = NATIVE_VK(-20, 0x1F),
235
- KEY_CONVERT = NATIVE_VK(-21, 0x1C),
236
- KEY_NONCONVERT = NATIVE_VK(-22, 0x1D),
237
- KEY_ACCEPT = NATIVE_VK(-23, 0x1E),
238
- KEY_PROCESS = NATIVE_VK(-24, 0xE5),
239
-
240
- KEY_VOLUME_UP = NATIVE_VK(0x48, 0xAF),
241
- KEY_VOLUME_DOWN = NATIVE_VK(0x49, 0xAE),
242
- KEY_MUTE = NATIVE_VK(0x4A, 0xAD),
243
-
244
- KEY_SLEEP = NATIVE_VK(-25, 0x5F),
245
- KEY_EXEC = NATIVE_VK(-26, 0x2B),
246
- KEY_PRINT = NATIVE_VK(-27, 0x2A),
247
- KEY_APPS = NATIVE_VK(-28, 0x5D),
248
- KEY_SELECT = NATIVE_VK(-29, 0x29),
249
- KEY_CLEAR = NATIVE_VK(-30, 0x0C),
250
-
251
- KEY_NAVIGATION_VIEW = NATIVE_VK(-31, 0x88),
252
- KEY_NAVIGATION_MENU = NATIVE_VK(-32, 0x89),
253
- KEY_NAVIGATION_UP = NATIVE_VK(-33, 0x8A),
254
- KEY_NAVIGATION_DOWN = NATIVE_VK(-34, 0x8B),
255
- KEY_NAVIGATION_LEFT = NATIVE_VK(-35, 0x8C),
256
- KEY_NAVIGATION_RIGHT = NATIVE_VK(-36, 0x8D),
257
- KEY_NAVIGATION_ACCEPT = NATIVE_VK(-37, 0x8E),
258
- KEY_NAVIGATION_CANCEL = NATIVE_VK(-38, 0x8F),
259
-
260
- KEY_BROWSER_BACK = NATIVE_VK(-39, 0xA6),
261
- KEY_BROWSER_FORWARD = NATIVE_VK(-40, 0xA7),
262
- KEY_BROWSER_REFRESH = NATIVE_VK(-41, 0xA8),
263
- KEY_BROWSER_STOP = NATIVE_VK(-42, 0xA9),
264
- KEY_BROWSER_SEARCH = NATIVE_VK(-43, 0xAA),
265
- KEY_BROWSER_FAVORITES = NATIVE_VK(-44, 0xAB),
266
- KEY_BROWSER_HOME = NATIVE_VK(-45, 0xAC),
267
-
268
- KEY_MEDIA_PREV_TRACK = NATIVE_VK(-46, 0xB1),
269
- KEY_MEDIA_NEXT_TRACK = NATIVE_VK(-47, 0xB0),
270
- KEY_MEDIA_PLAY_PAUSE = NATIVE_VK(-48, 0xB3),
271
- KEY_MEDIA_STOP = NATIVE_VK(-49, 0xB2),
272
-
273
- KEY_LAUNCH_MAIL = NATIVE_VK(-50, 0xB4),
274
- KEY_LAUNCH_MEDIA_SELECT = NATIVE_VK(-51, 0xB5),
275
- KEY_LAUNCH_APP1 = NATIVE_VK(-52, 0xB6),
276
- KEY_LAUNCH_APP2 = NATIVE_VK(-53, 0xB7),
88
+ KEY_A = NATIVE_VK(0x00, 0x41, 0x04),
89
+ KEY_B = NATIVE_VK(0x0B, 0x42, 0x05),
90
+ KEY_C = NATIVE_VK(0x08, 0x43, 0x06),
91
+ KEY_D = NATIVE_VK(0x02, 0x44, 0x07),
92
+ KEY_E = NATIVE_VK(0x0E, 0x45, 0x08),
93
+ KEY_F = NATIVE_VK(0x03, 0x46, 0x09),
94
+ KEY_G = NATIVE_VK(0x05, 0x47, 0x0A),
95
+ KEY_H = NATIVE_VK(0x04, 0x48, 0x0B),
96
+ KEY_I = NATIVE_VK(0x22, 0x49, 0x0C),
97
+ KEY_J = NATIVE_VK(0x26, 0x4A, 0x0D),
98
+ KEY_K = NATIVE_VK(0x28, 0x4B, 0x0E),
99
+ KEY_L = NATIVE_VK(0x25, 0x4C, 0x0F),
100
+ KEY_M = NATIVE_VK(0x2E, 0x4D, 0x10),
101
+ KEY_N = NATIVE_VK(0x2D, 0x4E, 0x11),
102
+ KEY_O = NATIVE_VK(0x1F, 0x4F, 0x12),
103
+ KEY_P = NATIVE_VK(0x23, 0x50, 0x13),
104
+ KEY_Q = NATIVE_VK(0x0C, 0x51, 0x14),
105
+ KEY_R = NATIVE_VK(0x0F, 0x52, 0x15),
106
+ KEY_S = NATIVE_VK(0x01, 0x53, 0x16),
107
+ KEY_T = NATIVE_VK(0x11, 0x54, 0x17),
108
+ KEY_U = NATIVE_VK(0x20, 0x55, 0x18),
109
+ KEY_V = NATIVE_VK(0x09, 0x56, 0x19),
110
+ KEY_W = NATIVE_VK(0x0D, 0x57, 0x1A),
111
+ KEY_X = NATIVE_VK(0x07, 0x58, 0x1B),
112
+ KEY_Y = NATIVE_VK(0x10, 0x59, 0x1C),
113
+ KEY_Z = NATIVE_VK(0x06, 0x5A, 0x1D),
114
+
115
+ KEY_0 = NATIVE_VK(0x1D, 0x30, 0x27),
116
+ KEY_1 = NATIVE_VK(0x12, 0x31, 0x1E),
117
+ KEY_2 = NATIVE_VK(0x13, 0x32, 0x1F),
118
+ KEY_3 = NATIVE_VK(0x14, 0x33, 0x20),
119
+ KEY_4 = NATIVE_VK(0x15, 0x34, 0x21),
120
+ KEY_5 = NATIVE_VK(0x17, 0x35, 0x22),
121
+ KEY_6 = NATIVE_VK(0x16, 0x36, 0x23),
122
+ KEY_7 = NATIVE_VK(0x1A, 0x37, 0x24),
123
+ KEY_8 = NATIVE_VK(0x1C, 0x38, 0x25),
124
+ KEY_9 = NATIVE_VK(0x19, 0x39, 0x26),
125
+
126
+ KEY_MINUS = NATIVE_VK(0x1B, -2, 0x2D),
127
+ KEY_EQUAL = NATIVE_VK(0x18, -3, 0x2E),
128
+ KEY_COMMA = NATIVE_VK(0x2B, -4, 0x36),
129
+ KEY_PERIOD = NATIVE_VK(0x2F, -5, 0x37),
130
+ KEY_SEMICOLON = NATIVE_VK(0x29, -6, 0x33),
131
+ KEY_QUOTE = NATIVE_VK(0x27, -7, 0x34),
132
+ KEY_SLASH = NATIVE_VK(0x2C, -8, 0x38),
133
+ KEY_BACKSLASH = NATIVE_VK(0x2A, -9, 0x31),
134
+ KEY_UNDERSCORE = NATIVE_VK(0x5E, -10, 0x87),// JIS
135
+ KEY_GRAVE = NATIVE_VK(0x32, -11, 0x35),
136
+ KEY_YEN = NATIVE_VK(0x5D, -12, 0x89),
137
+ KEY_LBRACKET = NATIVE_VK(0x21, -13, 0x2F),
138
+ KEY_RBRACKET = NATIVE_VK(0x1E, -14, 0x30),
139
+
140
+ KEY_ENTER = NATIVE_VK(0x24, 0x0D, 0x28),
141
+ KEY_RETURN = NATIVE_VK(0x24, 0x0D, 0x28),
142
+ KEY_SPACE = NATIVE_VK(0x31, 0x20, 0x2C),
143
+ KEY_TAB = NATIVE_VK(0x30, 0x09, 0x2B),
144
+ KEY_DELETE = NATIVE_VK(0x75, 0x2E, 0x4C),
145
+ KEY_BACKSPACE = NATIVE_VK(0x33, 0x08, 0x2A),
146
+ KEY_INSERT = NATIVE_VK(-2, 0x2D, 0x49),
147
+ KEY_ESCAPE = NATIVE_VK(0x35, 0x1B, 0x29),
148
+
149
+ KEY_LEFT = NATIVE_VK(0x7B, 0x25, 0x50),
150
+ KEY_RIGHT = NATIVE_VK(0x7C, 0x27, 0x4F),
151
+ KEY_UP = NATIVE_VK(0x7E, 0x26, 0x52),
152
+ KEY_DOWN = NATIVE_VK(0x7D, 0x28, 0x51),
153
+ KEY_HOME = NATIVE_VK(0x73, 0x24, 0x4A),
154
+ KEY_END = NATIVE_VK(0x77, 0x23, 0x4D),
155
+ KEY_PAGEUP = NATIVE_VK(0x74, 0x21, 0x4B),
156
+ KEY_PAGEDOWN = NATIVE_VK(0x79, 0x22, 0x4E),
157
+
158
+ KEY_SHIFT = NATIVE_VK(0x38, 0x10, 0xE1),
159
+ KEY_LSHIFT = NATIVE_VK(0x38, 0xA0, 0xE1),
160
+ KEY_RSHIFT = NATIVE_VK(0x3C, 0xA1, 0xE5),
161
+ KEY_CONTROL = NATIVE_VK(0x3B, 0x11, 0xE0),
162
+ KEY_LCONTROL = NATIVE_VK(0x3B, 0xA2, 0xE0),
163
+ KEY_RCONTROL = NATIVE_VK(0x3E, 0xA3, 0xE4),
164
+ KEY_ALT = NATIVE_VK(-3, 0x12, 0xE2),
165
+ KEY_LALT = NATIVE_VK(-4, 0xA4, 0xE2),
166
+ KEY_RALT = NATIVE_VK(-5, 0xA5, 0xE6),
167
+ KEY_LWIN = NATIVE_VK(-6, 0x5B, 0xE3),
168
+ KEY_RWIN = NATIVE_VK(-7, 0x5C, 0xE7),
169
+ KEY_COMMAND = NATIVE_VK(0x37, -15, 0xE3),
170
+ KEY_LCOMMAND = NATIVE_VK(0x37, -16, 0xE3),
171
+ KEY_RCOMMAND = NATIVE_VK(0x36, -17, 0xE7),
172
+ KEY_OPTION = NATIVE_VK(0x3A, -18, 0xE2),
173
+ KEY_LOPTION = NATIVE_VK(0x3A, -19, 0xE2),
174
+ KEY_ROPTION = NATIVE_VK(0x3D, -20, 0xE6),
175
+ KEY_FUNCTION = NATIVE_VK(0x3F, -21, -2),
176
+
177
+ KEY_F1 = NATIVE_VK(0x7A, 0x70, 0x3A),
178
+ KEY_F2 = NATIVE_VK(0x78, 0x71, 0x3B),
179
+ KEY_F3 = NATIVE_VK(0x63, 0x72, 0x3C),
180
+ KEY_F4 = NATIVE_VK(0x76, 0x73, 0x3D),
181
+ KEY_F5 = NATIVE_VK(0x60, 0x74, 0x3E),
182
+ KEY_F6 = NATIVE_VK(0x61, 0x75, 0x3F),
183
+ KEY_F7 = NATIVE_VK(0x62, 0x76, 0x40),
184
+ KEY_F8 = NATIVE_VK(0x64, 0x77, 0x41),
185
+ KEY_F9 = NATIVE_VK(0x65, 0x78, 0x42),
186
+ KEY_F10 = NATIVE_VK(0x6D, 0x79, 0x43),
187
+ KEY_F11 = NATIVE_VK(0x67, 0x7A, 0x44),
188
+ KEY_F12 = NATIVE_VK(0x6F, 0x7B, 0x45),
189
+ KEY_F13 = NATIVE_VK(0x69, 0x7C, 0x68),
190
+ KEY_F14 = NATIVE_VK(0x6B, 0x7D, 0x69),
191
+ KEY_F15 = NATIVE_VK(0x71, 0x7E, 0x6A),
192
+ KEY_F16 = NATIVE_VK(0x6A, 0x7F, 0x6B),
193
+ KEY_F17 = NATIVE_VK(0x40, 0x80, 0x6C),
194
+ KEY_F18 = NATIVE_VK(0x4F, 0x81, 0x6D),
195
+ KEY_F19 = NATIVE_VK(0x50, 0x82, 0x6E),
196
+ KEY_F20 = NATIVE_VK(0x5A, 0x83, 0x6F),
197
+ KEY_F21 = NATIVE_VK(-8, 0x84, 0x70),
198
+ KEY_F22 = NATIVE_VK(-9, 0x85, 0x71),
199
+ KEY_F23 = NATIVE_VK(-10, 0x86, 0x72),
200
+ KEY_F24 = NATIVE_VK(-11, 0x87, 0x73),
201
+
202
+ KEY_NUM_0 = NATIVE_VK(0x52, 0x60, 0x62),
203
+ KEY_NUM_1 = NATIVE_VK(0x53, 0x61, 0x59),
204
+ KEY_NUM_2 = NATIVE_VK(0x54, 0x62, 0x5A),
205
+ KEY_NUM_3 = NATIVE_VK(0x55, 0x63, 0x5B),
206
+ KEY_NUM_4 = NATIVE_VK(0x56, 0x64, 0x5C),
207
+ KEY_NUM_5 = NATIVE_VK(0x57, 0x65, 0x5D),
208
+ KEY_NUM_6 = NATIVE_VK(0x58, 0x66, 0x5E),
209
+ KEY_NUM_7 = NATIVE_VK(0x59, 0x67, 0x5F),
210
+ KEY_NUM_8 = NATIVE_VK(0x5B, 0x68, 0x60),
211
+ KEY_NUM_9 = NATIVE_VK(0x5C, 0x69, 0x61),
212
+
213
+ KEY_NUM_PLUS = NATIVE_VK(0x45, -22, 0x57),
214
+ KEY_NUM_MINUS = NATIVE_VK(0x4E, -23, 0x56),
215
+ KEY_NUM_MULTIPLY = NATIVE_VK(0x43, -24, 0x55),
216
+ KEY_NUM_DIVIDE = NATIVE_VK(0x4B, -25, 0x54),
217
+ KEY_NUM_EQUAL = NATIVE_VK(0x51, -26, 0x67),
218
+ KEY_NUM_PERIOD = NATIVE_VK(-12, -27, 0x63),
219
+ KEY_NUM_COMMA = NATIVE_VK(0x5F, -28, 0x85),
220
+ KEY_NUM_DECIMAL = NATIVE_VK(0x41, -29, 0xDC),
221
+ KEY_NUM_CLEAR = NATIVE_VK(0x47, -30, 0x53),
222
+ KEY_NUM_ENTER = NATIVE_VK(0x4C, -31, 0x58),
223
+
224
+ KEY_CAPSLOCK = NATIVE_VK(0x39, 0x14, 0x39),
225
+ KEY_NUMLOCK = NATIVE_VK(-13, 0x90, 0x53),
226
+ KEY_SCROLLLOCK = NATIVE_VK(-14, 0x91, 0x47),
227
+
228
+ KEY_PRINTSCREEN = NATIVE_VK(-15, 0x2C, 0x46),
229
+ KEY_PAUSE = NATIVE_VK(-16, 0x13, 0x48),
230
+ KEY_BREAK = NATIVE_VK(-17, -32, -3),
231
+ KEY_SECTION = NATIVE_VK(0x0A, 0xE2, 0x64),
232
+ KEY_HELP = NATIVE_VK(0x72, 0x2F, 0x75),
233
+
234
+ KEY_EISU = NATIVE_VK(0x66, -33, -4),
235
+ KEY_KANA = NATIVE_VK(0x68, 0x15, -5),
236
+ KEY_KANJI = NATIVE_VK(-18, 0x19, -6),
237
+ KEY_IME_ON = NATIVE_VK(-19, 0x16, -7),
238
+ KEY_IME_OFF = NATIVE_VK(-20, 0x1A, -8),
239
+ KEY_IME_MODECHANGE = NATIVE_VK(-21, 0x1F, -9),
240
+ KEY_CONVERT = NATIVE_VK(-22, 0x1C, -10),
241
+ KEY_NONCONVERT = NATIVE_VK(-23, 0x1D, -11),
242
+ KEY_ACCEPT = NATIVE_VK(-24, 0x1E, -12),
243
+ KEY_PROCESS = NATIVE_VK(-25, 0xE5, -13),
244
+
245
+ KEY_VOLUME_UP = NATIVE_VK(0x48, 0xAF, 0x80),
246
+ KEY_VOLUME_DOWN = NATIVE_VK(0x49, 0xAE, 0x81),
247
+ KEY_MUTE = NATIVE_VK(0x4A, 0xAD, 0x7F),
248
+
249
+ KEY_SLEEP = NATIVE_VK(-26, 0x5F, 0x11A),
250
+ KEY_EXEC = NATIVE_VK(-27, 0x2B, 0x74),
251
+ KEY_PRINT = NATIVE_VK(-28, 0x2A, -14),
252
+ KEY_APPS = NATIVE_VK(-29, 0x5D, 0x65),
253
+ KEY_SELECT = NATIVE_VK(-30, 0x29, 0x77),
254
+ KEY_CLEAR = NATIVE_VK(-31, 0x0C, 0x9C),
255
+
256
+ KEY_NAVIGATION_VIEW = NATIVE_VK(-32, 0x88, -15),
257
+ KEY_NAVIGATION_MENU = NATIVE_VK(-33, 0x89, -16),
258
+ KEY_NAVIGATION_UP = NATIVE_VK(-34, 0x8A, -17),
259
+ KEY_NAVIGATION_DOWN = NATIVE_VK(-35, 0x8B, -18),
260
+ KEY_NAVIGATION_LEFT = NATIVE_VK(-36, 0x8C, -19),
261
+ KEY_NAVIGATION_RIGHT = NATIVE_VK(-37, 0x8D, -20),
262
+ KEY_NAVIGATION_ACCEPT = NATIVE_VK(-38, 0x8E, -21),
263
+ KEY_NAVIGATION_CANCEL = NATIVE_VK(-39, 0x8F, -22),
264
+
265
+ KEY_BROWSER_BACK = NATIVE_VK(-40, 0xA6, 0x10E),
266
+ KEY_BROWSER_FORWARD = NATIVE_VK(-41, 0xA7, 0x10F),
267
+ KEY_BROWSER_REFRESH = NATIVE_VK(-42, 0xA8, 0x111),
268
+ KEY_BROWSER_STOP = NATIVE_VK(-43, 0xA9, 0x110),
269
+ KEY_BROWSER_SEARCH = NATIVE_VK(-44, 0xAA, 0x10C),
270
+ KEY_BROWSER_FAVORITES = NATIVE_VK(-45, 0xAB, 0x112),
271
+ KEY_BROWSER_HOME = NATIVE_VK(-46, 0xAC, 0x10D),
272
+
273
+ KEY_MEDIA_PREV_TRACK = NATIVE_VK(-47, 0xB1, 0x103),
274
+ KEY_MEDIA_NEXT_TRACK = NATIVE_VK(-48, 0xB0, 0x102),
275
+ KEY_MEDIA_PLAY_PAUSE = NATIVE_VK(-49, 0xB3, 0x105),
276
+ KEY_MEDIA_STOP = NATIVE_VK(-50, 0xB2, 0x104),
277
+
278
+ KEY_LAUNCH_MAIL = NATIVE_VK(-51, 0xB4, 0x109),
279
+ KEY_LAUNCH_MEDIA_SELECT = NATIVE_VK(-52, 0xB5, 0x107),
280
+ KEY_LAUNCH_APP1 = NATIVE_VK(-53, 0xB6, 0x11B),
281
+ KEY_LAUNCH_APP2 = NATIVE_VK(-54, 0xB7, 0x11C),
282
+
283
+ // from SDK scan codes
284
+ KEY_NONUSHASH = NATIVE_VK(-55, -34, 0x32),
285
+ KEY_POWER = NATIVE_VK(-56, -35, 0x66),
286
+ KEY_MENU = NATIVE_VK(-57, -36, 0x76),
287
+
288
+ KEY_STOP = NATIVE_VK(-58, -37, 0x78),
289
+ KEY_AGAIN = NATIVE_VK(-59, -38, 0x79),
290
+ KEY_UNDO = NATIVE_VK(-60, -39, 0x7A),
291
+ KEY_CUT = NATIVE_VK(-61, -40, 0x7B),
292
+ KEY_COPY = NATIVE_VK(-62, -41, 0x7C),
293
+ KEY_PASTE = NATIVE_VK(-63, -42, 0x7D),
294
+ KEY_FIND = NATIVE_VK(-64, -43, 0x7E),
295
+
296
+ KEY_NUM_EQUALSAS400 = NATIVE_VK(-65, -44, 0x86),
297
+
298
+ KEY_INTERNATIONAL2 = NATIVE_VK(-66, -45, 0x88),
299
+ KEY_INTERNATIONAL4 = NATIVE_VK(-67, -46, 0x8A),
300
+ KEY_INTERNATIONAL5 = NATIVE_VK(-68, -47, 0x8B),
301
+ KEY_INTERNATIONAL6 = NATIVE_VK(-69, -48, 0x8C),
302
+ KEY_INTERNATIONAL7 = NATIVE_VK(-70, -49, 0x8D),
303
+ KEY_INTERNATIONAL8 = NATIVE_VK(-71, -50, 0x8E),
304
+ KEY_INTERNATIONAL9 = NATIVE_VK(-72, -51, 0x8F),
305
+
306
+ KEY_LANG1 = NATIVE_VK(-73, -52, 0x90),// Hangul/English toggle
307
+ KEY_LANG2 = NATIVE_VK(-74, -53, 0x91),// Hanja conversion
308
+ KEY_LANG3 = NATIVE_VK(-75, -54, 0x92),// Katakana
309
+ KEY_LANG4 = NATIVE_VK(-76, -55, 0x93),// Hiragana
310
+ KEY_LANG5 = NATIVE_VK(-77, -56, 0x94),// Zenkaku/Hankaku
311
+ KEY_LANG6 = NATIVE_VK(-78, -57, 0x95),
312
+ KEY_LANG7 = NATIVE_VK(-79, -58, 0x96),
313
+ KEY_LANG8 = NATIVE_VK(-80, -59, 0x97),
314
+ KEY_LANG9 = NATIVE_VK(-81, -60, 0x98),
315
+
316
+ KEY_ALTERASE = NATIVE_VK(-82, -61, 0x99),
317
+ KEY_SYSREQ = NATIVE_VK(-83, -62, 0x9A),
318
+ KEY_CANCEL = NATIVE_VK(-84, -63, 0x9B),
319
+ KEY_PRIOR = NATIVE_VK(-85, -64, 0x9D),
320
+ KEY_RETURN2 = NATIVE_VK(-86, -65, 0x9E),
321
+ KEY_SEPARATOR = NATIVE_VK(-87, -66, 0x9F),
322
+ KEY_OUT = NATIVE_VK(-88, -67, 0xA0),
323
+ KEY_OPER = NATIVE_VK(-89, -68, 0xA1),
324
+ KEY_CLEARAGAIN = NATIVE_VK(-90, -69, 0xA2),
325
+ KEY_CRSEL = NATIVE_VK(-91, -70, 0xA3),
326
+ KEY_EXSEL = NATIVE_VK(-92, -71, 0xA4),
327
+
328
+ KEY_NUM_00 = NATIVE_VK(-93, -72, 0xB0),
329
+ KEY_NUM_000 = NATIVE_VK(-94, -73, 0xB1),
330
+ KEY_THOUSANDSSEP = NATIVE_VK(-95, -74, 0xB2),
331
+ KEY_DECIMALSEP = NATIVE_VK(-96, -75, 0xB3),
332
+ KEY_CURRENCYUNIT = NATIVE_VK(-97, -76, 0xB4),
333
+ KEY_CURRENCYSUBUNIT = NATIVE_VK(-98, -77, 0xB5),
334
+ KEY_NUM_LPAREN = NATIVE_VK(-99, -78, 0xB6),
335
+ KEY_NUM_RPAREN = NATIVE_VK(-100, -79, 0xB7),
336
+ KEY_NUM_LBRACE = NATIVE_VK(-101, -80, 0xB8),
337
+ KEY_NUM_RBRACE = NATIVE_VK(-102, -81, 0xB9),
338
+ KEY_NUM_TAB = NATIVE_VK(-103, -82, 0xBA),
339
+ KEY_NUM_BACKSPACE = NATIVE_VK(-104, -83, 0xBB),
340
+ KEY_NUM_A = NATIVE_VK(-105, -84, 0xBC),
341
+ KEY_NUM_B = NATIVE_VK(-106, -85, 0xBD),
342
+ KEY_NUM_C = NATIVE_VK(-107, -86, 0xBE),
343
+ KEY_NUM_D = NATIVE_VK(-108, -87, 0xBF),
344
+ KEY_NUM_E = NATIVE_VK(-109, -88, 0xC0),
345
+ KEY_NUM_F = NATIVE_VK(-110, -89, 0xC1),
346
+ KEY_NUM_XOR = NATIVE_VK(-111, -90, 0xC2),
347
+ KEY_NUM_POWER = NATIVE_VK(-112, -91, 0xC3),
348
+ KEY_NUM_PERCENT = NATIVE_VK(-113, -92, 0xC4),
349
+ KEY_NUM_LESS = NATIVE_VK(-114, -93, 0xC5),
350
+ KEY_NUM_GREATER = NATIVE_VK(-115, -94, 0xC6),
351
+ KEY_NUM_AMPERSAND = NATIVE_VK(-116, -95, 0xC7),
352
+ KEY_NUM_DBLAMPERSAND = NATIVE_VK(-117, -96, 0xC8),
353
+ KEY_NUM_VERTICALBAR = NATIVE_VK(-118, -97, 0xC9),
354
+ KEY_NUM_DBLVERTICALBAR = NATIVE_VK(-119, -98, 0xCA),
355
+ KEY_NUM_COLON = NATIVE_VK(-120, -99, 0xCB),
356
+ KEY_NUM_HASH = NATIVE_VK(-121, -100, 0xCC),
357
+ KEY_NUM_SPACE = NATIVE_VK(-122, -101, 0xCD),
358
+ KEY_NUM_AT = NATIVE_VK(-123, -102, 0xCE),
359
+ KEY_NUM_EXCLAM = NATIVE_VK(-124, -103, 0xCF),
360
+ KEY_NUM_MEMSTORE = NATIVE_VK(-125, -104, 0xD0),
361
+ KEY_NUM_MEMRECALL = NATIVE_VK(-126, -105, 0xD1),
362
+ KEY_NUM_MEMCLEAR = NATIVE_VK(-127, -106, 0xD2),
363
+ KEY_NUM_MEMADD = NATIVE_VK(-128, -107, 0xD3),
364
+ KEY_NUM_MEMSUBTRACT = NATIVE_VK(-129, -108, 0xD4),
365
+ KEY_NUM_MEMMULTIPLY = NATIVE_VK(-130, -109, 0xD5),
366
+ KEY_NUM_MEMDIVIDE = NATIVE_VK(-131, -110, 0xD6),
367
+ KEY_NUM_PLUSMINUS = NATIVE_VK(-132, -111, 0xD7),
368
+ KEY_NUM_CLEARENTRY = NATIVE_VK(-133, -112, 0xD9),
369
+ KEY_NUM_BINARY = NATIVE_VK(-134, -113, 0xDA),
370
+ KEY_NUM_OCTAL = NATIVE_VK(-135, -114, 0xDB),
371
+ KEY_NUM_HEXADECIMAL = NATIVE_VK(-136, -115, 0xDD),
372
+
373
+ KEY_MODE = NATIVE_VK(-137, -116, 0x101),
374
+
375
+ KEY_AUDIOMUTE = NATIVE_VK(-138, -117, 0x106),
376
+ KEY_WWW = NATIVE_VK(-139, -118, 0x108),
377
+ KEY_CALCULATOR = NATIVE_VK(-140, -119, 0x10A),
378
+ KEY_COMPUTER = NATIVE_VK(-141, -120, 0x10B),
379
+
380
+ KEY_BRIGHTNESSDOWN = NATIVE_VK(-142, -121, 0x113),
381
+ KEY_BRIGHTNESSUP = NATIVE_VK(-143, -122, 0x114),
382
+ KEY_DISPLAYSWITCH = NATIVE_VK(-144, -123, 0x115),
383
+ KEY_KBDILLUMTOGGLE = NATIVE_VK(-145, -124, 0x116),
384
+ KEY_KBDILLUMDOWN = NATIVE_VK(-146, -125, 0x117),
385
+ KEY_KBDILLUMUP = NATIVE_VK(-147, -126, 0x118),
386
+ KEY_EJECT = NATIVE_VK(-148, -127, 0x119),
387
+
388
+ KEY_AUDIOREWIND = NATIVE_VK(-149, -128, 0x11D),
389
+ KEY_AUDIOFASTFORWARD = NATIVE_VK(-150, -129, 0x11E),
390
+
391
+ KEY_SOFTLEFT = NATIVE_VK(-151, -130, 0x11F),
392
+ KEY_SOFTRIGHT = NATIVE_VK(-152, -131, 0x120),
393
+ KEY_CALL = NATIVE_VK(-153, -132, 0x121),
394
+ KEY_ENDCALL = NATIVE_VK(-154, -133, 0x122),
277
395
 
278
396
  #undef NATIVE_VK
279
397
 
280
- KEY_GAMEPAD_LEFT = 0x100,
398
+ KEY_GAMEPAD_LEFT = 0x200,
281
399
  KEY_GAMEPAD_RIGHT,
282
400
  KEY_GAMEPAD_UP,
283
401
  KEY_GAMEPAD_DOWN,
@@ -367,6 +485,8 @@ namespace Reflex
367
485
 
368
486
  MOD_CAPS = 0x1 << 9,
369
487
 
488
+ MOD_SCROLL = 0x1 << 10,
489
+
370
490
  };// Modifier
371
491
 
372
492
 
@@ -1,7 +1,7 @@
1
1
  // -*- c++ -*-
2
2
  #pragma once
3
- #ifndef __REFLEX_RUBY_H__
4
- #define __REFLEX_RUBY_H__
3
+ #ifndef __REFLEX_RUBY_ALL_H__
4
+ #define __REFLEX_RUBY_ALL_H__
5
5
 
6
6
 
7
7
  #include <reflex/ruby/defs.h>
data/include/reflex.h CHANGED
@@ -1,7 +1,7 @@
1
1
  // -*- c++ -*-
2
2
  #pragma once
3
- #ifndef __REFLEX_H__
4
- #define __REFLEX_H__
3
+ #ifndef __REFLEX_ALL_H__
4
+ #define __REFLEX_ALL_H__
5
5
 
6
6
 
7
7
  #include <reflex/defs.h>
@@ -5,8 +5,10 @@ module Reflex
5
5
 
6
6
  module_function
7
7
 
8
- def name()
9
- super.split('::')[-2]
8
+ def name(downcase = false)
9
+ super().split('::')[-2].then {|s|
10
+ downcase ? s.gsub(/([a-z])([A-Z])/) {"#{$1}-#{$2}"}.downcase : s
11
+ }
10
12
  end
11
13
 
12
14
  def version()
@@ -29,6 +31,10 @@ module Reflex
29
31
  root_dir 'ext'
30
32
  end
31
33
 
34
+ def lib_name()
35
+ "#{name true}.dll" if /mswin|ming|cygwin/.match? RUBY_PLATFORM
36
+ end
37
+
32
38
  end# Extension
33
39
 
34
40
 
data/reflex.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  end
11
11
 
12
12
  ext = Reflex::Extension
13
- name = ext.name.downcase
13
+ name = ext.name true
14
14
  rdocs = glob.call *%w[README .doc/ext/**/*.cpp]
15
15
 
16
16
  s.name = "#{name}ion"
@@ -25,15 +25,14 @@ Gem::Specification.new do |s|
25
25
  s.platform = Gem::Platform::RUBY
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
- s.add_dependency 'xot', '~> 0.3.11'
29
- s.add_dependency 'rucy', '~> 0.3.11'
30
- s.add_dependency 'rays', '~> 0.3.11'
28
+ s.add_dependency 'xot', '~> 0.3.12'
29
+ s.add_dependency 'rucy', '~> 0.3.12'
30
+ s.add_dependency 'rays', '~> 0.3.12'
31
31
 
32
32
  s.files = `git ls-files`.split $/
33
33
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
34
34
  s.test_files = s.files.grep %r{^(test|spec|features)/}
35
35
  s.extra_rdoc_files = rdocs.to_a
36
- s.has_rdoc = true
37
36
 
38
37
  s.extensions << 'Rakefile'
39
38
  end
data/src/application.cpp CHANGED
@@ -29,12 +29,24 @@ namespace Reflex
29
29
  MIDI_init(app);
30
30
  }
31
31
 
32
+ static void
33
+ close_all_windows (Application* app)
34
+ {
35
+ for (auto it = app->window_begin(), end = app->window_end(); it != end; ++it)
36
+ (*it)->close(true);
37
+ }
38
+
32
39
  void
33
40
  Application_call_quit (Application* app, Event* e)
34
41
  {
42
+ if (app->self->quitting) return;
43
+
35
44
  app->on_quit(e);
36
45
  if (e->is_blocked()) return;
37
46
 
47
+ app->self->quitting = true;
48
+
49
+ close_all_windows(app);
38
50
  MIDI_fin(app);
39
51
  Gamepad_fin(app);
40
52
  }
data/src/application.h CHANGED
@@ -16,6 +16,8 @@ namespace Reflex
16
16
 
17
17
  String name;
18
18
 
19
+ bool quitting = false;
20
+
19
21
  };// Application::Data
20
22
 
21
23
 
data/src/midi.cpp CHANGED
@@ -304,6 +304,10 @@ namespace Reflex
304
304
  void
305
305
  MIDI_init (Application* app)
306
306
  {
307
+ #ifdef WASM
308
+ return;
309
+ #endif
310
+
307
311
  if (manager)
308
312
  invalid_state_error(__FILE__, __LINE__);
309
313