Compare commits

...

8 Commits

Author SHA1 Message Date
Tobias Zwick d8a4b2a7bf buildfix msvc 2013-05-26 17:59:12 +02:00
Armin Burgmeier 12f10f070d Add missing scancodes for linux 2013-05-26 16:42:35 +02:00
Tobias Zwick 3cbd53bada convert windows scancodes to linux scancodes where they differ; make linux compile 2013-05-26 15:13:02 +02:00
Tobias Zwick 120cff1262 convert windows scancodes to linux scancodes where they differ; make linux compile 2013-05-26 15:01:23 +02:00
Tobias Zwick 5877cab4c7 convert windows scancodes to linux scancodes where they differ; make linux compile 2013-05-26 15:00:03 +02:00
Martin Plicht 3d2a1ce9a3 mac: Compile fix 2013-05-26 14:21:43 +02:00
Tobias Zwick e000b268dd write down all scancodes for windows 2013-05-26 13:06:21 +02:00
Tobias Zwick 40547be458 stop and play icons 2013-05-26 02:04:01 +02:00
9 changed files with 312 additions and 208 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -2707,7 +2707,7 @@ bool C4Game::InitKeyboard()
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_F3 ), "MusicToggle", C4KeyScope(KEYSCOPE_Generic | KEYSCOPE_Gui), new C4KeyCB <C4MusicSystem> (Application.MusicSystem, &C4MusicSystem::ToggleOnOff)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_F9 ), "Screenshot", C4KeyScope(KEYSCOPE_Fullscreen | KEYSCOPE_Gui), new C4KeyCBEx<C4GraphicsSystem, bool>(GraphicsSystem, false, &C4GraphicsSystem::SaveScreenshot)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_F9, KEYS_Control), "ScreenshotEx", KEYSCOPE_Fullscreen, new C4KeyCBEx<C4GraphicsSystem, bool>(GraphicsSystem, true, &C4GraphicsSystem::SaveScreenshot)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(KEY_C, KEYS_Alt), "ToggleChat", C4KeyScope(KEYSCOPE_Generic | KEYSCOPE_Gui), new C4KeyCB <C4Game> (*this, &C4Game::ToggleChat)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_C, KEYS_Alt), "ToggleChat", C4KeyScope(KEYSCOPE_Generic | KEYSCOPE_Gui), new C4KeyCB <C4Game> (*this, &C4Game::ToggleChat)));
// main ingame
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_F1 ), "ToggleShowHelp", KEYSCOPE_Generic, new C4KeyCB <C4GraphicsSystem>(GraphicsSystem, &C4GraphicsSystem::ToggleShowHelp)));
@ -2778,10 +2778,10 @@ bool C4Game::InitKeyboard()
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_SPACE ), "EditCursorModeToggle", KEYSCOPE_Console, new C4KeyCB <C4EditCursor>(Console.EditCursor, &C4EditCursor::ToggleMode)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_ADD ), "ToolsDlgGradeUp", KEYSCOPE_Console, new C4KeyCBEx<C4ToolsDlg, int32_t>(Console.ToolsDlg, +5, &C4ToolsDlg::ChangeGrade)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_SUBTRACT ), "ToolsDlgGradeDown", KEYSCOPE_Console, new C4KeyCBEx<C4ToolsDlg, int32_t>(Console.ToolsDlg, -5, &C4ToolsDlg::ChangeGrade)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(KEY_M, KEYS_Control), "ToolsDlgPopMaterial", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::PopMaterial)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(KEY_T, KEYS_Control), "ToolsDlgPopTextures", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::PopTextures)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(KEY_I, KEYS_Control), "ToolsDlgIFTToggle", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::ToggleIFT)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(KEY_W, KEYS_Control), "ToolsDlgToolToggle", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::ToggleTool)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_M, KEYS_Control), "ToolsDlgPopMaterial", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::PopMaterial)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_T, KEYS_Control), "ToolsDlgPopTextures", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::PopTextures)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_I, KEYS_Control), "ToolsDlgIFTToggle", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::ToggleIFT)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_W, KEYS_Control), "ToolsDlgToolToggle", KEYSCOPE_Console, new C4KeyCB <C4ToolsDlg>(Console.ToolsDlg, &C4ToolsDlg::ToggleTool)));
KeyboardInput.RegisterKey(new C4CustomKey(C4KeyCodeEx(K_DELETE ), "EditCursorDelete", KEYSCOPE_Console, new C4KeyCB <C4EditCursor>(Console.EditCursor, &C4EditCursor::Delete)));
// no default keys assigned

