MezzanineEngine 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
inputenumerations.h
1 // © Copyright 2010 - 2014 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 
41 #ifndef _inputenumerations_h
42 #define _inputenumerations_h
43 
44 /// @todo This exists because somewhere in our chain of includes we have "winnt.h" (on windows) defining "KEY_EXECUTE", which causes the compile to fail at the line
45 /// declaring "KEY_EXECUTE". I am reasonably certain this only exists when <Ogre.h> is included above this file in the include chain.
46 #ifdef KEY_EXECUTE
47 #undef KEY_EXECUTE
48 #endif
49 
50 namespace Mezzanine
51 {
52  namespace Input
53  {
54  /// @enum InputCode
55  /// @brief The InputCode enum defines all the posible types of inputs.
56  /// @details It has one entry for each key on a most keyboards. Then it
57  /// has an entry for most mouse and joystick input methods.
58  /// @warning Once upon a time, this partially matched with ascii. It doesn't anymore.
59  enum InputCode
60  {
61  KEY_FIRST = 0, /**< KEY_FIRST Same Value as KEY_UNKOWN, is Guaranteed to be the lowest value of any key. */
62  KEY_UNKNOWN = 0, /**< KEY_UNKNOWN This is used for unsupported keys or keys that are not in Unicode. */
63 
64  KEY_A = 4,
65  KEY_B = 5,
66  KEY_C = 6,
67  KEY_D = 7,
68  KEY_E = 8,
69  KEY_F = 9,
70  KEY_G = 10,
71  KEY_H = 11,
72  KEY_I = 12,
73  KEY_J = 13,
74  KEY_K = 14,
75  KEY_L = 15,
76  KEY_M = 16,
77  KEY_N = 17,
78  KEY_O = 18,
79  KEY_P = 19,
80  KEY_Q = 20,
81  KEY_R = 21,
82  KEY_S = 22,
83  KEY_T = 23,
84  KEY_U = 24,
85  KEY_V = 25,
86  KEY_W = 26,
87  KEY_X = 27,
88  KEY_Y = 28,
89  KEY_Z = 29,
90 
91  KEY_1 = 30,
92  KEY_2 = 31,
93  KEY_3 = 32,
94  KEY_4 = 33,
95  KEY_5 = 34,
96  KEY_6 = 35,
97  KEY_7 = 36,
98  KEY_8 = 37,
99  KEY_9 = 38,
100  KEY_0 = 39,
101 
102  KEY_RETURN = 40,
103  KEY_ESCAPE = 41,
104  KEY_BACKSPACE = 42,
105  KEY_TAB = 43,
106  KEY_SPACE = 44,
107 
108  KEY_MINUS = 45,
109  KEY_EQUALS = 46,
110  KEY_LEFTBRACKET = 47,
111  KEY_RIGHTBRACKET = 48,
112  KEY_BACKSLASH = 49, /**< Located at the lower left of the return
113  * key on ISO keyboards and at the right end
114  * of the QWERTY row on ANSI keyboards.
115  * Produces REVERSE SOLIDUS (backslash) and
116  * VERTICAL LINE in a US layout, REVERSE
117  * SOLIDUS and VERTICAL LINE in a UK Mac
118  * layout, NUMBER SIGN and TILDE in a UK
119  * Windows layout, DOLLAR SIGN and POUND SIGN
120  * in a Swiss German layout, NUMBER SIGN and
121  * APOSTROPHE in a German layout, GRAVE
122  * ACCENT and POUND SIGN in a French Mac
123  * layout, and ASTERISK and MICRO SIGN in a
124  * French Windows layout.
125  */
126  KEY_NONUSHASH = 50, /**< ISO USB keyboards actually use this code
127  * instead of 49 for the same key, but all
128  * OSes I've seen treat the two codes
129  * identically. So, as an implementor, unless
130  * your keyboard generates both of those
131  * codes and your OS treats them differently,
132  * you should generate KEY_BACKSLASH
133  * instead of this code. As a user, you
134  * should not rely on this code because SDL
135  * will never generate it with most (all?)
136  * keyboards.
137  */
138  KEY_SEMICOLON = 51,
139  KEY_APOSTROPHE = 52,
140  KEY_GRAVE = 53, /**< Located in the top left corner (on both ANSI
141  * and ISO keyboards). Produces GRAVE ACCENT and
142  * TILDE in a US Windows layout and in US and UK
143  * Mac layouts on ANSI keyboards, GRAVE ACCENT
144  * and NOT SIGN in a UK Windows layout, SECTION
145  * SIGN and PLUS-MINUS SIGN in US and UK Mac
146  * layouts on ISO keyboards, SECTION SIGN and
147  * DEGREE SIGN in a Swiss German layout (Mac:
148  * only on ISO keyboards), CIRCUMFLEX ACCENT and
149  * DEGREE SIGN in a German layout (Mac: only on
150  * ISO keyboards), SUPERSCRIPT TWO and TILDE in a
151  * French Windows layout, COMMERCIAL AT and
152  * NUMBER SIGN in a French Mac layout on ISO
153  * keyboards, and LESS-THAN SIGN and GREATER-THAN
154  * SIGN in a Swiss German, German, or French Mac
155  * layout on ANSI keyboards.
156  */
157  KEY_COMMA = 54,
158  KEY_PERIOD = 55,
159  KEY_SLASH = 56,
160 
161  KEY_CAPSLOCK = 57,
162 
163  KEY_F1 = 58,
164  KEY_F2 = 59,
165  KEY_F3 = 60,
166  KEY_F4 = 61,
167  KEY_F5 = 62,
168  KEY_F6 = 63,
169  KEY_F7 = 64,
170  KEY_F8 = 65,
171  KEY_F9 = 66,
172  KEY_F10 = 67,
173  KEY_F11 = 68,
174  KEY_F12 = 69,
175 
176  KEY_PRINTSCREEN = 70,
177  KEY_SCROLLLOCK = 71,
178  KEY_PAUSE = 72,
179  KEY_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but
180  does send code 73, not 117) */
181  KEY_HOME = 74,
182  KEY_PAGEUP = 75,
183  KEY_DELETE = 76,
184  KEY_END = 77,
185  KEY_PAGEDOWN = 78,
186  KEY_RIGHT = 79,
187  KEY_LEFT = 80,
188  KEY_DOWN = 81,
189  KEY_UP = 82,
190 
191  KEY_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards
192  */
193  KEY_KP_DIVIDE = 84,
194  KEY_KP_MULTIPLY = 85,
195  KEY_KP_MINUS = 86,
196  KEY_KP_PLUS = 87,
197  KEY_KP_ENTER = 88,
198  KEY_KP_1 = 89,
199  KEY_KP_2 = 90,
200  KEY_KP_3 = 91,
201  KEY_KP_4 = 92,
202  KEY_KP_5 = 93,
203  KEY_KP_6 = 94,
204  KEY_KP_7 = 95,
205  KEY_KP_8 = 96,
206  KEY_KP_9 = 97,
207  KEY_KP_0 = 98,
208  KEY_KP_PERIOD = 99,
209 
210  KEY_NONUSBACKSLASH = 100, /**< This is the additional key that ISO
211  * keyboards have over ANSI ones,
212  * located between left shift and Y.
213  * Produces GRAVE ACCENT and TILDE in a
214  * US or UK Mac layout, REVERSE SOLIDUS
215  * (backslash) and VERTICAL LINE in a
216  * US or UK Windows layout, and
217  * LESS-THAN SIGN and GREATER-THAN SIGN
218  * in a Swiss German, German, or French
219  * layout. */
220  KEY_APPLICATION = 101, /**< windows contextual menu, compose */
221  KEY_POWER = 102, /**< The USB document says this is a status flag,
222  * not a physical key - but some Mac keyboards
223  * do have a power key. */
224  KEY_KP_EQUALS = 103,
225  KEY_F13 = 104,
226  KEY_F14 = 105,
227  KEY_F15 = 106,
228  KEY_F16 = 107,
229  KEY_F17 = 108,
230  KEY_F18 = 109,
231  KEY_F19 = 110,
232  KEY_F20 = 111,
233  KEY_F21 = 112,
234  KEY_F22 = 113,
235  KEY_F23 = 114,
236  KEY_F24 = 115,
237  KEY_EXECUTE = 116,
238  KEY_HELP = 117,
239  KEY_MENU = 118,
240  KEY_SELECT = 119,
241  KEY_STOP = 120,
242  KEY_AGAIN = 121, /**< redo */
243  KEY_UNDO = 122,
244  KEY_CUT = 123,
245  KEY_COPY = 124,
246  KEY_PASTE = 125,
247  KEY_FIND = 126,
248  KEY_MUTE = 127,
249  KEY_VOLUMEUP = 128,
250  KEY_VOLUMEDOWN = 129,
251  /* not sure whether there's a reason to enable these */
252  /* KEY_LOCKINGCAPSLOCK = 130, */
253  /* KEY_LOCKINGNUMLOCK = 131, */
254  /* KEY_LOCKINGSCROLLLOCK = 132, */
255  KEY_KP_COMMA = 133,
256  KEY_KP_EQUALSAS400 = 134,
257 
258  KEY_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see
259  footnotes in USB doc */
260  KEY_INTERNATIONAL2 = 136,
261  KEY_INTERNATIONAL3 = 137, /**< Yen */
262  KEY_INTERNATIONAL4 = 138,
263  KEY_INTERNATIONAL5 = 139,
264  KEY_INTERNATIONAL6 = 140,
265  KEY_INTERNATIONAL7 = 141,
266  KEY_INTERNATIONAL8 = 142,
267  KEY_INTERNATIONAL9 = 143,
268  KEY_LANG1 = 144, /**< Hangul/English toggle */
269  KEY_LANG2 = 145, /**< Hanja conversion */
270  KEY_LANG3 = 146, /**< Katakana */
271  KEY_LANG4 = 147, /**< Hiragana */
272  KEY_LANG5 = 148, /**< Zenkaku/Hankaku */
273  KEY_LANG6 = 149, /**< reserved */
274  KEY_LANG7 = 150, /**< reserved */
275  KEY_LANG8 = 151, /**< reserved */
276  KEY_LANG9 = 152, /**< reserved */
277 
278  KEY_ALTERASE = 153, /**< Erase-Eaze */
279  KEY_SYSREQ = 154,
280  KEY_CANCEL = 155,
281  KEY_CLEAR = 156,
282  KEY_PRIOR = 157,
283  KEY_RETURN2 = 158,
284  KEY_SEPARATOR = 159,
285  KEY_OUT = 160,
286  KEY_OPER = 161,
287  KEY_CLEARAGAIN = 162,
288  KEY_CRSEL = 163,
289  KEY_EXSEL = 164,
290 
291  KEY_KP_00 = 176,
292  KEY_KP_000 = 177,
293  KEY_THOUSANDSSEPARATOR = 178,
294  KEY_DECIMALSEPARATOR = 179,
295  KEY_CURRENCYUNIT = 180,
296  KEY_CURRENCYSUBUNIT = 181,
297  KEY_KP_LEFTPAREN = 182,
298  KEY_KP_RIGHTPAREN = 183,
299  KEY_KP_LEFTBRACE = 184,
300  KEY_KP_RIGHTBRACE = 185,
301  KEY_KP_TAB = 186,
302  KEY_KP_BACKSPACE = 187,
303  KEY_KP_A = 188,
304  KEY_KP_B = 189,
305  KEY_KP_C = 190,
306  KEY_KP_D = 191,
307  KEY_KP_E = 192,
308  KEY_KP_F = 193,
309  KEY_KP_XOR = 194,
310  KEY_KP_POWER = 195,
311  KEY_KP_PERCENT = 196,
312  KEY_KP_LESS = 197,
313  KEY_KP_GREATER = 198,
314  KEY_KP_AMPERSAND = 199,
315  KEY_KP_DBLAMPERSAND = 200,
316  KEY_KP_VERTICALBAR = 201,
317  KEY_KP_DBLVERTICALBAR = 202,
318  KEY_KP_COLON = 203,
319  KEY_KP_HASH = 204,
320  KEY_KP_SPACE = 205,
321  KEY_KP_AT = 206,
322  KEY_KP_EXCLAM = 207,
323  KEY_KP_MEMSTORE = 208,
324  KEY_KP_MEMRECALL = 209,
325  KEY_KP_MEMCLEAR = 210,
326  KEY_KP_MEMADD = 211,
327  KEY_KP_MEMSUBTRACT = 212,
328  KEY_KP_MEMMULTIPLY = 213,
329  KEY_KP_MEMDIVIDE = 214,
330  KEY_KP_PLUSMINUS = 215,
331  KEY_KP_CLEAR = 216,
332  KEY_KP_CLEARENTRY = 217,
333  KEY_KP_BINARY = 218,
334  KEY_KP_OCTAL = 219,
335  KEY_KP_DECIMAL = 220,
336  KEY_KP_HEXADECIMAL = 221,
337 
338  KEY_LCTRL = 224,
339  KEY_LSHIFT = 225,
340  KEY_LALT = 226, /**< alt, option */
341  KEY_LSUPER = 227, /**< windows, command (apple), meta */
342  KEY_RCTRL = 228,
343  KEY_RSHIFT = 229,
344  KEY_RALT = 230, /**< alt gr, option */
345  KEY_RSUPER = 231, /**< windows, command (apple), meta */
346 
347  KEY_MODE = 257, /**< I'm not sure if this is really not covered
348  * by any of the above, but since there's a
349  * special KMOD_MODE for it I'm adding it here
350  */
351 
352  /*@}*//*Usage page 0x07*/
353 
354  /**
355  * \name Usage page 0x0C
356  *
357  * These values are mapped from usage page 0x0C (USB consumer page).
358  */
359  /*@{*/
360 
361  KEY_AUDIONEXT = 258,
362  KEY_AUDIOPREV = 259,
363  KEY_AUDIOSTOP = 260,
364  KEY_AUDIOPLAY = 261,
365  KEY_AUDIOMUTE = 262,
366  KEY_MEDIASELECT = 263,
367  KEY_WWW = 264,
368  KEY_MAIL = 265,
369  KEY_CALCULATOR = 266,
370  KEY_COMPUTER = 267,
371  KEY_AC_SEARCH = 268,
372  KEY_AC_HOME = 269,
373  KEY_AC_BACK = 270,
374  KEY_AC_FORWARD = 271,
375  KEY_AC_STOP = 272,
376  KEY_AC_REFRESH = 273,
377  KEY_AC_BOOKMARKS = 274,
378 
379  /*@}*//*Usage page 0x0C*/
380 
381  /**
382  * \name Walther keys
383  *
384  * These are values that Christian Walther added (for mac keyboard?).
385  */
386  /*@{*/
387 
388  KEY_BRIGHTNESSDOWN = 275,
389  KEY_BRIGHTNESSUP = 276,
390  KEY_DISPLAYSWITCH = 277, /**< display mirroring/dual display
391  switch, video mode switch */
392  KEY_KBDILLUMTOGGLE = 278,
393  KEY_KBDILLUMDOWN = 279,
394  KEY_KBDILLUMUP = 280,
395  KEY_EJECT = 281,
396  KEY_SLEEP = 282,
397  // ©opying from SDL ends here
398 
399  KEY_LAST = 379, ///< The last Keyboard InputCode, all Keys values will be less than this, and all Events will be larger than that
400 
401 
402  MOUSE_FIRST = 380, ///< The First Mouse event, all Mouse Event values will be more than this
403  MOUSEBUTTON = 380, ///< This is the generic Some mouse button code. You can add the number of the mouse button to this and you will get the approriate code. Example (MOUSEBUTTON_1 == MOUSEBUTTON + 1)
404  MOUSEBUTTON_FIRST = 381, ///< This is the lowest mouse button value, all mice values will be larger of equal to this
405  MOUSEBUTTON_1 = 381, ///< Most commonly left click.
406  MOUSEBUTTON_2 = 382, ///< Most Commonly Right click
407  MOUSEBUTTON_3 = 383, ///< Most commonly middle click
408  MOUSEBUTTON_4 = 384,
409  MOUSEBUTTON_5 = 385,
410  MOUSEBUTTON_6 = 386,
411  MOUSEBUTTON_7 = 387,
412  MOUSEBUTTON_8 = 388,
413  MOUSEBUTTON_9 = 389,
414  MOUSEBUTTON_10 = 390,
415  MOUSEBUTTON_11 = 391,
416  MOUSEBUTTON_12 = 392,
417  MOUSEBUTTON_13 = 393,
418  MOUSEBUTTON_14 = 394,
419  MOUSEBUTTON_15 = 395,
420  MOUSEBUTTON_16 = 396,
421  MOUSEBUTTON_17 = 397,
422  MOUSEBUTTON_18 = 398,
423  MOUSEBUTTON_19 = 399,
424  MOUSEBUTTON_20 = 400,
425  MOUSEBUTTON_LAST = 400, ///< The Last mouse button event, all mouse button event will be lower or equal to this.
426 
427  INPUTEVENT_FIRST = 401, ///< The First non-button event, all Mouse and keyboard button values will be Less than this
428  MOUSEMOTION_FIRST = 402,
429  MOUSEABSOLUTEVERTICAL = 402,
430  MOUSEABSOLUTEHORIZONTAL = 403,
431  MOUSEVERTICAL = 404,
432  MOUSEHORIZONTAL = 405,
433  MOUSEWHEELVERTICAL = 406,
434  MOUSEWHEELHORIZONTAL = 407,
435  MOUSEMOTION_LAST = 410,
436  MOUSE_LAST = 410, ///< The last MouseEvent Code, all Mouse events will be less than this
437 
438  MOTION_FIRST = 420, ///< The first Motion event
439  MOTION_LAST = 429, ///< The last Motion event
440 
441  MULTITOUCH_FIRST = 440, ///< The first Multi Touch event
442  MULTITOUCH_ACTION = 441,
443  MULTITOUCH_GESTURE = 442,
444  MULTITOUCH_PINCH = 443,
445  MULTITOUCH_STRETCH = 444,
446  MULTITOUCH_LAST = 449, ///< The last Multi Touch event
447 
448  CONTROLLER_FIRST = 450, ///< The First JoyStick event, all Controller Event values will be more than this
449  CONTROLLERBUTTON = 450, ///< This is the generic Some stickbutton button code. You can add the number of the jpystick button to this and you will get the approriate code. Example (JOYSTICKBUTTON_1 == JOYSTICKBUTTON + 1)
450  CONTROLLERBUTTON_FIRST = 451, ///< This is the lowest Controller button value, all joystickbutton values will be larger of equal to this.
451  CONTROLLERBUTTON_1 = 451,
452  CONTROLLERBUTTON_2 = 452,
453  CONTROLLERBUTTON_3 = 453,
454  CONTROLLERBUTTON_4 = 454,
455  CONTROLLERBUTTON_5 = 455,
456  CONTROLLERBUTTON_6 = 456,
457  CONTROLLERBUTTON_7 = 457,
458  CONTROLLERBUTTON_8 = 458,
459  CONTROLLERBUTTON_9 = 459,
460  CONTROLLERBUTTON_10 = 460,
461  CONTROLLERBUTTON_11 = 461,
462  CONTROLLERBUTTON_12 = 462,
463  CONTROLLERBUTTON_13 = 463,
464  CONTROLLERBUTTON_14 = 464,
465  CONTROLLERBUTTON_15 = 465,
466  CONTROLLERBUTTON_16 = 466,
467  CONTROLLERBUTTON_17 = 467,
468  CONTROLLERBUTTON_18 = 468,
469  CONTROLLERBUTTON_19 = 469,
470  CONTROLLERBUTTON_20 = 470,
471  CONTROLLERBUTTON_LAST = 470, ///< The Last Controller button event, all Controller button event will be lower or equal to this.
472 
473  CONTROLLERAXIS = 480, ///< This is the generic Controller axis code. You can add the number of the Controller axis to this and you will get the approriate code. Example (JOYSTICKAXIS_1 == JOYSTICKAXIS + 1)
474  CONTROLLERAXIS_FIRST = 481, ///< This is the lowest Controller axis value, all jpystick values will be larger of equal to this
475  CONTROLLERAXIS_1 = 481,
476  CONTROLLERAXIS_2 = 482,
477  CONTROLLERAXIS_3 = 483,
478  CONTROLLERAXIS_4 = 484,
479  CONTROLLERAXIS_5 = 485,
480  CONTROLLERAXIS_6 = 486,
481  CONTROLLERAXIS_7 = 487,
482  CONTROLLERAXIS_8 = 488,
483  CONTROLLERAXIS_9 = 489,
484  CONTROLLERAXIS_10 = 490,
485  CONTROLLERAXIS_11 = 491,
486  CONTROLLERAXIS_12 = 492,
487  CONTROLLERAXIS_13 = 493,
488  CONTROLLERAXIS_14 = 494,
489  CONTROLLERAXIS_15 = 495,
490  CONTROLLERAXIS_16 = 496,
491  CONTROLLERAXIS_17 = 497,
492  CONTROLLERAXIS_18 = 498,
493  CONTROLLERAXIS_19 = 499,
494  CONTROLLERAXIS_20 = 500,
495  CONTROLLERAXIS_LAST = 500, ///< The Last Controller axis event, all joystick axis event will be lower or equal to this.
496 
497  CONTROLLERBALL = 501,
498  CONTROLLERBALL_FIRST = 502,
499  CONTROLLERBALL_1_VERTICAL = 502,
500  CONTROLLERBALL_1_HORIZONTAL = 503,
501  CONTROLLERBALL_2_VERTICAL = 504,
502  CONTROLLERBALL_2_HORIZONTAL = 505,
503  CONTROLLERBALL_LAST = 505,
504 
505  CONTROLLERHAT = 506,
506  CONTROLLERHAT_FIRST = 507,
507  CONTROLLERHAT_1 = 507,
508  CONTROLLERHAT_2 = 508,
509  CONTROLLERHAT_3 = 509,
510  CONTROLLERHAT_4 = 510,
511  CONTROLLERHAT_5 = 511,
512  CONTROLLERHAT_LAST = 511,
513 
514  CONTROLLER_LAST = 512, ///< The last Controller Input Code, all Controller events will be less than this.
515 
516  // Compound Inputs
517  COMPOUNDINPUT_FIRST = 768,
518  COMPOUNDINPUT_MOUSEMULTICLICKFIRST = 769,
519  COMPOUNDINPUT_MOUSELEFTMULTICLICK = 769,
520  COMPOUNDINPUT_MOUSERIGHTMULTICLICK = 770,
521  COMPOUNDINPUT_MOUSEMULTICLICKLAST = 790,
522  COMPOUNDINPUT_CUSTOMSEQUENCE = 799,
523  COMPOUNDINPUT_LAST = 800,
524 
525  INPUTEVENT_LAST = 1024 ///< The last Input Code, all event codes will be less than this.
526  };//InputCode
527 
528  /// @enum InputDevice
529  /// @brief An enum listing containing the different kind of input devices, useful for some query functions.
531  {
532  DEVICE_UNKNOWN = 0,
533  DEVICE_KEYBOARD = 1,
534  DEVICE_MOUSE = 2,
535  DEVICE_MULTITOUCH = 3,
536  DEVICE_CONTROLLER = 4
537  };//InputDevice
538 
539  /// @enum ButtonState
540  /// @brief An Optional listing of value that can be used in a metacode to represent the information of a button press
541  /// @details This is optional set of values that can make working with buttons easier. The values the engine pass
542  /// via the the event manager will all use these whereever appropriate.
544  {
545  BUTTON_LIFTING = 1, /**< Used when the key stops being pressed. */
546  BUTTON_UP = 2, /**< The default state of a key. */
547  BUTTON_PRESSING = 4, /**< This is used at the exact point in time that a key goes from unpressed to pressed. */
548  BUTTON_DOWN = 8 /**< This is used the entire time a key is down. */
549  };//ButtonState
550 
551  /// @enum DirectionalMotionState
552  /// @brief An Optional listing of values that can be used in a metacode Indicate spin, digital or binary travel in a directionl
553  /// @details This is optional set of values that can make working with the MouseWheel and other items that can be moved along 1 axis in two dirctions easier. The values the engine pass
554  /// via the the event manager will all use these whereever appropriate.
556  {
557  DIRECTIONALMOTION_UPLEFT = 1, /**< Optionally Used when the device is spun/moved up or to the left as a MetaValue */
558  DIRECTIONALMOTION_UNCHANGED = 0, /**< This really isn't used in normal situations, but if a mousewheel or joyhat event is ever needed when the device is unmoved */
559  DIRECTIONALMOTION_DOWNRIGHT = -1 /**< Optionally Used when the MouseWheel/Joyhat is spun Down/Right as a Meta Code */
560  };//DirectionalMotionState
561 
562  /// @enum HatState
563  /// @brief An optional listing of the possible states a hat on a controller can take.
564  /// @details This is optional set of values that can make working with controller hats easier. The values the engine pass
565  /// via the the event manager will all use these whereever appropriate.
566  enum HatState
567  {
568  CONTROLLERHAT_CENTERED = 0,
569  CONTROLLERHAT_UP = 1,
570  CONTROLLERHAT_RIGHT = 2,
571  CONTROLLERHAT_DOWN = 4,
572  CONTROLLERHAT_LEFT = 8,
573  CONTROLLERHAT_RIGHTUP = ( CONTROLLERHAT_RIGHT | CONTROLLERHAT_UP ),
574  CONTROLLERHAT_RIGHTDOWN = ( CONTROLLERHAT_RIGHT | CONTROLLERHAT_DOWN ),
575  CONTROLLERHAT_LEFTUP = ( CONTROLLERHAT_LEFT | CONTROLLERHAT_UP ),
576  CONTROLLERHAT_LEFTDOWN = ( CONTROLLERHAT_LEFT | CONTROLLERHAT_DOWN )
577  };//JoystickHatState
578  }//Input
579 }//Mezzanine
580 
581 #endif