correct definitions for win32 key codes VK_*

This commit is contained in:
Thomas Bernard 2018-06-21 14:33:49 +02:00
parent 509f82d04d
commit 467eeaf217
2 changed files with 152 additions and 7 deletions

View File

@ -24,6 +24,8 @@
#if defined(USE_SDL) || defined(USE_SDL2)
#include <SDL.h>
#elif defined(WIN32)
#include <windows.h>
#endif
#if defined(USE_SDL)
@ -148,6 +150,107 @@
#define KEY_F11 K2K(SDLK_F11)
#define KEY_F12 K2K(SDLK_F12)
// end of KEY definitions for SDL and SDL2
#elif defined(WIN32)
// KEY definitions for win32
#define KEY_UNKNOWN 0
#define KEY_ESCAPE VK_ESCAPE
#define KEY_RETURN VK_RETURN
#define KEY_BACKSPACE VK_BACK
#define KEY_TAB VK_TAB
#define KEY_UP VK_UP
#define KEY_DOWN VK_DOWN
#define KEY_LEFT VK_LEFT
#define KEY_RIGHT VK_RIGHT
#define KEY_LEFTBRACKET VK_OEM_4
#define KEY_RIGHTBRACKET VK_OEM_6
#define KEY_INSERT VK_INSERT
#define KEY_DELETE VK_DELETE
#define KEY_COMMA VK_OEM_COMMA
#define KEY_BACKQUOTE VK_OEM_3
#define KEY_PAGEUP VK_PRIOR
#define KEY_PAGEDOWN VK_NEXT
#define KEY_HOME VK_HOME
#define KEY_END VK_END
#define KEY_KP_PLUS VK_ADD
#define KEY_KP_MINUS VK_SUBTRACT
#define KEY_KP_MULTIPLY VK_MULTIPLY
#define KEY_KP_ENTER VK_RETURN
#define KEY_KP_DIVIDE VK_DIVIDE
#define KEY_KP_PERIOD VK_DECIMAL
#define KEY_KP_EQUALS 0
#define KEY_EQUALS VK_OEM_PLUS
#define KEY_MINUS VK_OEM_MINUS
#define KEY_PERIOD VK_OEM_PERIOD
#define KEY_CAPSLOCK VK_CAPITAL
#define KEY_CLEAR VK_CLEAR
#define KEY_SPACE VK_SPACE
#define KEY_PAUSE VK_PAUSE
#define KEY_LSHIFT VK_LSHIFT
#define KEY_RSHIFT VK_RSHIFT
#define KEY_LCTRL VK_LCONTROL
#define KEY_RCTRL VK_RCONTROL
#define KEY_LALT VK_LMENU
#define KEY_RALT VK_RMENU
#define KEY_0 0x30
#define KEY_1 0x31
#define KEY_2 0x32
#define KEY_3 0x33
#define KEY_4 0x34
#define KEY_5 0x35
#define KEY_6 0x36
#define KEY_7 0x37
#define KEY_8 0x38
#define KEY_9 0x39
#define KEY_a 0x41
#define KEY_b 0x42
#define KEY_c 0x43
#define KEY_d 0x44
#define KEY_e 0x45
#define KEY_f 0x46
#define KEY_g 0x47
#define KEY_h 0x48
#define KEY_i 0x49
#define KEY_j 0x4a
#define KEY_k 0x4b
#define KEY_l 0x4c
#define KEY_m 0x4d
#define KEY_n 0x4e
#define KEY_o 0x4f
#define KEY_p 0x50
#define KEY_q 0x51
#define KEY_r 0x52
#define KEY_s 0x53
#define KEY_t 0x54
#define KEY_u 0x55
#define KEY_v 0x56
#define KEY_w 0x57
#define KEY_x 0x58
#define KEY_y 0x59
#define KEY_z 0x5a
#define KEY_KP0 VK_NUMPAD0
#define KEY_KP1 VK_NUMPAD1
#define KEY_KP2 VK_NUMPAD2
#define KEY_KP3 VK_NUMPAD3
#define KEY_KP4 VK_NUMPAD4
#define KEY_KP5 VK_NUMPAD5
#define KEY_KP6 VK_NUMPAD6
#define KEY_KP7 VK_NUMPAD7
#define KEY_KP8 VK_NUMPAD8
#define KEY_KP9 VK_NUMPAD9
#define KEY_SCROLLOCK VK_SCROLL
#define KEY_F1 VK_F1
#define KEY_F2 VK_F2
#define KEY_F3 VK_F3
#define KEY_F4 VK_F4
#define KEY_F5 VK_F5
#define KEY_F6 VK_F6
#define KEY_F7 VK_F7
#define KEY_F8 VK_F8
#define KEY_F9 VK_F9
#define KEY_F10 VK_F10
#define KEY_F11 VK_F11
#define KEY_F12 VK_F12
// end of KEY definitions for win32
#else
// KEY definitions for others
#define KEY_UNKNOWN 0