View File

@ -80,13 +80,13 @@ namespace C4GUI
pKeyCursorEnd = RegisterCursorOp(COP_END , K_END , "GUIEditCursorEnd", eKeyPrio);
pKeyEnter = new C4KeyBinding(C4KeyCodeEx(K_RETURN), "GUIEditConfirm", KEYSCOPE_Gui,
new ControlKeyCB<Edit>(*this, &Edit::KeyEnter), eKeyPrio);
pKeyCopy = new C4KeyBinding(C4KeyCodeEx(KEY_C, KEYS_Control), "GUIEditCopy", KEYSCOPE_Gui,
pKeyCopy = new C4KeyBinding(C4KeyCodeEx(K_C, KEYS_Control), "GUIEditCopy", KEYSCOPE_Gui,
new ControlKeyCB<Edit>(*this, &Edit::KeyCopy), eKeyPrio);
pKeyPaste = new C4KeyBinding(C4KeyCodeEx(KEY_V, KEYS_Control), "GUIEditPaste", KEYSCOPE_Gui,
pKeyPaste = new C4KeyBinding(C4KeyCodeEx(K_V, KEYS_Control), "GUIEditPaste", KEYSCOPE_Gui,
new ControlKeyCB<Edit>(*this, &Edit::KeyPaste), eKeyPrio);
pKeyCut = new C4KeyBinding(C4KeyCodeEx(KEY_X, KEYS_Control), "GUIEditCut", KEYSCOPE_Gui,
pKeyCut = new C4KeyBinding(C4KeyCodeEx(K_X, KEYS_Control), "GUIEditCut", KEYSCOPE_Gui,
new ControlKeyCB<Edit>(*this, &Edit::KeyCut), eKeyPrio);
pKeySelAll = new C4KeyBinding(C4KeyCodeEx(KEY_A, KEYS_Control), "GUIEditSelAll", KEYSCOPE_Gui,
pKeySelAll = new C4KeyBinding(C4KeyCodeEx(K_A, KEYS_Control), "GUIEditSelAll", KEYSCOPE_Gui,
new ControlKeyCB<Edit>(*this, &Edit::KeySelectAll), eKeyPrio);
}

View File

@ -112,107 +112,111 @@ struct C4KeyCodeMapEntry
#if defined(USE_WIN32_WINDOWS) || defined(USE_X11)
const C4KeyCodeMapEntry KeyCodeMap[] = {
{1, "Escape", "Esc"},
{2, "1", NULL},
{3, "2", NULL},
{4, "3", NULL},
{5, "4", NULL},
{6, "5", NULL},
{7, "6", NULL},
{8, "7", NULL},
{9, "8", NULL},
{10, "9", NULL},
{11, "0", NULL},
{12, "Minus", "-"},
{13, "Equal", "="},
{14, "BackSpace", NULL},
{15, "Tab", NULL},
{16, "Q", NULL},
{17, "W", NULL},
{18, "E", NULL},
{19, "R", NULL},
{20, "T", NULL},
{21, "Y", NULL},
{22, "U", NULL},
{23, "I", NULL},
{24, "O", NULL},
{25, "P", NULL},
{26, "LeftBracket", "["},
{27, "RightBracket", "]"},
{28, "Return", "Ret"},
{29, "LeftControl", "LCtrl"},
{30, "A", NULL},
{31, "S", NULL},
{32, "D", NULL},
{33, "F", NULL},
{34, "G", NULL},
{35, "H", NULL},
{36, "J", NULL},
{37, "K", NULL},
{38, "L", NULL},
{39, "Semicolon", ";"},
{40, "Apostrophe", "'"},
{42, "LeftShift", "LShift"},
{43, "Backslash", "\\"},
{44, "Z", NULL},
{45, "X", NULL},
{46, "C", NULL},
{47, "V", NULL},
{48, "B", NULL},
{49, "N", NULL},
{50, "M", NULL},
{51, "Comma", ","},
{52, "Period", "."},
{53, "Slash", "/"},
{54, "RightShift", "RShift"},
{55, "Multiply", "N*"},
{56, "LeftAlt", "LAlt"},
{57, "Space", "Sp"},
{58, "Capslock", NULL},
{59, "F1", NULL},
{60, "F2", NULL},
{61, "F3", NULL},
{62, "F4", NULL},
{63, "F5", NULL},
{64, "F6", NULL},
{65, "F7", NULL},
{66, "F8", NULL},
{67, "F9", NULL},
{68, "F10", NULL},
{69, "NumLock", "NLock"},
{71, "Num7", "N7"},
{72, "Num8", "N8"},
{73, "Num9", "N9"},
{74, "Subtract", "N-"},
{75, "Num4", "N4"},
{76, "Num5", "N5"},
{77, "Num6", "N6"},
{78, "Add", "N+"},
{79, "Num1", "N1"},
{80, "Num2", "N2"},
{81, "Num3", "N3"},
{82, "Num0", "N0"},
{83, "Decimal", "N,"},
{86, "|<>", NULL},
{87, "F11", NULL},
{88, "F12", NULL},
{96, "NumReturn", "NRet"},
{97, "RightControl", "RCtrl"},
{98, "Divide", "N/"},
{100, "RightAlt", "RAlt"},
{102, "Home", NULL},
{103, "Up", NULL},
{104, "PageUp", NULL},
{105, "Left", NULL},
{106, "Right", NULL},
{107, "End", NULL},
{108, "Down", NULL},
{109, "PageDown", NULL},
{110, "Insert", "Ins"},
{111, "Delete", "Del"},
{119, "Pause", NULL},
{125, "LeftWin", "LWin"},
{127, "Menu", NULL},
{K_ESCAPE, "Escape", "Esc"},
{K_1, "1", NULL},
{K_2, "2", NULL},
{K_3, "3", NULL},
{K_4, "4", NULL},
{K_5, "5", NULL},
{K_6, "6", NULL},
{K_7, "7", NULL},
{K_8, "8", NULL},
{K_9, "9", NULL},
{K_0, "0", NULL},
{K_MINUS, "Minus", "-"},
{K_EQUAL, "Equal", "="},
{K_BACK, "BackSpace", NULL},
{K_TAB, "Tab", NULL},
{K_Q, "Q", NULL},
{K_W, "W", NULL},
{K_E, "E", NULL},
{K_R, "R", NULL},
{K_T, "T", NULL},
{K_Y, "Y", NULL},
{K_U, "U", NULL},
{K_I, "I", NULL},
{K_O, "O", NULL},
{K_P, "P", NULL},
{K_LEFT_BRACKET,"LeftBracket", "["},
{K_RIGHT_BRACKET,"RightBracket","]"},
{K_RETURN, "Return", "Ret"},
{K_CONTROL_L, "LeftControl", "LCtrl"},
{K_A, "A", NULL},
{K_S, "S", NULL},
{K_D, "D", NULL},
{K_F, "F", NULL},
{K_G, "G", NULL},
{K_H, "H", NULL},
{K_J, "J", NULL},
{K_K, "K", NULL},
{K_L, "L", NULL},
{K_SEMICOLON, "Semicolon", ";"},
{K_APOSTROPHE, "Apostrophe", "'"},
{K_GRAVE_ACCENT,"GraveAccent", "`"},
{K_SHIFT_L, "LeftShift", "LShift"},
{K_BACKSLASH, "Backslash", "\\"},
{K_Z, "Z", NULL},
{K_X, "X", NULL},
{K_C, "C", NULL},
{K_V, "V", NULL},
{K_B, "B", NULL},
{K_N, "N", NULL},
{K_M, "M", NULL},
{K_COMMA, "Comma", ","},
{K_PERIOD, "Period", "."},
{K_SLASH, "Slash", "/"},
{K_SHIFT_R, "RightShift", "RShift"},
{K_MULTIPLY, "Multiply", "N*"},
{K_ALT_L, "LeftAlt", "LAlt"},
{K_SPACE, "Space", "Sp"},
{K_CAPS, "Capslock", NULL},
{K_F1, "F1", NULL},
{K_F2, "F2", NULL},
{K_F3, "F3", NULL},
{K_F4, "F4", NULL},
{K_F5, "F5", NULL},
{K_F6, "F6", NULL},
{K_F7, "F7", NULL},
{K_F8, "F8", NULL},
{K_F9, "F9", NULL},
{K_F10, "F10", NULL},
{K_NUM, "NumLock", "NLock"},
{K_SCROLL, "ScrollLock", "SLock"},
{K_NUM7, "Num7", "N7"},
{K_NUM8, "Num8", "N8"},
{K_NUM9, "Num9", "N9"},
{K_SUBTRACT, "Subtract", "N-"},
{K_NUM4, "Num4", "N4"},
{K_NUM5, "Num5", "N5"},
{K_NUM6, "Num6", "N6"},
{K_ADD, "Add", "N+"},
{K_NUM1, "Num1", "N1"},
{K_NUM2, "Num2", "N2"},
{K_NUM3, "Num3", "N3"},
{K_NUM0, "Num0", "N0"},
{K_DECIMAL, "Decimal", "N,"},
{K_86, "|<>", NULL},
{K_F11, "F11", NULL},
{K_F12, "F12", NULL},
{K_NUM_RETURN, "NumReturn", "NRet"},
{K_CONTROL_R, "RightControl", "RCtrl"},
{K_DIVIDE, "Divide", "N/"},
{K_ALT_R, "RightAlt", "RAlt"},
{K_HOME, "Home", NULL},
{K_UP, "Up", NULL},
{K_PAGEUP, "PageUp", NULL},
{K_LEFT, "Left", NULL},
{K_RIGHT, "Right", NULL},
{K_END, "End", NULL},
{K_DOWN, "Down", NULL},
{K_PAGEDOWN, "PageDown", NULL},
{K_INSERT, "Insert", "Ins"},
{K_DELETE, "Delete", "Del"},
{K_PAUSE, "Pause", NULL},
{K_WIN_L, "LeftWin", "LWin"},
{K_WIN_R, "RightWin", "RWin"},
{K_MENU, "Menu", NULL},
{K_PRINT, "Print", NULL},
{0x00, NULL, NULL}
};
#elif defined(USE_COCOA)
@ -832,6 +836,8 @@ void C4KeyboardInput::UnregisterKeyBinding(C4CustomKey *pUnregKey)
bool C4KeyboardInput::DoInput(const C4KeyCodeEx &InKey, C4KeyEventType InEvent, DWORD InScope, int32_t iStrength)
{
LogF("%d",InKey.Key);
// store last-key-info
LastKeyExtraData.iStrength = (iStrength >= 0) ? iStrength : ((InEvent != KEYEV_Up) * 100);
LastKeyExtraData.game_x = LastKeyExtraData.game_y = LastKeyExtraData.vp_x = LastKeyExtraData.vp_y = 0;

View File

@ -1427,7 +1427,7 @@ C4StartupScenSelDlg::C4StartupScenSelDlg(bool fNetwork) : C4StartupDlg(LoadResSt
new C4GUI::ControlKeyDlgCB<C4StartupScenSelDlg>(pScenSelList, *this, &C4StartupScenSelDlg::KeyRename), C4CustomKey::PRIO_CtrlOverride);
pKeyDelete = new C4KeyBinding(C4KeyCodeEx(K_DELETE), "StartupScenSelDelete", KEYSCOPE_Gui,
new C4GUI::ControlKeyDlgCB<C4StartupScenSelDlg>(pScenSelList, *this, &C4StartupScenSelDlg::KeyDelete), C4CustomKey::PRIO_CtrlOverride);
pKeyCheat = new C4KeyBinding(C4KeyCodeEx(KEY_M, KEYS_Alt), "StartupScenSelCheat", KEYSCOPE_Gui,
pKeyCheat = new C4KeyBinding(C4KeyCodeEx(K_M, KEYS_Alt), "StartupScenSelCheat", KEYSCOPE_Gui,
new C4GUI::ControlKeyDlgCB<C4StartupScenSelDlg>(pScenSelList, *this, &C4StartupScenSelDlg::KeyCheat), C4CustomKey::PRIO_CtrlOverride);
}

View File

@ -29,11 +29,65 @@
#include <StdBuf.h>
#if defined(USE_WIN32_WINDOWS) || defined(USE_X11)
#if defined(USE_WIN32_WINDOWS) || defined(USE_X11) || defined(USE_CONSOLE)
#define K_ESCAPE 1
#define K_1 2
#define K_2 3
#define K_3 4
#define K_4 5
#define K_5 6
#define K_6 7
#define K_7 8
#define K_8 9
#define K_9 10
#define K_0 11
#define K_MINUS 12
#define K_EQUAL 13
#define K_BACK 14
#define K_TAB 15
#define K_Q 16
#define K_W 17
#define K_E 18
#define K_R 19
#define K_T 20
#define K_Y 21
#define K_U 22
#define K_I 23
#define K_O 24
#define K_P 25
#define K_LEFT_BRACKET 26
#define K_RIGHT_BRACKET 27
#define K_RETURN 28
#define K_CONTROL_L 29
#define K_A 30
#define K_S 31
#define K_D 32
#define K_F 33
#define K_G 34
#define K_H 35
#define K_J 36
#define K_K 37
#define K_L 38
#define K_SEMICOLON 39
#define K_APOSTROPHE 40
#define K_GRAVE_ACCENT 41
#define K_SHIFT_L 42
#define K_BACKSLASH 43
#define K_Z 44
#define K_X 45
#define K_C 46
#define K_V 47
#define K_B 48
#define K_N 49
#define K_M 50
#define K_COMMA 51
#define K_PERIOD 52
#define K_SLASH 53
#define K_SHIFT_R 54
#define K_ALT_L 56
#define K_ALT_R 100
#define K_MULTIPLY 55
#define K_ALT_L 56
#define K_SPACE 57
#define K_CAPS 58
#define K_F1 59
#define K_F2 60
#define K_F3 61
@ -44,39 +98,89 @@
#define K_F8 66
#define K_F9 67
#define K_F10 68
#define K_NUM 69
#define K_SCROLL 70
#define K_SUBTRACT 74
#define K_ADD 78
#define K_86 86
#define K_F11 87
#define K_F12 88
#define K_ADD 78
#define K_SUBTRACT 74
#define K_MULTIPLY 55
#define K_ESCAPE 1
#define K_PAUSE 119
#define K_TAB 15
#define K_RETURN 28
#define K_DELETE 111
#define K_INSERT 110
#define K_BACK 14
#define K_SPACE 57
/*
// starting from here, scancodes between windows and linux differ
// this is not used because the windows scancodes are converted to
// unix scancodes in C4WindowWin32.cpp ConvertToUnixScancode
#if defined(USE_WIN32_WINDOWS)
#define K_HOME 71
#define K_UP 72
#define K_PAGEUP 73
#define K_LEFT 75
#define K_CENTER 76
#define K_RIGHT 77
#define K_END 79
#define K_DOWN 80
#define K_PAGEDOWN 81
#define K_INSERT 82
#define K_DELETE 83
#define K_WIN_L 91
#define K_WIN_R 92
#define K_MENU 93
#define K_PAUSE 69 // same as numlock?!
#define K_PRINT 55 // same as multiply?!
#define K_ALT_R K_ALT_L // 29 56
#define K_CONTROL_R K_CONTROL_L // 29 29
#define K_NUM_RETURN K_RETURN // 28 57
#define K_NUM7 K_HOME
#define K_NUM8 K_UP
#define K_NUM9 K_PAGEUP
#define K_NUM4 K_LEFT
#define K_NUM5 K_CENTER
#define K_NUM6 K_RIGHT
#define K_NUM1 K_END
#define K_NUM2 K_DOWN
#define K_NUM3 K_PAGEDOWN
#define K_NUM0 K_INSERT
#define K_DECIMAL K_DELETE
#define K_DIVIDE K_SLASH
#elif defined(USE_X11) || defined(USE_CONSOLE)
*/
#define K_NUM7 71
#define K_NUM8 72
#define K_NUM9 73
#define K_NUM4 75
#define K_NUM5 76
#define K_NUM6 77
#define K_NUM1 79
#define K_NUM2 80
#define K_NUM3 81
#define K_NUM0 82
#define K_DECIMAL 83
#define K_DIVIDE 98
#define K_ALT_R 100
#define K_CONTROL_R 97
#define K_NUM_RETURN 96
#define K_HOME 102
#define K_UP 103
#define K_DOWN 108
#define K_PAGEUP 104
#define K_LEFT 105
#define K_RIGHT 106
#define K_HOME 102
#define K_END 107
#define K_SCROLL 70
#define K_MENU 127
#define K_PAGEUP 104
#define K_DOWN 108
#define K_PAGEDOWN 109
#define KEY_A 30 // select all in GUI-editbox
#define KEY_C 46 // copy in GUI-editbox
#define KEY_I 23 // console mode control key
#define KEY_M 50 // console mode control key
#define KEY_T 20 // console mode control key
#define KEY_V 47 // paste in GUI-editbox
#define KEY_W 17 // console mode control key
#define KEY_X 45 // cut from GUI-editbox
#define K_INSERT 110
#define K_DELETE 111
#define K_WIN_L 125
#define K_WIN_R 126
#define K_MENU 127
#define K_PAUSE 119
#define K_PRINT 99
#define K_CENTER 76
#elif defined(USE_SDL_MAINLOOP)
#include <SDL.h>
// FIXME
#define K_SHIFT_L SDLK_LSHIFT
#define K_SHIFT_R SDLK_RSHIFT
#define K_ALT_L SDLK_LALT
@ -114,62 +218,17 @@
#define K_MENU SDLK_MENU
#define K_PAGEUP SDLK_PAGEUP
#define K_PAGEDOWN SDLK_PAGEDOWN
#define KEY_M SDLK_m
#define KEY_T SDLK_t
#define KEY_W SDLK_w
#define KEY_I SDLK_i
#define KEY_C SDLK_c
#define KEY_V SDLK_v
#define KEY_X SDLK_x
#define KEY_A SDLK_a
#elif defined(USE_CONSOLE)
#define K_SHIFT_L 0
#define K_SHIFT_R 0
#define K_ALT_L 0
#define K_ALT_R 0
#define K_F1 0
#define K_F2 0
#define K_F3 0
#define K_F4 0
#define K_F5 0
#define K_F6 0
#define K_F7 0
#define K_F8 0
#define K_F9 0
#define K_F10 0
#define K_F11 0
#define K_F12 0
#define K_ADD 0
#define K_SUBTRACT 0
#define K_MULTIPLY 0
#define K_ESCAPE 0
#define K_PAUSE 0
#define K_TAB 0
#define K_RETURN 0
#define K_DELETE 0
#define K_INSERT 0
#define K_BACK 0
#define K_SPACE 0
#define K_UP 0
#define K_DOWN 0
#define K_LEFT 0
#define K_RIGHT 0
#define K_HOME 0
#define K_END 0
#define K_SCROLL 0
#define K_MENU 0
#define K_PAGEUP 0
#define K_PAGEDOWN 0
#define KEY_M 0
#define KEY_T 0
#define KEY_W 0
#define KEY_I 0
#define KEY_C 0
#define KEY_V 0
#define KEY_X 0
#define KEY_A 0
#define K_M SDLK_m
#define K_T SDLK_t
#define K_W SDLK_w
#define K_I SDLK_i
#define K_C SDLK_c
#define K_V SDLK_v
#define K_X SDLK_x
#define K_A SDLK_a
#elif defined(USE_COCOA)
#import "ObjectiveCAssociated.h"
// FIXME
// declare as extern variables and initialize them in StdMacWindow.mm so as to not include objc headers
const int CocoaKeycodeOffset = 300;
extern C4KeyCode K_SHIFT_L;
@ -209,14 +268,14 @@ extern C4KeyCode K_SCROLL;
extern C4KeyCode K_MENU;
extern C4KeyCode K_PAGEUP;
extern C4KeyCode K_PAGEDOWN;
extern C4KeyCode KEY_M;
extern C4KeyCode KEY_T;
extern C4KeyCode KEY_W;
extern C4KeyCode KEY_I;
extern C4KeyCode KEY_C;
extern C4KeyCode KEY_V;
extern C4KeyCode KEY_X;
extern C4KeyCode KEY_A;
extern C4KeyCode K_M;
extern C4KeyCode K_T;
extern C4KeyCode K_W;
extern C4KeyCode K_I;
extern C4KeyCode K_C;
extern C4KeyCode K_V;
extern C4KeyCode K_X;
extern C4KeyCode K_A;
#endif
#ifdef USE_X11

View File

@ -171,14 +171,14 @@ C4KeyCode K_SCROLL = 1000 + CocoaKeycodeOffset;
C4KeyCode K_MENU = 1000 + CocoaKeycodeOffset;
C4KeyCode K_PAGEUP = 116 + CocoaKeycodeOffset;
C4KeyCode K_PAGEDOWN = 121 + CocoaKeycodeOffset;
C4KeyCode KEY_M = 46 + CocoaKeycodeOffset;
C4KeyCode KEY_T = 17 + CocoaKeycodeOffset;
C4KeyCode KEY_W = 13 + CocoaKeycodeOffset;
C4KeyCode KEY_I = 34 + CocoaKeycodeOffset;
C4KeyCode KEY_C = 8 + CocoaKeycodeOffset;
C4KeyCode KEY_V = 9 + CocoaKeycodeOffset;
C4KeyCode KEY_X = 7 + CocoaKeycodeOffset;
C4KeyCode KEY_A = 0 + CocoaKeycodeOffset;
C4KeyCode K_M = 46 + CocoaKeycodeOffset;
C4KeyCode K_T = 17 + CocoaKeycodeOffset;
C4KeyCode K_W = 13 + CocoaKeycodeOffset;
C4KeyCode K_I = 34 + CocoaKeycodeOffset;
C4KeyCode K_C = 8 + CocoaKeycodeOffset;
C4KeyCode K_V = 9 + CocoaKeycodeOffset;
C4KeyCode K_X = 7 + CocoaKeycodeOffset;
C4KeyCode K_A = 0 + CocoaKeycodeOffset;
int MK_SHIFT = NSShiftKeyMask;
int MK_CONTROL = NSControlKeyMask;
int MK_ALT = NSAlternateKeyMask;

View File

@ -56,6 +56,44 @@
#define ConsoleDlgClassName L"C4GUIdlg"
#define ConsoleDlgWindowStyle (WS_VISIBLE | WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX)
/** Convert certain keys to unix scancodes (those that differ from unix scancodes) */
static void ConvertToUnixScancode(WPARAM wParam, C4KeyCode *scancode)
{
C4KeyCode &s = *scancode;
switch(wParam)
{
case VK_HOME: s = K_HOME; break;
case VK_END: s = K_END; break;
case VK_PRIOR: s = K_PAGEUP; break;
case VK_NEXT: s = K_PAGEDOWN; break;
case VK_UP: s = K_UP; break;
case VK_DOWN: s = K_DOWN; break;
case VK_LEFT: s = K_LEFT; break;
case VK_RIGHT: s = K_RIGHT; break;
case VK_CLEAR: s = K_CENTER; break;
case VK_INSERT: s = K_INSERT; break;
case VK_DELETE: s = K_DELETE; break;
case VK_LWIN: s = K_WIN_L; break;
case VK_RWIN: s = K_WIN_R; break;
case VK_MENU: s = K_MENU; break;
case VK_PAUSE: s = K_PAUSE; break;
case VK_PRINT: s = K_PRINT; break;
case VK_RCONTROL: s = K_CONTROL_R; break;
case VK_NUMLOCK: s = K_NUM; break;
case VK_NUMPAD1: s = K_NUM1; break;
case VK_NUMPAD2: s = K_NUM2; break;
case VK_NUMPAD3: s = K_NUM3; break;
case VK_NUMPAD4: s = K_NUM4; break;
case VK_NUMPAD5: s = K_NUM5; break;
case VK_NUMPAD6: s = K_NUM6; break;
case VK_NUMPAD7: s = K_NUM7; break;
case VK_NUMPAD8: s = K_NUM8; break;
case VK_NUMPAD9: s = K_NUM9; break;
case VK_NUMPAD0: s = K_NUM0; break;
}
}
LRESULT APIENTRY FullScreenWinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static bool NativeCursorShown = true;
@ -66,6 +104,7 @@ LRESULT APIENTRY FullScreenWinProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
// compute scancode
C4KeyCode scancode = (((unsigned int)lParam) >> 16) & 0xFF;
ConvertToUnixScancode(wParam, &scancode);
// Process message
switch (uMsg)