1 /* 2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 3 * Distributed under the MIT License 4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 5 */ 6 7 #ifndef MYGUI_KEY_CODE_H_ 8 #define MYGUI_KEY_CODE_H_ 9 10 #include "MyGUI_Prerequest.h" 11 12 namespace MyGUI 13 { 14 15 struct MYGUI_EXPORT KeyCode 16 { 17 enum Enum 18 { 19 None = 0x00, 20 Escape = 0x01, 21 One = 0x02, 22 Two = 0x03, 23 Three = 0x04, 24 Four = 0x05, 25 Five = 0x06, 26 Six = 0x07, 27 Seven = 0x08, 28 Eight = 0x09, 29 Nine = 0x0A, 30 Zero = 0x0B, 31 Minus = 0x0C, /* - on main keyboard */ 32 Equals = 0x0D, 33 Backspace = 0x0E, /* Backspace */ 34 Tab = 0x0F, 35 Q = 0x10, 36 W = 0x11, 37 E = 0x12, 38 R = 0x13, 39 T = 0x14, 40 Y = 0x15, 41 U = 0x16, 42 I = 0x17, 43 O = 0x18, 44 P = 0x19, 45 LeftBracket = 0x1A, 46 RightBracket = 0x1B, 47 Return = 0x1C, /* Enter on main keyboard */ 48 LeftControl = 0x1D, 49 A = 0x1E, 50 S = 0x1F, 51 D = 0x20, 52 F = 0x21, 53 G = 0x22, 54 H = 0x23, 55 J = 0x24, 56 K = 0x25, 57 L = 0x26, 58 Semicolon = 0x27, 59 Apostrophe = 0x28, 60 Grave = 0x29, /* Accent grave ( ~ ) */ 61 LeftShift = 0x2A, 62 Backslash = 0x2B, 63 Z = 0x2C, 64 X = 0x2D, 65 C = 0x2E, 66 V = 0x2F, 67 B = 0x30, 68 N = 0x31, 69 M = 0x32, 70 Comma = 0x33, 71 Period = 0x34, /* . on main keyboard */ 72 Slash = 0x35, /* '/' on main keyboard */ 73 RightShift = 0x36, 74 Multiply = 0x37, /* * on numeric keypad */ 75 LeftAlt = 0x38, /* Left Alt */ 76 Space = 0x39, 77 Capital = 0x3A, 78 F1 = 0x3B, 79 F2 = 0x3C, 80 F3 = 0x3D, 81 F4 = 0x3E, 82 F5 = 0x3F, 83 F6 = 0x40, 84 F7 = 0x41, 85 F8 = 0x42, 86 F9 = 0x43, 87 F10 = 0x44, 88 NumLock = 0x45, 89 ScrollLock = 0x46, /* Scroll Lock */ 90 Numpad7 = 0x47, 91 Numpad8 = 0x48, 92 Numpad9 = 0x49, 93 Subtract = 0x4A, /* - on numeric keypad */ 94 Numpad4 = 0x4B, 95 Numpad5 = 0x4C, 96 Numpad6 = 0x4D, 97 Add = 0x4E, /* + on numeric keypad */ 98 Numpad1 = 0x4F, 99 Numpad2 = 0x50, 100 Numpad3 = 0x51, 101 Numpad0 = 0x52, 102 Decimal = 0x53, /* . on numeric keypad */ 103 OEM_102 = 0x56, /* < > | on UK/Germany keyboards */ 104 F11 = 0x57, 105 F12 = 0x58, 106 F13 = 0x64, /* (NEC PC98) */ 107 F14 = 0x65, /* (NEC PC98) */ 108 F15 = 0x66, /* (NEC PC98) */ 109 Kana = 0x70, /* (Japanese keyboard) */ 110 ABNT_C1 = 0x73, /* / ? on Portugese (Brazilian) keyboards */ 111 Convert = 0x79, /* (Japanese keyboard) */ 112 NoConvert = 0x7B, /* (Japanese keyboard) */ 113 Yen = 0x7D, /* (Japanese keyboard) */ 114 ABNT_C2 = 0x7E, /* Numpad . on Portugese (Brazilian) keyboards */ 115 NumpadEquals = 0x8D, /* = on numeric keypad (NEC PC98) */ 116 PrevTrack = 0x90, /* Previous Track (KC_CIRCUMFLEX on Japanese keyboard) */ 117 At = 0x91, /* (NEC PC98) */ 118 Colon = 0x92, /* (NEC PC98) */ 119 Underline = 0x93, /* (NEC PC98) */ 120 Kanji = 0x94, /* (Japanese keyboard) */ 121 Stop = 0x95, /* (NEC PC98) */ 122 AX = 0x96, /* (Japan AX) */ 123 Unlabeled = 0x97, /* (J3100) */ 124 NextTrack = 0x99, /* Next Track */ 125 NumpadEnter = 0x9C, /* Enter on numeric keypad */ 126 RightControl = 0x9D, 127 Mute = 0xA0, 128 Calculator = 0xA1, 129 PlayPause = 0xA2, /* Play / Pause */ 130 MediaStop = 0xA4, /* Media Stop */ 131 VolumeDown = 0xAE, /* Volume - */ 132 VolumeUp = 0xB0, /* Volume + */ 133 WebHome = 0xB2, /* Web home */ 134 NumpadComma = 0xB3, /* , on numeric keypad (NEC PC98) */ 135 Divide = 0xB5, /* / on numeric keypad */ 136 SysRq = 0xB7, 137 RightAlt = 0xB8, /* Right Alt */ 138 Pause = 0xC5, 139 Home = 0xC7, /* Home on arrow keypad */ 140 ArrowUp = 0xC8, /* UpArrow on arrow keypad */ 141 PageUp = 0xC9, /* PgUp on arrow keypad */ 142 ArrowLeft = 0xCB, /* LeftArrow on arrow keypad */ 143 ArrowRight = 0xCD, /* RightArrow on arrow keypad */ 144 End = 0xCF, /* End on arrow keypad */ 145 ArrowDown = 0xD0, /* DownArrow on arrow keypad */ 146 PageDown = 0xD1, /* PgDn on arrow keypad */ 147 Insert = 0xD2, /* Insert on arrow keypad */ 148 Delete = 0xD3, /* Delete on arrow keypad */ 149 LeftWindows = 0xDB, /* Left Windows key */ 150 RightWindow = 0xDC, /* Right Windows key */ 151 RightWindows = 0xDC, /* Right Windows key - Correct spelling :) */ 152 AppMenu = 0xDD, /* AppMenu key */ 153 Power = 0xDE, /* System Power */ 154 Sleep = 0xDF, /* System Sleep */ 155 Wake = 0xE3, /* System Wake */ 156 WebSearch = 0xE5, 157 WebFavorites = 0xE6, 158 WebRefresh = 0xE7, 159 WebStop = 0xE8, 160 WebForward = 0xE9, 161 WebBack = 0xEA, 162 MyComputer = 0xEB, 163 Mail = 0xEC, 164 MediaSelect = 0xED 165 }; 166 167 KeyCode(Enum _value = None) : mValueKeyCode168 mValue(_value) 169 { 170 } 171 172 friend bool operator < (KeyCode const& a, KeyCode const& b) 173 { 174 return (a.mValue < b.mValue); 175 } 176 177 friend bool operator >= (KeyCode const& a, KeyCode const& b) 178 { 179 return !(a < b); 180 } 181 182 friend bool operator > (KeyCode const& a, KeyCode const& b) 183 { 184 return (b < a); 185 } 186 187 friend bool operator <= (KeyCode const& a, KeyCode const& b) 188 { 189 return !(a > b); 190 } 191 192 friend bool operator == (KeyCode const& a, KeyCode const& b) 193 { 194 return !(a < b) && !(a > b); 195 } 196 197 friend bool operator != (KeyCode const& a, KeyCode const& b) 198 { 199 return !(a == b); 200 } 201 getValueKeyCode202 int getValue() const 203 { 204 return mValue; 205 } 206 207 private: 208 Enum mValue; 209 }; 210 211 } // namespace MyGUI 212 213 #endif // MYGUI_KEY_CODE_H_ 214