rubygl 0.1.0 → 0.2.1

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 (38) hide show
  1. checksums.yaml +13 -5
  2. data/.travis/push-rdoc-to-gh-pages.sh +22 -0
  3. data/.travis.yml +18 -0
  4. data/Gemfile +7 -0
  5. data/Gemfile.lock +12 -0
  6. data/LICENSE +21 -21
  7. data/README.md +40 -0
  8. data/Rakefile +98 -83
  9. data/bin/ffi_code_gen.rb +166 -166
  10. data/bin/gl_code_gen.rb +458 -458
  11. data/examples/faceted_example.rb +71 -64
  12. data/examples/instanced_example.rb +135 -127
  13. data/examples/phong_example.rb +80 -71
  14. data/ext/windows/RubyGL.so +0 -0
  15. data/lib/rubygl/event.rb +64 -0
  16. data/lib/{RubyGL → rubygl}/geometry.rb +216 -211
  17. data/lib/{RubyGL → rubygl}/math.rb +300 -300
  18. data/lib/{RubyGL → rubygl}/memory.rb +125 -121
  19. data/lib/rubygl/native/all_enums.rb +641 -0
  20. data/lib/{RubyGL/Native → rubygl/native}/glcontext.rb +23 -47
  21. data/lib/{RubyGL/Native → rubygl/native}/include/GLContext.h +36 -36
  22. data/lib/{RubyGL/Native → rubygl/native}/include/Input.h +15 -15
  23. data/lib/{RubyGL/Native → rubygl/native}/include/Window.h +27 -27
  24. data/lib/rubygl/native/input.rb +247 -0
  25. data/lib/{RubyGL/Native → rubygl/native}/opengl.rb +2808 -2032
  26. data/lib/{RubyGL/Native → rubygl/native}/src/GLContext.c +72 -72
  27. data/lib/{RubyGL/Native → rubygl/native}/src/Input.c +25 -25
  28. data/lib/{RubyGL/Native → rubygl/native}/src/Window.c +57 -57
  29. data/lib/{RubyGL/Native → rubygl/native}/window.rb +24 -24
  30. data/lib/{RubyGL → rubygl}/setup.rb +50 -50
  31. data/lib/{RubyGL → rubygl}/shader.rb +203 -203
  32. data/lib/{RubyGL → rubygl}/util.rb +77 -77
  33. data/lib/rubygl.rb +49 -48
  34. data/{RubyGL.gemspec → rubygl.gemspec} +20 -23
  35. data/test/test_util.rb +19 -0
  36. metadata +36 -33
  37. data/lib/RubyGL/Native/input.rb +0 -13
  38. data/lib/RubyGL/callback.rb +0 -10
