ScummVM API documentation
keycodes.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef GAMOS_KEYCODES_H
23 #define GAMOS_KEYCODES_H
24 
25 #include "common/keyboard.h"
26 
27 namespace Gamos {
28 
29 class KeyCodes {
30 
31 public:
32  enum {
33  WIN_INVALID = 0,
34 
35  WIN_LBUTTON = 0x01,
36  WIN_RBUTTON = 0x02,
37  WIN_CANCEL = 0x03,
38  WIN_MBUTTON = 0x04,
39  WIN_XBUTTON1 = 0x05,
40  WIN_XBUTTON2 = 0x06,
41  WIN_BACK = 0x08,
42  WIN_TAB = 0x09,
43  WIN_CLEAR = 0x0C,
44  WIN_RETURN = 0x0D,
45  WIN_SHIFT = 0x10,
46  WIN_CONTROL = 0x11,
47  WIN_MENU = 0x12,
48  WIN_PAUSE = 0x13,
49  WIN_CAPITAL = 0x14,
50  WIN_KANA = 0x15,
51  WIN_JUNJA = 0x17,
52  WIN_FINAL = 0x18,
53  WIN_KANJI = 0x19,
54  WIN_ESCAPE = 0x1B,
55  WIN_CONVERT = 0x1C,
56  WIN_NONCONVERT = 0x1D,
57  WIN_ACCEPT = 0x1E,
58  WIN_MODECHANGE = 0x1F,
59  WIN_SPACE = 0x20,
60  WIN_PRIOR = 0x21,
61  WIN_NEXT = 0x22,
62  WIN_END = 0x23,
63  WIN_HOME = 0x24,
64  WIN_LEFT = 0x25,
65  WIN_UP = 0x26,
66  WIN_RIGHT = 0x27,
67  WIN_DOWN = 0x28,
68  WIN_SELECT = 0x29,
69  WIN_PRINT = 0x2A,
70  WIN_EXECUTE = 0x2B,
71  WIN_SNAPSHOT = 0x2C,
72  WIN_INSERT = 0x2D,
73  WIN_DELETE = 0x2E,
74  WIN_HELP = 0x2F,
75  WIN_0 = 0x30,
76  WIN_1 = 0x31,
77  WIN_2 = 0x32,
78  WIN_3 = 0x33,
79  WIN_4 = 0x34,
80  WIN_5 = 0x35,
81  WIN_6 = 0x36,
82  WIN_7 = 0x37,
83  WIN_8 = 0x38,
84  WIN_9 = 0x39,
85  WIN_A = 0x41,
86  WIN_B = 0x42,
87  WIN_C = 0x43,
88  WIN_D = 0x44,
89  WIN_E = 0x45,
90  WIN_F = 0x46,
91  WIN_G = 0x47,
92  WIN_H = 0x48,
93  WIN_I = 0x49,
94  WIN_J = 0x4A,
95  WIN_K = 0x4B,
96  WIN_L = 0x4C,
97  WIN_M = 0x4D,
98  WIN_N = 0x4E,
99  WIN_O = 0x4F,
100  WIN_P = 0x50,
101  WIN_Q = 0x51,
102  WIN_R = 0x52,
103  WIN_S = 0x53,
104  WIN_T = 0x54,
105  WIN_U = 0x55,
106  WIN_V = 0x56,
107  WIN_W = 0x57,
108  WIN_X = 0x58,
109  WIN_Y = 0x59,
110  WIN_Z = 0x5A,
111  WIN_LWIN = 0x5B,
112  WIN_RWIN = 0x5C,
113  WIN_APPS = 0x5D,
114  WIN_SLEEP = 0x5F,
115  WIN_NUMPAD0 = 0x60,
116  WIN_NUMPAD1 = 0x61,
117  WIN_NUMPAD2 = 0x62,
118  WIN_NUMPAD3 = 0x63,
119  WIN_NUMPAD4 = 0x64,
120  WIN_NUMPAD5 = 0x65,
121  WIN_NUMPAD6 = 0x66,
122  WIN_NUMPAD7 = 0x67,
123  WIN_NUMPAD8 = 0x68,
124  WIN_NUMPAD9 = 0x69,
125  WIN_MULTIPLY = 0x6A,
126  WIN_ADD = 0x6B,
127  WIN_SEPARATOR = 0x6C,
128  WIN_SUBTRACT = 0x6D,
129  WIN_DECIMAL = 0x6E,
130  WIN_DIVIDE = 0x6F,
131  WIN_F1 = 0x70,
132  WIN_F2 = 0x71,
133  WIN_F3 = 0x72,
134  WIN_F4 = 0x73,
135  WIN_F5 = 0x74,
136  WIN_F6 = 0x75,
137  WIN_F7 = 0x76,
138  WIN_F8 = 0x77,
139  WIN_F9 = 0x78,
140  WIN_F10 = 0x79,
141  WIN_F11 = 0x7A,
142  WIN_F12 = 0x7B,
143  WIN_F13 = 0x7C,
144  WIN_F14 = 0x7D,
145  WIN_F15 = 0x7E,
146  WIN_F16 = 0x7F,
147  WIN_F17 = 0x80,
148  WIN_F18 = 0x81,
149  WIN_F19 = 0x82,
150  WIN_F20 = 0x83,
151  WIN_F21 = 0x84,
152  WIN_F22 = 0x85,
153  WIN_F23 = 0x86,
154  WIN_F24 = 0x87,
155  WIN_NAVIGATION_VIEW = 0x88,
156  WIN_NAVIGATION_MENU = 0x89,
157  WIN_NAVIGATION_UP = 0x8A,
158  WIN_NAVIGATION_DOWN = 0x8B,
159  WIN_NAVIGATION_LEFT = 0x8C,
160  WIN_NAVIGATION_RIGHT = 0x8D,
161  WIN_NAVIGATION_ACCEPT = 0x8E,
162  WIN_NAVIGATION_CANCEL = 0x8F,
163  WIN_NUMLOCK = 0x90,
164  WIN_SCROLL = 0x91,
165  WIN_OEM_NEC_EQUAL = 0x92,
166  WIN_OEM_FJ_JISHO = 0x92,
167  WIN_OEM_FJ_MASSHOU = 0x93,
168  WIN_OEM_FJ_TOUROKU = 0x94,
169  WIN_OEM_FJ_LOYA = 0x95,
170  WIN_OEM_FJ_ROYA = 0x96,
171  WIN_LSHIFT = 0xA0,
172  WIN_RSHIFT = 0xA1,
173  WIN_LCONTROL = 0xA2,
174  WIN_RCONTROL = 0xA3,
175  WIN_LMENU = 0xA4,
176  WIN_RMENU = 0xA5,
177  WIN_BROWSER_BACK = 0xA6,
178  WIN_BROWSER_FORWARD = 0xA7,
179  WIN_BROWSER_REFRESH = 0xA8,
180  WIN_BROWSER_STOP = 0xA9,
181  WIN_BROWSER_SEARCH = 0xAA,
182  WIN_BROWSER_FAVORITES = 0xAB,
183  WIN_BROWSER_HOME = 0xAC,
184  WIN_VOLUME_MUTE = 0xAD,
185  WIN_VOLUME_DOWN = 0xAE,
186  WIN_VOLUME_UP = 0xAF,
187  WIN_MEDIA_NEXT_TRACK = 0xB0,
188  WIN_MEDIA_PREV_TRACK = 0xB1,
189  WIN_MEDIA_STOP = 0xB2,
190  WIN_MEDIA_PLAY_PAUSE = 0xB3,
191  WIN_LAUNCH_MAIL = 0xB4,
192  WIN_LAUNCH_MEDIA_SELECT = 0xB5,
193  WIN_LAUNCH_APP1 = 0xB6,
194  WIN_LAUNCH_APP2 = 0xB7,
195  WIN_OEM_1 = 0xBA,
196  WIN_OEM_PLUS = 0xBB,
197  WIN_OEM_COMMA = 0xBC,
198  WIN_OEM_MINUS = 0xBD,
199  WIN_OEM_PERIOD = 0xBE,
200  WIN_OEM_2 = 0xBF,
201  WIN_OEM_3 = 0xC0,
202  WIN_GAMEPAD_A = 0xC3,
203  WIN_GAMEPAD_B = 0xC4,
204  WIN_GAMEPAD_X = 0xC5,
205  WIN_GAMEPAD_Y = 0xC6,
206  WIN_GAMEPAD_RIGHT_SHOULDER = 0xC7,
207  WIN_GAMEPAD_LEFT_SHOULDER = 0xC8,
208  WIN_GAMEPAD_LEFT_TRIGGER = 0xC9,
209  WIN_GAMEPAD_RIGHT_TRIGGER = 0xCA,
210  WIN_GAMEPAD_DPAD_UP = 0xCB,
211  WIN_GAMEPAD_DPAD_DOWN = 0xCC,
212  WIN_GAMEPAD_DPAD_LEFT = 0xCD,
213  WIN_GAMEPAD_DPAD_RIGHT = 0xCE,
214  WIN_GAMEPAD_MENU = 0xCF,
215  WIN_GAMEPAD_VIEW = 0xD0,
216  WIN_GAMEPAD_LEFT_THUMBSTICK_BUTTON = 0xD1,
217  WIN_GAMEPAD_RIGHT_THUMBSTICK_BUTTON = 0xD2,
218  WIN_GAMEPAD_LEFT_THUMBSTICK_UP = 0xD3,
219  WIN_GAMEPAD_LEFT_THUMBSTICK_DOWN = 0xD4,
220  WIN_GAMEPAD_LEFT_THUMBSTICK_RIGHT = 0xD5,
221  WIN_GAMEPAD_LEFT_THUMBSTICK_LEFT = 0xD6,
222  WIN_GAMEPAD_RIGHT_THUMBSTICK_UP = 0xD7,
223  WIN_GAMEPAD_RIGHT_THUMBSTICK_DOWN = 0xD8,
224  WIN_GAMEPAD_RIGHT_THUMBSTICK_RIGHT = 0xD9,
225  WIN_GAMEPAD_RIGHT_THUMBSTICK_LEFT = 0xDA,
226  WIN_OEM_4 = 0xDB,
227  WIN_OEM_5 = 0xDC,
228  WIN_OEM_6 = 0xDD,
229  WIN_OEM_7 = 0xDE,
230  WIN_OEM_8 = 0xDF,
231  WIN_OEM_AX = 0xE1,
232  WIN_OEM_102 = 0xE2,
233  WIN_ICO_HELP = 0xE3,
234  WIN_ICO_00 = 0xE4,
235  WIN_PROCESSKEY = 0xE5,
236  WIN_ICO_CLEAR = 0xE6,
237  WIN_PACKET = 0xE7,
238  WIN_OEM_RESET = 0xE9,
239  WIN_OEM_JUMP = 0xEA,
240  WIN_OEM_PA1 = 0xEB,
241  WIN_OEM_PA2 = 0xEC,
242  WIN_OEM_PA3 = 0xED,
243  WIN_OEM_WSCTRL = 0xEE,
244  WIN_OEM_CUSEL = 0xEF,
245  WIN_OEM_ATTN = 0xF0,
246  WIN_OEM_FINISH = 0xF1,
247  WIN_OEM_COPY = 0xF2,
248  WIN_OEM_AUTO = 0xF3,
249  WIN_OEM_ENLW = 0xF4,
250  WIN_OEM_BACKTAB = 0xF5,
251  WIN_ATTN = 0xF6,
252  WIN_CRSEL = 0xF7,
253  WIN_EXSEL = 0xF8,
254  WIN_EREOF = 0xF9,
255  WIN_PLAY = 0xFA,
256  WIN_ZOOM = 0xFB,
257  WIN_NONAME = 0xFC,
258  WIN_PA1 = 0xFD,
259  WIN_OEM_CLEAR = 0xFE
260  };
261 
262 private:
263  uint8 _winCodes[Common::KEYCODE_LAST];
264  uint16 _scummCodes[256];
265 
266  Common::Array<uint8> _cpTable;
267 
268 protected:
269  KeyCodes();
270 
271  void setCPTable(const uint16 *table, uint16 size, uint16 offset = 0x80);
272 
273 public:
274  uint8 getWinCode(uint16 code) const {
275  return _winCodes[code];
276  };
277  uint16 getScummCode(uint8 code) const {
278  return _scummCodes[code];
279  };
280 
281  void setCP1251();
282  void setCP1252();
283 
284  uint16 getCPCode(uint16 code) const {
285  if (code >= _cpTable.size())
286  return 0;
287  return _cpTable[code];
288  }
289 };
290 
291 
292 }
293 
294 
295 #endif
Definition: blit.h:28
Definition: keycodes.h:29
size_type size() const
Definition: array.h:316