OIS  1.5
Object-oriented Input System
OISKeyboard.h
Go to the documentation of this file.
1 /*
2 The zlib/libpng License
3 
4 Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
5 
6 This software is provided 'as-is', without any express or implied warranty. In no event will
7 the authors be held liable for any damages arising from the use of this software.
8 
9 Permission is granted to anyone to use this software for any purpose, including commercial
10 applications, and to alter it and redistribute it freely, subject to the following
11 restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not claim that
14  you wrote the original software. If you use this software in a product,
15  an acknowledgment in the product documentation would be appreciated but is
16  not required.
17 
18  2. Altered source versions must be plainly marked as such, and must not be
19  misrepresented as being the original software.
20 
21  3. This notice may not be removed or altered from any source distribution.
22 */
23 #ifndef OIS_Keyboard_H
24 #define OIS_Keyboard_H
25 #include "OISObject.h"
26 #include "OISEvents.h"
27 
28 namespace OIS
29 {
31  enum KeyCode {
32  KC_UNASSIGNED = 0x00,
33  KC_ESCAPE = 0x01,
34  KC_1 = 0x02,
35  KC_2 = 0x03,
36  KC_3 = 0x04,
37  KC_4 = 0x05,
38  KC_5 = 0x06,
39  KC_6 = 0x07,
40  KC_7 = 0x08,
41  KC_8 = 0x09,
42  KC_9 = 0x0A,
43  KC_0 = 0x0B,
44  KC_MINUS = 0x0C, // - on main keyboard
45  KC_EQUALS = 0x0D,
46  KC_BACK = 0x0E, // backspace
47  KC_TAB = 0x0F,
48  KC_Q = 0x10,
49  KC_W = 0x11,
50  KC_E = 0x12,
51  KC_R = 0x13,
52  KC_T = 0x14,
53  KC_Y = 0x15,
54  KC_U = 0x16,
55  KC_I = 0x17,
56  KC_O = 0x18,
57  KC_P = 0x19,
58  KC_LBRACKET = 0x1A,
59  KC_RBRACKET = 0x1B,
60  KC_RETURN = 0x1C, // Enter on main keyboard
61  KC_LCONTROL = 0x1D,
62  KC_A = 0x1E,
63  KC_S = 0x1F,
64  KC_D = 0x20,
65  KC_F = 0x21,
66  KC_G = 0x22,
67  KC_H = 0x23,
68  KC_J = 0x24,
69  KC_K = 0x25,
70  KC_L = 0x26,
71  KC_SEMICOLON = 0x27,
72  KC_APOSTROPHE = 0x28,
73  KC_GRAVE = 0x29, // accent
74  KC_LSHIFT = 0x2A,
75  KC_BACKSLASH = 0x2B,
76  KC_Z = 0x2C,
77  KC_X = 0x2D,
78  KC_C = 0x2E,
79  KC_V = 0x2F,
80  KC_B = 0x30,
81  KC_N = 0x31,
82  KC_M = 0x32,
83  KC_COMMA = 0x33,
84  KC_PERIOD = 0x34, // . on main keyboard
85  KC_SLASH = 0x35, // / on main keyboard
86  KC_RSHIFT = 0x36,
87  KC_MULTIPLY = 0x37, // * on numeric keypad
88  KC_LMENU = 0x38, // left Alt
89  KC_SPACE = 0x39,
90  KC_CAPITAL = 0x3A,
91  KC_F1 = 0x3B,
92  KC_F2 = 0x3C,
93  KC_F3 = 0x3D,
94  KC_F4 = 0x3E,
95  KC_F5 = 0x3F,
96  KC_F6 = 0x40,
97  KC_F7 = 0x41,
98  KC_F8 = 0x42,
99  KC_F9 = 0x43,
100  KC_F10 = 0x44,
101  KC_NUMLOCK = 0x45,
102  KC_SCROLL = 0x46, // Scroll Lock
103  KC_NUMPAD7 = 0x47,
104  KC_NUMPAD8 = 0x48,
105  KC_NUMPAD9 = 0x49,
106  KC_SUBTRACT = 0x4A, // - on numeric keypad
107  KC_NUMPAD4 = 0x4B,
108  KC_NUMPAD5 = 0x4C,
109  KC_NUMPAD6 = 0x4D,
110  KC_ADD = 0x4E, // + on numeric keypad
111  KC_NUMPAD1 = 0x4F,
112  KC_NUMPAD2 = 0x50,
113  KC_NUMPAD3 = 0x51,
114  KC_NUMPAD0 = 0x52,
115  KC_DECIMAL = 0x53, // . on numeric keypad
116  KC_OEM_102 = 0x56, // < > | on UK/Germany keyboards
117  KC_F11 = 0x57,
118  KC_F12 = 0x58,
119  KC_F13 = 0x64, // (NEC PC98)
120  KC_F14 = 0x65, // (NEC PC98)
121  KC_F15 = 0x66, // (NEC PC98)
122  KC_KANA = 0x70, // (Japanese keyboard)
123  KC_ABNT_C1 = 0x73, // / ? on Portugese (Brazilian) keyboards
124  KC_CONVERT = 0x79, // (Japanese keyboard)
125  KC_NOCONVERT = 0x7B, // (Japanese keyboard)
126  KC_YEN = 0x7D, // (Japanese keyboard)
127  KC_ABNT_C2 = 0x7E, // Numpad . on Portugese (Brazilian) keyboards
128  KC_NUMPADEQUALS = 0x8D, // = on numeric keypad (NEC PC98)
129  KC_PREVTRACK = 0x90, // Previous Track (KC_CIRCUMFLEX on Japanese keyboard)
130  KC_AT = 0x91, // (NEC PC98)
131  KC_COLON = 0x92, // (NEC PC98)
132  KC_UNDERLINE = 0x93, // (NEC PC98)
133  KC_KANJI = 0x94, // (Japanese keyboard)
134  KC_STOP = 0x95, // (NEC PC98)
135  KC_AX = 0x96, // (Japan AX)
136  KC_UNLABELED = 0x97, // (J3100)
137  KC_NEXTTRACK = 0x99, // Next Track
138  KC_NUMPADENTER = 0x9C, // Enter on numeric keypad
139  KC_RCONTROL = 0x9D,
140  KC_MUTE = 0xA0, // Mute
141  KC_CALCULATOR = 0xA1, // Calculator
142  KC_PLAYPAUSE = 0xA2, // Play / Pause
143  KC_MEDIASTOP = 0xA4, // Media Stop
144  KC_TWOSUPERIOR = 0xAA, // ² on French AZERTY keyboard (same place as ~ ` on QWERTY)
145  KC_VOLUMEDOWN = 0xAE, // Volume -
146  KC_VOLUMEUP = 0xB0, // Volume +
147  KC_WEBHOME = 0xB2, // Web home
148  KC_NUMPADCOMMA = 0xB3, // , on numeric keypad (NEC PC98)
149  KC_DIVIDE = 0xB5, // / on numeric keypad
150  KC_SYSRQ = 0xB7,
151  KC_RMENU = 0xB8, // right Alt
152  KC_PAUSE = 0xC5, // Pause
153  KC_HOME = 0xC7, // Home on arrow keypad
154  KC_UP = 0xC8, // UpArrow on arrow keypad
155  KC_PGUP = 0xC9, // PgUp on arrow keypad
156  KC_LEFT = 0xCB, // LeftArrow on arrow keypad
157  KC_RIGHT = 0xCD, // RightArrow on arrow keypad
158  KC_END = 0xCF, // End on arrow keypad
159  KC_DOWN = 0xD0, // DownArrow on arrow keypad
160  KC_PGDOWN = 0xD1, // PgDn on arrow keypad
161  KC_INSERT = 0xD2, // Insert on arrow keypad
162  KC_DELETE = 0xD3, // Delete on arrow keypad
163  KC_LWIN = 0xDB, // Left Windows key
164  KC_RWIN = 0xDC, // Right Windows key
165  KC_APPS = 0xDD, // AppMenu key
166  KC_POWER = 0xDE, // System Power
167  KC_SLEEP = 0xDF, // System Sleep
168  KC_WAKE = 0xE3, // System Wake
169  KC_WEBSEARCH = 0xE5, // Web Search
170  KC_WEBFAVORITES = 0xE6, // Web Favorites
171  KC_WEBREFRESH = 0xE7, // Web Refresh
172  KC_WEBSTOP = 0xE8, // Web Stop
173  KC_WEBFORWARD = 0xE9, // Web Forward
174  KC_WEBBACK = 0xEA, // Web Back
175  KC_MYCOMPUTER = 0xEB, // My Computer
176  KC_MAIL = 0xEC, // Mail
177  KC_MEDIASELECT = 0xED, // Media Select
178  };
179 
183  class _OISExport KeyEvent : public EventArg
184  {
185  public:
186  KeyEvent(Object* obj, KeyCode kc, unsigned int txt) :
187  EventArg(obj), key(kc), text(txt) {}
188  virtual ~KeyEvent() {}
189 
193  unsigned int text;
194  };
195 
201  {
202  public:
203  virtual ~KeyListener() {}
204  virtual bool keyPressed(const KeyEvent& arg) = 0;
205  virtual bool keyReleased(const KeyEvent& arg) = 0;
206  };
207 
212  class _OISExport Keyboard : public Object
213  {
214  public:
215  virtual ~Keyboard(){};
216 
223  virtual bool isKeyDown(KeyCode key) const = 0;
224 
232  virtual void setEventCallback(KeyListener* keyListener) { mListener = keyListener; }
233 
238  KeyListener* getEventCallback() const { return mListener; }
239 
244  Ascii
245  };
246 
256  virtual void setTextTranslation(TextTranslationMode mode);
257 
262  TextTranslationMode getTextTranslation() const { return mTextMode; }
263 
274  virtual const std::string& getAsString(KeyCode kc) = 0;
275 
277  enum Modifier {
278  Shift = 0x0000001,
279  Ctrl = 0x0000010,
280  Alt = 0x0000100,
281  CapsLock = 0x0001000,
282  NumLock = 0x0010000
283  };
284 
295  virtual OIS::KeyCode getAsKeyCode(std::string str) = 0;
296 
301  bool isModifierDown(Modifier mod) const;
302 
308  virtual void copyKeyStates(char keys[256]) const = 0;
309 
310  protected:
311  Keyboard(const std::string& vendor, bool buffered, int devID, InputManager* creator) :
312  Object(vendor, OISKeyboard, buffered, devID, creator),
313  mModifiers(0), mListener(0), mTextMode(Unicode) {}
314 
316  unsigned int mModifiers;
317 
320 
323  };
324 }
325 #endif
Definition: OISKeyboard.h:176
Definition: OISKeyboard.h:117
Definition: OISKeyboard.h:149
Definition: OISEvents.h:32
Definition: OISKeyboard.h:172
Definition: OISKeyboard.h:44
Definition: OISKeyboard.h:72
Definition: OISKeyboard.h:83
Definition: OISKeyboard.h:48
Definition: OISKeyboard.h:51
Definition: OISKeyboard.h:100
Definition: OISKeyboard.h:60
Definition: OISKeyboard.h:56
#define _OISExport
Definition: OISPrereqs.h:40
Definition: OISKeyboard.h:125
Definition: OISKeyboard.h:67
Definition: OISKeyboard.h:132
Definition: OISKeyboard.h:40
Definition: OISKeyboard.h:32
Definition: OISKeyboard.h:133
Definition: OISKeyboard.h:88
Definition: OISKeyboard.h:135
Definition: OISKeyboard.h:243
Definition: OISKeyboard.h:49
Definition: OISKeyboard.h:58
Definition: OISKeyboard.h:82
TextTranslationMode
TextTranslation Mode.
Definition: OISKeyboard.h:241
Definition: OISKeyboard.h:55
Definition: OISKeyboard.h:128
Definition: OISKeyboard.h:169
Definition: OISKeyboard.h:36
Definition: OISKeyboard.h:121
Definition: OISKeyboard.h:148
Definition: OISKeyboard.h:77
Definition: OISKeyboard.h:136
Definition: OISKeyboard.h:130
Definition: OISKeyboard.h:71
Definition: OISKeyboard.h:46
Definition: OISKeyboard.h:152
Definition: OISKeyboard.h:102
KeyCode
Keyboard scan codes.
Definition: OISKeyboard.h:31
Definition: OISKeyboard.h:50
virtual ~Keyboard()
Definition: OISKeyboard.h:215
Definition: OISKeyboard.h:156
Definition: OISKeyboard.h:171
Definition: OISKeyboard.h:98
Definition: OISKeyboard.h:33
Definition: OISKeyboard.h:157
Definition: OISKeyboard.h:110
Definition: OISKeyboard.h:242
Definition: OISKeyboard.h:120
Definition: OISKeyboard.h:85
Definition: OISKeyboard.h:150
Definition: OISKeyboard.h:95
Definition: OISKeyboard.h:96
Definition: OISKeyboard.h:122
Definition: OISKeyboard.h:134
Definition: OISKeyboard.h:37
Definition: OISKeyboard.h:108
Definition: OISKeyboard.h:103
Definition: OISKeyboard.h:47
Keyboard(const std::string &vendor, bool buffered, int devID, InputManager *creator)
Definition: OISKeyboard.h:311
Definition: OISKeyboard.h:170
Definition: OISKeyboard.h:127
Definition: OISKeyboard.h:87
Definition: OISKeyboard.h:69
Definition: OISKeyboard.h:115
Definition: OISKeyboard.h:41
Modifier
Enum of bit position of modifer.
Definition: OISKeyboard.h:277
Definition: OISKeyboard.h:163
Definition: OISKeyboard.h:109
KeyListener * mListener
Used for buffered/actionmapping callback.
Definition: OISKeyboard.h:319
Definition: OISKeyboard.h:139
Definition: OISKeyboard.h:84
Definition: OISKeyboard.h:89
Definition: OISKeyboard.h:59
Definition: OISKeyboard.h:76
Definition: OISKeyboard.h:168
Definition: OISKeyboard.h:160
Definition: OISKeyboard.h:81
Definition: OISKeyboard.h:57
Definition: OISKeyboard.h:70
Definition: OISKeyboard.h:144
Definition: OISKeyboard.h:105
Definition: OISKeyboard.h:53
Definition: OISKeyboard.h:68
Definition: OISKeyboard.h:86
Definition: OISKeyboard.h:140
Definition: OISKeyboard.h:159
Definition: OISKeyboard.h:177
Definition: OISKeyboard.h:107
Definition: OISKeyboard.h:92
Definition: OISKeyboard.h:79
Definition: OISKeyboard.h:116
Definition: OISKeyboard.h:161
Definition: OISKeyboard.h:52
Definition: OISKeyboard.h:65
Definition: OISKeyboard.h:175
Definition: OISKeyboard.h:162
Definition: OISKeyboard.h:129
Definition: OISKeyboard.h:35
Definition: OISKeyboard.h:123
Definition: OISKeyboard.h:54
Definition: OISKeyboard.h:94
Definition: OISKeyboard.h:78
Definition: OISObject.h:32
Definition: OISKeyboard.h:99
Definition: OISKeyboard.h:119
virtual ~KeyListener()
Definition: OISKeyboard.h:203
Definition: OISKeyboard.h:63
Definition: OISKeyboard.h:137
Definition: OISKeyboard.h:145
Definition: OISKeyboard.h:111
Definition: OISKeyboard.h:112
Definition: OISKeyboard.h:38
Definition: OISKeyboard.h:42
Definition: OISKeyboard.h:113
Definition: OISKeyboard.h:166
Definition: OISKeyboard.h:118
Definition: OISKeyboard.h:34
Definition: OISPrereqs.h:162
Definition: OISKeyboard.h:126
Definition: OISKeyboard.h:173
Definition: OISKeyboard.h:45
Definition: OISKeyboard.h:74
Definition: OISKeyboard.h:97
Definition: OISKeyboard.h:39
Definition: OISKeyboard.h:142
Definition: OISInputManager.h:38
Definition: OISKeyboard.h:66
Definition: OISKeyboard.h:141
Definition: OISKeyboard.h:147
virtual ~KeyEvent()
Definition: OISKeyboard.h:188
Definition: OISKeyboard.h:151
unsigned int mModifiers
Bit field that holds status of Alt, Ctrl, Shift.
Definition: OISKeyboard.h:316
Definition: OISKeyboard.h:101
Definition: OISKeyboard.h:164
TextTranslationMode getTextTranslation() const
Definition: OISKeyboard.h:262
Definition: OISEffect.h:28
unsigned int text
Text character, depends on current TextTranslationMode.
Definition: OISKeyboard.h:193
KeyCode key
KeyCode of event.
Definition: OISKeyboard.h:191
Definition: OISKeyboard.h:124
KeyListener * getEventCallback() const
Definition: OISKeyboard.h:238
Definition: OISKeyboard.h:80
Definition: OISKeyboard.h:158
Definition: OISKeyboard.h:155
Definition: OISKeyboard.h:154
Definition: OISKeyboard.h:61
Definition: OISKeyboard.h:146
TextTranslationMode mTextMode
The current translation mode.
Definition: OISKeyboard.h:322
Definition: OISKeyboard.h:104
KeyEvent(Object *obj, KeyCode kc, unsigned int txt)
Definition: OISKeyboard.h:186
Definition: OISKeyboard.h:93
Definition: OISKeyboard.h:143
Definition: OISKeyboard.h:165
Definition: OISKeyboard.h:183
Definition: OISKeyboard.h:64
Definition: OISKeyboard.h:131
Definition: OISKeyboard.h:91
Definition: OISKeyboard.h:212
virtual void setEventCallback(KeyListener *keyListener)
Definition: OISKeyboard.h:232
Definition: OISKeyboard.h:62
Definition: OISKeyboard.h:138
Definition: OISKeyboard.h:75
Definition: OISKeyboard.h:73
Definition: OISKeyboard.h:153
Definition: OISKeyboard.h:114
Definition: OISKeyboard.h:106
Definition: OISKeyboard.h:174
Definition: OISKeyboard.h:90
Definition: OISKeyboard.h:167
Definition: OISKeyboard.h:200
Definition: OISKeyboard.h:43