File: KeyMap.cpp

package info (click to toggle)
0ad 0.0.17-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 51,248 kB
  • ctags: 46,933
  • sloc: cpp: 223,208; ansic: 31,240; python: 16,343; perl: 4,083; sh: 1,011; makefile: 915; xml: 733; java: 621; ruby: 229; erlang: 53; sql: 40
file content (133 lines) | stat: -rw-r--r-- 4,055 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* Copyright (C) 2013 Wildfire Games.
 * This file is part of 0 A.D.
 *
 * 0 A.D. is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * 0 A.D. is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "precompiled.h"

#include "KeyMap.h"

#include "SDL_version.h"
#if SDL_VERSION_ATLEAST(2, 0, 0)
# include "SDL_keycode.h"
#else // SDL 1.2
# include "SDL_keysym.h"
#endif

int GetSDLKeyFromWxKeyCode(int wxkey)
{
	// wx gives uppercase letters, SDL expects lowercase
	if (wxkey >= 'A' && wxkey <= 'Z')
		return wxkey + 'a' - 'A';

	if (wxkey < 256)
		return wxkey;

	switch (wxkey)
	{
#if SDL_VERSION_ATLEAST(2, 0, 0)
	case WXK_NUMPAD0: return SDLK_KP_0;
	case WXK_NUMPAD1: return SDLK_KP_1;
	case WXK_NUMPAD2: return SDLK_KP_2;
	case WXK_NUMPAD3: return SDLK_KP_3;
	case WXK_NUMPAD4: return SDLK_KP_4;
	case WXK_NUMPAD5: return SDLK_KP_5;
	case WXK_NUMPAD6: return SDLK_KP_6;
	case WXK_NUMPAD7: return SDLK_KP_7;
	case WXK_NUMPAD8: return SDLK_KP_8;
	case WXK_NUMPAD9: return SDLK_KP_9;
#else // SDL 1.2
	case WXK_NUMPAD0: return SDLK_KP0;
	case WXK_NUMPAD1: return SDLK_KP1;
	case WXK_NUMPAD2: return SDLK_KP2;
	case WXK_NUMPAD3: return SDLK_KP3;
	case WXK_NUMPAD4: return SDLK_KP4;
	case WXK_NUMPAD5: return SDLK_KP5;
	case WXK_NUMPAD6: return SDLK_KP6;
	case WXK_NUMPAD7: return SDLK_KP7;
	case WXK_NUMPAD8: return SDLK_KP8;
	case WXK_NUMPAD9: return SDLK_KP9;
#endif
	case WXK_NUMPAD_DECIMAL: return SDLK_KP_PERIOD;
	case WXK_NUMPAD_DIVIDE: return SDLK_KP_DIVIDE;
	case WXK_NUMPAD_MULTIPLY: return SDLK_KP_MULTIPLY;
	case WXK_NUMPAD_SUBTRACT: return SDLK_KP_MINUS;
	case WXK_NUMPAD_ADD: return SDLK_KP_PLUS;
	case WXK_NUMPAD_ENTER: return SDLK_KP_ENTER;
	case WXK_NUMPAD_EQUAL: return SDLK_KP_EQUALS;

	case WXK_UP: return SDLK_UP;
	case WXK_DOWN: return SDLK_DOWN;
	case WXK_RIGHT: return SDLK_RIGHT;
	case WXK_LEFT: return SDLK_LEFT;
	case WXK_INSERT: return SDLK_INSERT;
	case WXK_HOME: return SDLK_HOME;
	case WXK_END: return SDLK_END;
	case WXK_PAGEUP: return SDLK_PAGEUP;
	case WXK_PAGEDOWN: return SDLK_PAGEDOWN;

	case WXK_F1: return SDLK_F1;
	case WXK_F2: return SDLK_F2;
	case WXK_F3: return SDLK_F3;
	case WXK_F4: return SDLK_F4;
	case WXK_F5: return SDLK_F5;
	case WXK_F6: return SDLK_F6;
	case WXK_F7: return SDLK_F7;
	case WXK_F8: return SDLK_F8;
	case WXK_F9: return SDLK_F9;
	case WXK_F10: return SDLK_F10;
	case WXK_F11: return SDLK_F11;
	case WXK_F12: return SDLK_F12;
	case WXK_F13: return SDLK_F13;
	case WXK_F14: return SDLK_F14;
	case WXK_F15: return SDLK_F15;

#if SDL_VERSION_ATLEAST(2, 0, 0)
	case WXK_NUMLOCK: return SDLK_NUMLOCKCLEAR;
	case WXK_SCROLL: return SDLK_SCROLLLOCK;
#else // SDL 1.2
	case WXK_NUMLOCK: return SDLK_NUMLOCK;
	case WXK_SCROLL: return SDLK_SCROLLOCK;
#endif
//	case WXK_: return SDLK_CAPSLOCK;
	case WXK_SHIFT: return SDLK_RSHIFT;
//	case WXK_: return SDLK_LSHIFT;
	case WXK_CONTROL: return SDLK_RCTRL;
//	case WXK_: return SDLK_LCTRL;
	case WXK_ALT: return SDLK_RALT;
//	case WXK_: return SDLK_LALT;
//	case WXK_: return SDLK_RMETA;
//	case WXK_: return SDLK_LMETA;
//	case WXK_: return SDLK_LSUPER;
//	case WXK_: return SDLK_RSUPER;
//	case WXK_: return SDLK_MODE;
//	case WXK_: return SDLK_COMPOSE;

	case WXK_HELP: return SDLK_HELP;
#if SDL_VERSION_ATLEAST(2, 0, 0)
	case WXK_PRINT: return SDLK_PRINTSCREEN;
#else // SDL 1.2
	case WXK_PRINT: return SDLK_PRINT;
#endif
//	case WXK_: return SDLK_SYSREQ;
//	case WXK_: return SDLK_BREAK;
	case WXK_MENU: return SDLK_MENU;
//	case WXK_: return SDLK_POWER;
//	case WXK_: return SDLK_EURO;
//	case WXK_: return SDLK_UNDO;
	}

	return 0;
}