@@ -0,0 +1,641 @@
1
+
2
+ module RubyGL::Native
3
+
4
+ # The different types of attributes that can be set for a specific OpenGL
5
+ # context. Only a few of these are going to be used in a simple application.
6
+ ALL_ATTRIBS = enum :attribute, [
7
+ :red_size, 0,
8
+ :green_size,
9
+ :blue_size,
10
+ :alpha_size,
11
+ :buffer_size,
12
+ :doublebuffer,
13
+ :depth_size,
14
+ :stencil_size,
15
+ :accum_red_size,
16
+ :accum_green_size,
17
+ :accum_blue_size,
18
+ :accum_alpha_size,
19
+ :stereo,
20
+ :multisamplebuffers,
21
+ :multisamplesamples,
22
+ :accelerated_visual,
23
+ :retained_backing,
24
+ :context_major_version,
25
+ :context_minor_version,
26
+ :context_egl,
27
+ :context_flags,
28
+ :context_profile_mask,
29
+ :share_with_current_context,
30
+ :framebuffer_srgb_capable
31
+ ]
32
+
33
+ # The different types of events that may be generated during an applications
34
+ # lifetime. These correlate to the different type of event structs that are given
35
+ # to us when one of these events occurs. See input.rb for the list of structs.
36
+ ALL_EVENTS = enum :event_type, [
37
+ # Quit Events
38
+ :quit, 0x100,
39
+ # Window Events
40
+ :window_event, 0x200,
41
+ # Keyboard Events
42
+ :key_down, 0x300,
43
+ :key_up,
44
+ :text_editing,
45
+ :text_input,
46
+ # Mouse Events
47
+ :mouse_motion, 0x400,
48
+ :mouse_button_down,
49
+ :mouse_button_up,
50
+ :mouse_wheel,
51
+ # Joystick Events
52
+ :joy_axis_motion, 0x600,
53
+ :joy_ball_motion,
54
+ :joy_hat_motion,
55
+ :joy_button_down,
56
+ :joy_button_up,
57
+ :joy_device_added,
58
+ :joy_device_removed,
59
+ # Game Controller Events
60
+ :controller_axis_motion, 0x650,
61
+ :controller_button_down,
62
+ :controller_button_up,
63
+ :controller_device_added,
64
+ :controller_device_removed,
65
+ :controller_device_remapped,
66
+ # Drag And Drop Events
67
+ :drop_file, 0x1000
68
+ ]
69
+
70
+ # Translate symbolic mouse buttons to their actual value
71
+ def self.mouse_button_mask(button)
72
+ (1 << (button - 1))
73
+ end
74
+
75
+ # Mouse button values that correspond to the :button value within the
76
+ # MouseButtonEvent struct
77
+ ALL_MOUSECODES = enum :mousecode, [
78
+ # Symbolic Enumerations, SHOULD NOT BE USED
79
+ :button_left, mouse_button_mask(1),
80
+ :button_midle, mouse_button_mask(2),
81
+ :button_right, mouse_button_mask(3),
82
+ :button_x1, mouse_button_mask(4),
83
+ :button_x2, mouse_button_mask(5)
84
+ ]
85
+
86
+ # Key modifier values that correspond to the :mod value within the Keysym
87
+ # struct
88
+ ALL_KEYMODS = enum :keymods, [
89
+ :kmod_none, 0x0000,
90
+ :kmod_lshift, 0x0001,
91
+ :kmod_rshift, 0x0002,
92
+ :kmod_lctrl, 0x0040,
93
+ :kmod_rctrl, 0x0080,
94
+ :kmod_lalt, 0x0100,
95
+ :kmod_ralt, 0x0200,
96
+ :kmod_lgui, 0x0400,
97
+ :kmod_rgui, 0x0800,
98
+ :kmod_num, 0x1000,
99
+ :kmod_caps, 0x2000,
100
+ :kmod_mode, 0x4000,
101
+ :kmod_reserved, 0x8000
102
+ ]
103
+
104
+ # Physical key codes which map to the location of specific keys on a keyboard.
105
+ # These should almost never be used because a user will not be able to arrange
106
+ # their keyboard setup in order to achieve a more preferred layout.
107
+ ALL_SCANCODES = enum :scancode, [
108
+ :scancode_a, 4,
109
+ :scancode_b, 5,
110
+ :scancode_c, 6,
111
+ :scancode_d, 7,
112
+ :scancode_e, 8,
113
+ :scancode_f, 9,
114
+ :scancode_g, 10,
115
+ :scancode_h, 11,
116
+ :scancode_i, 12,
117
+ :scancode_j, 13,
118
+ :scancode_k, 14,
119
+ :scancode_l, 15,
120
+ :scancode_m, 16,
121
+ :scancode_n, 17,
122
+ :scancode_o, 18,
123
+ :scancode_p, 19,
124
+ :scancode_q, 20,
125
+ :scancode_r, 21,
126
+ :scancode_s, 22,
127
+ :scancode_t, 23,
128
+ :scancode_u, 24,
129
+ :scancode_v, 25,
130
+ :scancode_w, 26,
131
+ :scancode_x, 27,
132
+ :scancode_y, 28,
133
+ :scancode_z, 29,
134
+
135
+ :scancode_1, 30,
136
+ :scancode_2, 31,
137
+ :scancode_3, 32,
138
+ :scancode_4, 33,
139
+ :scancode_5, 34,
140
+ :scancode_6, 35,
141
+ :scancode_7, 36,
142
+ :scancode_8, 37,
143
+ :scancode_9, 38,
144
+ :scancode_0, 39,
145
+
146
+ :scancode_return, 40,
147
+ :scancode_escape, 41,
148
+ :scancode_backspace, 42,
149
+ :scancode_tab, 43,
150
+ :scancode_space, 44,
151
+
152
+ :scancode_minus, 45,
153
+ :scancode_equals, 46,
154
+ :scancode_leftbracket, 47,
155
+ :scancode_rightbracket, 48,
156
+ :scancode_backslash, 49,
157
+ :scancode_nonushash, 50,
158
+ :scancode_semicolon, 51,
159
+ :scancode_apostrophe, 52,
160
+ :scancode_grave, 53,
161
+ :scancode_comma, 54,
162
+ :scancode_period, 55,
163
+ :scancode_slash, 56,
164
+
165
+ :scancode_capslock, 57,
166
+
167
+ :scancode_f1, 58,
168
+ :scancode_f2, 59,
169
+ :scancode_f3, 60,
170
+ :scancode_f4, 61,
171
+ :scancode_f5, 62,
172
+ :scancode_f6, 63,
173
+ :scancode_f7, 64,
174
+ :scancode_f8, 65,
175
+ :scancode_f9, 66,
176
+ :scancode_f10, 67,
177
+ :scancode_f11, 68,
178
+ :scancode_f12, 69,
179
+
180
+ :scancode_printscreen, 70,
181
+ :scancode_scrolllock, 71,
182
+ :scancode_pause, 72,
183
+ :scancode_insert, 73,
184
+
185
+ :scancode_home, 74,
186
+ :scancode_pageup, 75,
187
+ :scancode_delete, 76,
188
+ :scancode_end, 77,
189
+ :scancode_pagedown, 78,
190
+ :scancode_right, 79,
191
+ :scancode_left, 80,
192
+ :scancode_down, 81,
193
+ :scancode_up, 82,
194
+
195
+ :scancode_numlockclear, 83,
196
+
197
+ :scancode_kp_divide, 84,
198
+ :scancode_kp_multiply, 85,
199
+ :scancode_kp_minus, 86,
200
+ :scancode_kp_plus, 87,
201
+ :scancode_kp_enter, 88,
202
+ :scancode_kp_1, 89,
203
+ :scancode_kp_2, 90,
204
+ :scancode_kp_3, 91,
205
+ :scancode_kp_4, 92,
206
+ :scancode_kp_5, 93,
207
+ :scancode_kp_6, 94,
208
+ :scancode_kp_7, 95,
209
+ :scancode_kp_8, 96,
210
+ :scancode_kp_9, 97,
211
+ :scancode_kp_0, 98,
212
+ :scancode_kp_period, 99,
213
+
214
+ :scancode_nonusbackslash, 100,
215
+
216
+ :scancode_application, 101,
217
+ :scancode_power, 102,
218
+
219
+ :scancode_kp_equals, 103,
220
+ :scancode_f13, 104,
221
+ :scancode_f14, 105,
222
+ :scancode_f15, 106,
223
+ :scancode_f16, 107,
224
+ :scancode_f17, 108,
225
+ :scancode_f18, 109,
226
+ :scancode_f19, 110,
227
+ :scancode_f20, 111,
228
+ :scancode_f21, 112,
229
+ :scancode_f22, 113,
230
+ :scancode_f23, 114,
231
+ :scancode_f24, 115,
232
+ :scancode_execute, 116,
233
+ :scancode_help, 117,
234
+ :scancode_menu, 118,
235
+ :scancode_select, 119,
236
+ :scancode_stop, 120,
237
+ :scancode_again, 121,
238
+ :scancode_undo, 122,
239
+ :scancode_cut, 123,
240
+ :scancode_copy, 124,
241
+ :scancode_paste, 125,
242
+ :scancode_find, 126,
243
+ :scancode_mute, 127,
244
+ :scancode_volumeup, 128,
245
+ :scancode_volumedown, 129,
246
+ #:scancode_lockingcapslock, 130,
247
+ #:scancode_lockingnumlock, 131,
248
+ #:scancode_lockingscrolllock, 132,
249
+ :scancode_kp_comma, 133,
250
+ :scancode_kp_equalsas400, 134,
251
+
252
+ :scancode_international1, 135,
253
+
254
+ :scancode_international2, 136,
255
+ :scancode_international3, 137,
256
+ :scancode_international4, 138,
257
+ :scancode_international5, 139,
258
+ :scancode_international6, 140,
259
+ :scancode_international7, 141,
260
+ :scancode_international8, 142,
261
+ :scancode_international9, 143,
262
+ :scancode_lang1, 144,
263
+ :scancode_lang2, 145,
264
+ :scancode_lang3, 146,
265
+ :scancode_lang4, 147,
266
+ :scancode_lang5, 148,
267
+ :scancode_lang6, 149,
268
+ :scancode_lang7, 150,
269
+ :scancode_lang8, 151,
270
+ :scancode_lang9, 152,
271
+
272
+ :scancode_alterase, 153,
273
+ :scancode_sysreq, 154,
274
+ :scancode_cancel, 155,
275
+ :scancode_clear, 156,
276
+ :scancode_prior, 157,
277
+ :scancode_return2, 158,
278
+ :scancode_separator, 159,
279
+ :scancode_out, 160,
280
+ :scancode_oper, 161,
281
+ :scancode_clearagain, 162,
282
+ :scancode_crsel, 163,
283
+ :scancode_exsel, 164,
284
+
285
+ :scancode_kp_00, 176,
286
+ :scancode_kp_000, 177,
287
+ :scancode_thousandsseparator, 178,
288
+ :scancode_decimalseparator, 179,
289
+ :scancode_currencyunit, 180,
290
+ :scancode_currencysubunit, 181,
291
+ :scancode_kp_leftparen, 182,
292
+ :scancode_kp_rightparen, 183,
293
+ :scancode_kp_leftbrace, 184,
294
+ :scancode_kp_rightbrace, 185,
295
+ :scancode_kp_tab, 186,
296
+ :scancode_kp_backspace, 187,
297
+ :scancode_kp_a, 188,
298
+ :scancode_kp_b, 189,
299
+ :scancode_kp_c, 190,
300
+ :scancode_kp_d, 191,
301
+ :scancode_kp_e, 192,
302
+ :scancode_kp_f, 193,
303
+ :scancode_kp_xor, 194,
304
+ :scancode_kp_power, 195,
305
+ :scancode_kp_percent, 196,
306
+ :scancode_kp_less, 197,
307
+ :scancode_kp_greater, 198,
308
+ :scancode_kp_ampersand, 199,
309
+ :scancode_kp_dblampersand, 200,
310
+ :scancode_kp_verticalbar, 201,
311
+ :scancode_kp_dblverticalbar, 202,
312
+ :scancode_kp_colon, 203,
313
+ :scancode_kp_hash, 204,
314
+ :scancode_kp_space, 205,
315
+ :scancode_kp_at, 206,
316
+ :scancode_kp_exclam, 207,
317
+ :scancode_kp_memstore, 208,
318
+ :scancode_kp_memrecall, 209,
319
+ :scancode_kp_memclear, 210,
320
+ :scancode_kp_memadd, 211,
321
+ :scancode_kp_memsubtract, 212,
322
+ :scancode_kp_memmultiply, 213,
323
+ :scancode_kp_memdivide, 214,
324
+ :scancode_kp_plusminus, 215,
325
+ :scancode_kp_clear, 216,
326
+ :scancode_kp_clearentry, 217,
327
+ :scancode_kp_binary, 218,
328
+ :scancode_kp_octal, 219,
329
+ :scancode_kp_decimal, 220,
330
+ :scancode_kp_hexadecimal, 221,
331
+
332
+ :scancode_lctrl, 224,
333
+ :scancode_lshift, 225,
334
+ :scancode_lalt, 226,
335
+ :scancode_lgui, 227,
336
+ :scancode_rctrl, 228,
337
+ :scancode_rshift, 229,
338
+ :scancode_ralt, 230,
339
+ :scancode_rgui, 231,
340
+
341
+ :scancode_mode, 257,
342
+
343
+ :scancode_audionext, 258,
344
+ :scancode_audioprev, 259,
345
+ :scancode_audiostop, 260,
346
+ :scancode_audioplay, 261,
347
+ :scancode_audiomute, 262,
348
+ :scancode_mediaselect, 263,
349
+ :scancode_www, 264,
350
+ :scancode_mail, 265,
351
+ :scancode_calculator, 266,
352
+ :scancode_computer, 267,
353
+ :scancode_ac_search, 268,
354
+ :scancode_ac_home, 269,
355
+ :scancode_ac_back, 270,
356
+ :scancode_ac_forward, 271,
357
+ :scancode_ac_stop, 272,
358
+ :scancode_ac_refresh, 273,
359
+ :scancode_ac_bookmarks, 274,
360
+
361
+
362
+ :scancode_brightnessdown, 275,
363
+ :scancode_brightnessup, 276,
364
+ :scancode_displayswitch, 277,
365
+
366
+ :scancode_kbdillumtoggle, 278,
367
+ :scancode_kbdillumdown, 279,
368
+ :scancode_kbdillumup, 280,
369
+ :scancode_eject, 281,
370
+ :scancode_sleep, 282,
371
+
372
+ :scancode_app1, 283,
373
+ :scancode_app2, 284,
374
+ :num_scancodes, 512
375
+ ]
376
+
377
+ # Used to convert some scan codes into key codes.
378
+ def self.scancode_to_keycode(scancode)
379
+ code_value = ALL_SCANCODES[scancode]
380
+
381
+ code_value | (1 << 30)
382
+ end
383
+
384
+ # Virtual key codes which map to the value that the operating system gets
385
+ # when a key is pushed. These should be used almost always by default as
386
+ # users can always remap their keys if they have a different layout and
387
+ # wish to have a more comfortable layout for controls.
388
+ ALL_KEYCODES = enum :keycode, [
389
+ :keycode_unknown, 0,
390
+ :keycode_return, "\r".ord,
391
+ :keycode_escape, "\033".ord,
392
+ :keycode_backspace, "\b".ord,
393
+ :keycode_tab, "\t".ord,
394
+ :keycode_space, " ".ord,
395
+ :keycode_exclaim, "!".ord,
396
+ :keycode_quotedbl, "\".ord",
397
+ :keycode_hash, "#".ord,
398
+ :keycode_percent, "%".ord,
399
+ :keycode_dollar, "$".ord,
400
+ :keycode_ampersand, "&".ord,
401
+ :keycode_quote, "\"".ord,
402
+ :keycode_leftparen, "(".ord,
403
+ :keycode_rightparen, ")".ord,
404
+ :keycode_asterisk, "*".ord,
405
+ :keycode_plus, "+".ord,
406
+ :keycode_comma, ",".ord,
407
+ :keycode_minus, "-".ord,
408
+ :keycode_period, ".".ord,
409
+ :keycode_slash, "/".ord,
410
+ :keycode_0, "0".ord,
411
+ :keycode_1, "1".ord,
412
+ :keycode_2, "2".ord,
413
+ :keycode_3, "3".ord,
414
+ :keycode_4, "4".ord,
415
+ :keycode_5, "5".ord,
416
+ :keycode_6, "6".ord,
417
+ :keycode_7, "7".ord,
418
+ :keycode_8, "8".ord,
419
+ :keycode_9, "9".ord,
420
+ :keycode_colon, ":keycode_".ord,
421
+ :keycode_semicolon, ";".ord,
422
+ :keycode_less, "<".ord,
423
+ :keycode_equals, "=".ord,
424
+ :keycode_greater, ">".ord,
425
+ :keycode_question, "?".ord,
426
+ :keycode_at, "@".ord,
427
+
428
+ # skip uppercase letters
429
+
430
+ :keycode_leftbracket, "[".ord,
431
+ :keycode_backslash, "\\".ord,
432
+ :keycode_rightbracket, "]".ord,
433
+ :keycode_caret, "^".ord,
434
+ :keycode_underscore, "_".ord,
435
+ :keycode_backquote, "`".ord,
436
+ :keycode_a, "a".ord,
437
+ :keycode_b, "b".ord,
438
+ :keycode_c, "c".ord,
439
+ :keycode_d, "d".ord,
440
+ :keycode_e, "e".ord,
441
+ :keycode_f, "f".ord,
442
+ :keycode_g, "g".ord,
443
+ :keycode_h, "h".ord,
444
+ :keycode_i, "i".ord,
445
+ :keycode_j, "j".ord,
446
+ :keycode_k, "k".ord,
447
+ :keycode_l, "l".ord,
448
+ :keycode_m, "m".ord,
449
+ :keycode_n, "n".ord,
450
+ :keycode_o, "o".ord,
451
+ :keycode_p, "p".ord,
452
+ :keycode_q, "q".ord,
453
+ :keycode_r, "r".ord,
454
+ :keycode_s, "s".ord,
455
+ :keycode_t, "t".ord,
456
+ :keycode_u, "u".ord,
457
+ :keycode_v, "v".ord,
458
+ :keycode_w, "w".ord,
459
+ :keycode_x, "x".ord,
460
+ :keycode_y, "y".ord,
461
+ :keycode_z, "z".ord,
462
+
463
+ :keycode_capslock, scancode_to_keycode(:scancode_capslock),
464
+
465
+ :keycode_f1, scancode_to_keycode(:scancode_f1),
466
+ :keycode_f2, scancode_to_keycode(:scancode_f2),
467
+ :keycode_f3, scancode_to_keycode(:scancode_f3),
468
+ :keycode_f4, scancode_to_keycode(:scancode_f4),
469
+ :keycode_f5, scancode_to_keycode(:scancode_f5),
470
+ :keycode_f6, scancode_to_keycode(:scancode_f6),
471
+ :keycode_f7, scancode_to_keycode(:scancode_f7),
472
+ :keycode_f8, scancode_to_keycode(:scancode_f8),
473
+ :keycode_f9, scancode_to_keycode(:scancode_f9),
474
+ :keycode_f10, scancode_to_keycode(:scancode_f10),
475
+ :keycode_f11, scancode_to_keycode(:scancode_f11),
476
+ :keycode_f12, scancode_to_keycode(:scancode_f12),
477
+
478
+ :keycode_printscreen, scancode_to_keycode(:scancode_printscreen),
479
+ :keycode_scrolllock, scancode_to_keycode(:scancode_scrolllock),
480
+ :keycode_pause, scancode_to_keycode(:scancode_pause),
481
+ :keycode_insert, scancode_to_keycode(:scancode_insert),
482
+ :keycode_home, scancode_to_keycode(:scancode_home),
483
+ :keycode_pageup, scancode_to_keycode(:scancode_pageup),
484
+ :keycode_delete, 127, # SDL Uses A 177 Literal, But That Seems To Be Wrong
485
+ :keycode_end, scancode_to_keycode(:scancode_end),
486
+ :keycode_pagedown, scancode_to_keycode(:scancode_pagedown),
487
+ :keycode_right, scancode_to_keycode(:scancode_right),
488
+ :keycode_left, scancode_to_keycode(:scancode_left),
489
+ :keycode_down, scancode_to_keycode(:scancode_down),
490
+ :keycode_up, scancode_to_keycode(:scancode_up),
491
+
492
+ :keycode_numlockclear, scancode_to_keycode(:scancode_numlockclear),
493
+ :keycode_kp_divide, scancode_to_keycode(:scancode_kp_divide),
494
+ :keycode_kp_multiply, scancode_to_keycode(:scancode_kp_multiply),
495
+ :keycode_kp_minus, scancode_to_keycode(:scancode_kp_minus),
496
+ :keycode_kp_plus, scancode_to_keycode(:scancode_kp_plus),
497
+ :keycode_kp_enter, scancode_to_keycode(:scancode_kp_enter),
498
+ :keycode_kp_1, scancode_to_keycode(:scancode_kp_1),
499
+ :keycode_kp_2, scancode_to_keycode(:scancode_kp_2),
500
+ :keycode_kp_3, scancode_to_keycode(:scancode_kp_3),
501
+ :keycode_kp_4, scancode_to_keycode(:scancode_kp_4),
502
+ :keycode_kp_5, scancode_to_keycode(:scancode_kp_5),
503
+ :keycode_kp_6, scancode_to_keycode(:scancode_kp_6),
504
+ :keycode_kp_7, scancode_to_keycode(:scancode_kp_7),
505
+ :keycode_kp_8, scancode_to_keycode(:scancode_kp_8),
506
+ :keycode_kp_9, scancode_to_keycode(:scancode_kp_9),
507
+ :keycode_kp_0, scancode_to_keycode(:scancode_kp_0),
508
+ :keycode_kp_period, scancode_to_keycode(:scancode_kp_period),
509
+
510
+ :keycode_application, scancode_to_keycode(:scancode_application),
511
+ :keycode_power, scancode_to_keycode(:scancode_power),
512
+ :keycode_kp_equals, scancode_to_keycode(:scancode_kp_equals),
513
+ :keycode_f13, scancode_to_keycode(:scancode_f13),
514
+ :keycode_f14, scancode_to_keycode(:scancode_f14),
515
+ :keycode_f15, scancode_to_keycode(:scancode_f15),
516
+ :keycode_f16, scancode_to_keycode(:scancode_f16),
517
+ :keycode_f17, scancode_to_keycode(:scancode_f17),
518
+ :keycode_f18, scancode_to_keycode(:scancode_f18),
519
+ :keycode_f19, scancode_to_keycode(:scancode_f19),
520
+ :keycode_f20, scancode_to_keycode(:scancode_f20),
521
+ :keycode_f21, scancode_to_keycode(:scancode_f21),
522
+ :keycode_f22, scancode_to_keycode(:scancode_f22),
523
+ :keycode_f23, scancode_to_keycode(:scancode_f23),
524
+ :keycode_f24, scancode_to_keycode(:scancode_f24),
525
+ :keycode_execute, scancode_to_keycode(:scancode_execute),
526
+ :keycode_help, scancode_to_keycode(:scancode_help),
527
+ :keycode_menu, scancode_to_keycode(:scancode_menu),
528
+ :keycode_select, scancode_to_keycode(:scancode_select),
529
+ :keycode_stop, scancode_to_keycode(:scancode_stop),
530
+ :keycode_again, scancode_to_keycode(:scancode_again),
531
+ :keycode_undo, scancode_to_keycode(:scancode_undo),
532
+ :keycode_cut, scancode_to_keycode(:scancode_cut),
533
+ :keycode_copy, scancode_to_keycode(:scancode_copy),
534
+ :keycode_paste, scancode_to_keycode(:scancode_paste),
535
+ :keycode_find, scancode_to_keycode(:scancode_find),
536
+ :keycode_mute, scancode_to_keycode(:scancode_mute),
537
+ :keycode_volumeup, scancode_to_keycode(:scancode_volumeup),
538
+ :keycode_volumedown, scancode_to_keycode(:scancode_volumedown),
539
+ :keycode_kp_comma, scancode_to_keycode(:scancode_kp_comma),
540
+ :keycode_kp_equalsas400, scancode_to_keycode(:scancode_kp_equalsas400),
541
+
542
+ :keycode_alterase, scancode_to_keycode(:scancode_alterase),
543
+ :keycode_sysreq, scancode_to_keycode(:scancode_sysreq),
544
+ :keycode_cancel, scancode_to_keycode(:scancode_cancel),
545
+ :keycode_clear, scancode_to_keycode(:scancode_clear),
546
+ :keycode_prior, scancode_to_keycode(:scancode_prior),
547
+ :keycode_return2, scancode_to_keycode(:scancode_return2),
548
+ :keycode_separator, scancode_to_keycode(:scancode_separator),
549
+ :keycode_out, scancode_to_keycode(:scancode_out),
550
+ :keycode_oper, scancode_to_keycode(:scancode_oper),
551
+ :keycode_clearagain, scancode_to_keycode(:scancode_clearagain),
552
+ :keycode_crsel, scancode_to_keycode(:scancode_crsel),
553
+ :keycode_exsel, scancode_to_keycode(:scancode_exsel),
554
+
555
+ :keycode_kp_00, scancode_to_keycode(:scancode_kp_00),
556
+ :keycode_kp_000, scancode_to_keycode(:scancode_kp_000),
557
+ :keycode_thousandsseparator, scancode_to_keycode(:scancode_thousandsseparator),
558
+ :keycode_decimalseparator, scancode_to_keycode(:scancode_decimalseparator),
559
+ :keycode_currencyunit, scancode_to_keycode(:scancode_currencyunit),
560
+ :keycode_currencysubunit, scancode_to_keycode(:scancode_currencysubunit),
561
+ :keycode_kp_leftparen, scancode_to_keycode(:scancode_kp_leftparen),
562
+ :keycode_kp_rightparen, scancode_to_keycode(:scancode_kp_rightparen),
563
+ :keycode_kp_leftbrace, scancode_to_keycode(:scancode_kp_leftbrace),
564
+ :keycode_kp_rightbrace, scancode_to_keycode(:scancode_kp_rightbrace),
565
+ :keycode_kp_tab, scancode_to_keycode(:scancode_kp_tab),
566
+ :keycode_kp_backspace, scancode_to_keycode(:scancode_kp_backspace),
567
+ :keycode_kp_a, scancode_to_keycode(:scancode_kp_a),
568
+ :keycode_kp_b, scancode_to_keycode(:scancode_kp_b),
569
+ :keycode_kp_c, scancode_to_keycode(:scancode_kp_c),
570
+ :keycode_kp_d, scancode_to_keycode(:scancode_kp_d),
571
+ :keycode_kp_e, scancode_to_keycode(:scancode_kp_e),
572
+ :keycode_kp_f, scancode_to_keycode(:scancode_kp_f),
573
+ :keycode_kp_xor, scancode_to_keycode(:scancode_kp_xor),
574
+ :keycode_kp_power, scancode_to_keycode(:scancode_kp_power),
575
+ :keycode_kp_percent, scancode_to_keycode(:scancode_kp_percent),
576
+ :keycode_kp_less, scancode_to_keycode(:scancode_kp_less),
577
+ :keycode_kp_greater, scancode_to_keycode(:scancode_kp_greater),
578
+ :keycode_kp_ampersand, scancode_to_keycode(:scancode_kp_ampersand),
579
+ :keycode_kp_dblampersand, scancode_to_keycode(:scancode_kp_dblampersand),
580
+ :keycode_kp_verticalbar, scancode_to_keycode(:scancode_kp_verticalbar),
581
+ :keycode_kp_dblverticalbar, scancode_to_keycode(:scancode_kp_dblverticalbar),
582
+ :keycode_kp_colon, scancode_to_keycode(:scancode_kp_colon),
583
+ :keycode_kp_hash, scancode_to_keycode(:scancode_kp_hash),
584
+ :keycode_kp_space, scancode_to_keycode(:scancode_kp_space),
585
+ :keycode_kp_at, scancode_to_keycode(:scancode_kp_at),
586
+ :keycode_kp_exclam, scancode_to_keycode(:scancode_kp_exclam),
587
+ :keycode_kp_memstore, scancode_to_keycode(:scancode_kp_memstore),
588
+ :keycode_kp_memrecall, scancode_to_keycode(:scancode_kp_memrecall),
589
+ :keycode_kp_memclear, scancode_to_keycode(:scancode_kp_memclear),
590
+ :keycode_kp_memadd, scancode_to_keycode(:scancode_kp_memadd),
591
+ :keycode_kp_memsubtract, scancode_to_keycode(:scancode_kp_memsubtract),
592
+ :keycode_kp_memmultiply, scancode_to_keycode(:scancode_kp_memmultiply),
593
+ :keycode_kp_memdivide, scancode_to_keycode(:scancode_kp_memdivide),
594
+ :keycode_kp_plusminus, scancode_to_keycode(:scancode_kp_plusminus),
595
+ :keycode_kp_clear, scancode_to_keycode(:scancode_kp_clear),
596
+ :keycode_kp_clearentry, scancode_to_keycode(:scancode_kp_clearentry),
597
+ :keycode_kp_binary, scancode_to_keycode(:scancode_kp_binary),
598
+ :keycode_kp_octal, scancode_to_keycode(:scancode_kp_octal),
599
+ :keycode_kp_decimal, scancode_to_keycode(:scancode_kp_decimal),
600
+ :keycode_kp_hexadecimal, scancode_to_keycode(:scancode_kp_hexadecimal),
601
+
602
+ :keycode_lctrl, scancode_to_keycode(:scancode_lctrl),
603
+ :keycode_lshift, scancode_to_keycode(:scancode_lshift),
604
+ :keycode_lalt, scancode_to_keycode(:scancode_lalt),
605
+ :keycode_lgui, scancode_to_keycode(:scancode_lgui),
606
+ :keycode_rctrl, scancode_to_keycode(:scancode_rctrl),
607
+ :keycode_rshift, scancode_to_keycode(:scancode_rshift),
608
+ :keycode_ralt, scancode_to_keycode(:scancode_ralt),
609
+ :keycode_rgui, scancode_to_keycode(:scancode_rgui),
610
+
611
+ :keycode_mode, scancode_to_keycode(:scancode_mode),
612
+
613
+ :keycode_audionext, scancode_to_keycode(:scancode_audionext),
614
+ :keycode_audioprev, scancode_to_keycode(:scancode_audioprev),
615
+ :keycode_audiostop, scancode_to_keycode(:scancode_audiostop),
616
+ :keycode_audioplay, scancode_to_keycode(:scancode_audioplay),
617
+ :keycode_audiomute, scancode_to_keycode(:scancode_audiomute),
618
+ :keycode_mediaselect, scancode_to_keycode(:scancode_mediaselect),
619
+ :keycode_www, scancode_to_keycode(:scancode_www),
620
+ :keycode_mail, scancode_to_keycode(:scancode_mail),
621
+ :keycode_calculator, scancode_to_keycode(:scancode_calculator),
622
+ :keycode_computer, scancode_to_keycode(:scancode_computer),
623
+ :keycode_ac_search, scancode_to_keycode(:scancode_ac_search),
624
+ :keycode_ac_home, scancode_to_keycode(:scancode_ac_home),
625
+ :keycode_ac_back, scancode_to_keycode(:scancode_ac_back),
626
+ :keycode_ac_forward, scancode_to_keycode(:scancode_ac_forward),
627
+ :keycode_ac_stop, scancode_to_keycode(:scancode_ac_stop),
628
+ :keycode_ac_refresh, scancode_to_keycode(:scancode_ac_refresh),
629
+ :keycode_ac_bookmarks, scancode_to_keycode(:scancode_ac_bookmarks),
630
+
631
+ :keycode_brightnessdown, scancode_to_keycode(:scancode_brightnessdown),
632
+ :keycode_brightnessup, scancode_to_keycode(:scancode_brightnessup),
633
+ :keycode_displayswitch, scancode_to_keycode(:scancode_displayswitch),
634
+ :keycode_kbdillumtoggle, scancode_to_keycode(:scancode_kbdillumtoggle),
635
+ :keycode_kbdillumdown, scancode_to_keycode(:scancode_kbdillumdown),
636
+ :keycode_kbdillumup, scancode_to_keycode(:scancode_kbdillumup),
637
+ :keycode_eject, scancode_to_keycode(:scancode_eject),
638
+ :keycode_sleep, scancode_to_keycode(:scancode_sleep)
639
+ ]
640
+
641
+ end