View File

@ -18,11 +18,44 @@ keys = ['UNKNOWN',
'LSHIFT', 'RSHIFT', 'LCTRL', 'RCTRL',
'LALT', 'RALT']
def keycode_def(section, key, index, sdl_key=None):
win32vk = {
'BACKSPACE': 'BACK',
'PAGEUP': 'PRIOR',
'PAGEDOWN': 'NEXT',
'CAPSLOCK': 'CAPITAL',
'EQUALS': 'OEM_PLUS', # =+ key on US keyboards
'COMMA': 'OEM_COMMA',
'MINUS': 'OEM_MINUS',
'PERIOD': 'OEM_PERIOD',
'BACKQUOTE': 'OEM_3',
'LEFTBRACKET': 'OEM_4',
'RIGHTBRACKET': 'OEM_6',
'KP_PLUS': 'ADD',
'KP_MULTIPLY': 'MULTIPLY',
'KP_MINUS': 'SUBTRACT',
'KP_DIVIDE': 'DIVIDE',
'KP_PERIOD': 'DECIMAL',
'KP_ENTER': 'RETURN',
'LCTRL': 'LCONTROL',
'RCTRL': 'RCONTROL',
'LALT': 'LMENU',
'RALT': 'RMENU',
}
def keycode_def(section, key, index, native_key=None):
if native_key is None:
native_key = key
if section == 'SDL and SDL2':
if sdl_key is None:
sdl_key = key
return '#define KEY_%-12s K2K(SDLK_%s)\n' % (key, sdl_key)
return '#define KEY_%-12s K2K(SDLK_%s)\n' % (key, native_key)
elif section == 'win32':
if len(key) == 1 and key >= '0' and key <= '9':
return '#define KEY_%-12s 0x%02x\n' % (key, ord(key))
elif len(key) == 1 and key >= 'a' and key <= 'z':
return '#define KEY_%-12s 0x%02x\n' % (key, ord(key)-32)
elif key == 'UNKNOWN' or key == 'KP_EQUALS':
return '#define KEY_%-12s 0\n' % (key)
else:
return '#define KEY_%-12s VK_%s\n' % (key, native_key)
else:
return '#define KEY_%-12s %d\n' % (key, index)
@ -30,7 +63,10 @@ def add_keycodes_defs(section, lines):
global keys
i = 0
for key in keys:
lines.append(keycode_def(section, key, i))
if section == 'win32' and key in win32vk:
lines.append(keycode_def(section, key, i, win32vk[key]))
else:
lines.append(keycode_def(section, key, i))
i = i + 1
for j in range(10):
lines.append(keycode_def(section, chr(ord('0') + j), i))
@ -42,9 +78,15 @@ def add_keycodes_defs(section, lines):
lines.append('#if defined(USE_SDL)\n')
for j in range(10):
key = "KP%d" % (j)
lines.append(keycode_def(section, key, i))
if section == 'win32':
lines.append(keycode_def(section, key, i, "NUMPAD%d" % (j)))
else:
lines.append(keycode_def(section, key, i))
i = i + 1
lines.append(keycode_def(section, 'SCROLLOCK', i))
if section == 'win32':
lines.append(keycode_def(section, 'SCROLLOCK', i, 'SCROLL'))
else:
lines.append(keycode_def(section, 'SCROLLOCK', i))
i = i + 1
if section == 'SDL and SDL2':
lines.append('#else\n')