From 72739e8cd851152c561c8be5ee8def89d1e0fa40 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 12 Jan 2016 22:29:36 +0100 Subject: [PATCH 1/7] Allow setting CMD as shortcut key --- data/language/english_uk.txt | 1 + src/input.c | 9 +++++++++ src/interface/keyboard_shortcut.c | 4 ++++ src/localisation/string_ids.h | 2 ++ 4 files changed, 16 insertions(+) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 6471f6ea13..6d6d35104e 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3971,6 +3971,7 @@ STR_5629 :Difficulty level STR_5630 :Enable unlocking of scenarios STR_5631 :Original DLC Parks STR_5632 :Build your own... +STR_5633 :CMD + ############# # Scenarios # diff --git a/src/input.c b/src/input.c index ece14f9867..e31076e493 100644 --- a/src/input.c +++ b/src/input.c @@ -1391,6 +1391,8 @@ void title_handle_keyboard_input() gInputPlaceObjectModifier |= PLACE_OBJECT_MODIFIER_COPY_Z; if (gKeysState[SDL_SCANCODE_LALT] || gKeysState[SDL_SCANCODE_RALT]) gInputPlaceObjectModifier |= 4; + if (gKeysState[SDL_SCANCODE_LGUI] || gKeysState[SDL_SCANCODE_RGUI]) + gInputPlaceObjectModifier |= 8; } } @@ -1451,6 +1453,9 @@ void game_handle_keyboard_input() if (gKeysState[SDL_SCANCODE_LALT] || gKeysState[SDL_SCANCODE_RALT]) { gInputPlaceObjectModifier |= 4; } + if (gKeysState[SDL_SCANCODE_LGUI] || gKeysState[SDL_SCANCODE_RGUI]) { + gInputPlaceObjectModifier |= 8; + } game_handle_key_scroll(); } } @@ -1634,6 +1639,7 @@ void game_handle_key_scroll() const int SHIFT = 0x100; const int CTRL = 0x200; const int ALT = 0x400; + const int CMD = 0x800; uint16 shortcutKey = gShortcutKeys[shortcutId]; uint8 scancode = shortcutKey & 0xFF; @@ -1650,6 +1656,9 @@ void game_handle_key_scroll() if (shortcutKey & ALT) { if (!gKeysState[SDL_SCANCODE_LALT] && !gKeysState[SDL_SCANCODE_RALT]) continue; } + if (shortcutKey & CMD) { + if (!gKeysState[SDL_SCANCODE_LGUI] && !gKeysState[SDL_SCANCODE_RGUI]) continue; + } switch (shortcutId) { case SHORTCUT_SCROLL_MAP_UP: diff --git a/src/interface/keyboard_shortcut.c b/src/interface/keyboard_shortcut.c index 7308fac0eb..80e4ca77e2 100644 --- a/src/interface/keyboard_shortcut.c +++ b/src/interface/keyboard_shortcut.c @@ -100,6 +100,10 @@ void keyboard_shortcut_format_string(char *buffer, uint16 shortcutKey) format_string(formatBuffer, STR_ALT_PLUS, NULL); strcat(buffer, formatBuffer); } + if (shortcutKey & 0x800) { + format_string(formatBuffer, STR_CMD_PLUS, NULL); + strcat(buffer, formatBuffer); + } strcat(buffer, SDL_GetScancodeName(shortcutKey & 0xFF)); } diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index d5369a1f9e..24e5f2750c 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2256,6 +2256,8 @@ enum { STR_DLC_PARKS = 5631, STR_BUILD_YOUR_OWN_PARKS = 5632, + + STR_CMD_PLUS = 5633, // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 From dd8239f684405318b4ee451095ae11323acf4fe4 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 12 Jan 2016 22:52:34 +0100 Subject: [PATCH 2/7] Add space after 'CMD + ' --- data/language/english_uk.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 6d6d35104e..eb6ebcc909 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3971,7 +3971,7 @@ STR_5629 :Difficulty level STR_5630 :Enable unlocking of scenarios STR_5631 :Original DLC Parks STR_5632 :Build your own... -STR_5633 :CMD + +STR_5633 :CMD + ############# # Scenarios # From 623952d96631010cce9f4b39e19a04b840c9a650 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 12 Jan 2016 22:53:01 +0100 Subject: [PATCH 3/7] Only perform command key state detection on OS X --- src/input.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/input.c b/src/input.c index e31076e493..34a4fc4e10 100644 --- a/src/input.c +++ b/src/input.c @@ -1391,8 +1391,11 @@ void title_handle_keyboard_input() gInputPlaceObjectModifier |= PLACE_OBJECT_MODIFIER_COPY_Z; if (gKeysState[SDL_SCANCODE_LALT] || gKeysState[SDL_SCANCODE_RALT]) gInputPlaceObjectModifier |= 4; - if (gKeysState[SDL_SCANCODE_LGUI] || gKeysState[SDL_SCANCODE_RGUI]) +#if defined(__APPLE__) && defined(__MACH__) + if (gKeysState[SDL_SCANCODE_LGUI] || gKeysState[SDL_SCANCODE_RGUI]) { gInputPlaceObjectModifier |= 8; + } +#endif } } @@ -1453,9 +1456,11 @@ void game_handle_keyboard_input() if (gKeysState[SDL_SCANCODE_LALT] || gKeysState[SDL_SCANCODE_RALT]) { gInputPlaceObjectModifier |= 4; } +#if defined(__APPLE__) && defined(__MACH__) if (gKeysState[SDL_SCANCODE_LGUI] || gKeysState[SDL_SCANCODE_RGUI]) { gInputPlaceObjectModifier |= 8; } +#endif game_handle_key_scroll(); } } @@ -1656,9 +1661,11 @@ void game_handle_key_scroll() if (shortcutKey & ALT) { if (!gKeysState[SDL_SCANCODE_LALT] && !gKeysState[SDL_SCANCODE_RALT]) continue; } +#if defined(__APPLE__) && defined(__MACH__) if (shortcutKey & CMD) { if (!gKeysState[SDL_SCANCODE_LGUI] && !gKeysState[SDL_SCANCODE_RGUI]) continue; } +#endif switch (shortcutId) { case SHORTCUT_SCROLL_MAP_UP: From 2d53c283423155ce79f75adeefe743d582a7d014 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 12 Jan 2016 22:59:29 +0100 Subject: [PATCH 4/7] Use CMD for default shortcuts on OS X --- src/config.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/config.c b/src/config.c index 0dc2392771..02c8729e2c 100644 --- a/src/config.c +++ b/src/config.c @@ -894,6 +894,7 @@ void config_apply_to_old_addresses() #define SHIFT 0x100 #define CTRL 0x200 #define ALT 0x400 +#define CMD 0x800 // Current keyboard shortcuts uint16 gShortcutKeys[SHORTCUT_COUNT]; @@ -932,19 +933,31 @@ static const uint16 _defaultShortcutKeys[SHORTCUT_COUNT] = { SDL_SCANCODE_S, // SHORTCUT_SHOW_STAFF_LIST SDL_SCANCODE_M, // SHORTCUT_SHOW_RECENT_MESSAGES SDL_SCANCODE_TAB, // SHORTCUT_SHOW_MAP +#if defined(__APPLE__) && defined(__MACH__) + CMD | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT +#else CTRL | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT +#endif // New SDL_SCANCODE_MINUS, // SHORTCUT_REDUCE_GAME_SPEED, SDL_SCANCODE_EQUALS, // SHORTCUT_INCREASE_GAME_SPEED, +#if defined(__APPLE__) && defined(__MACH__) + CMD | ALT | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, +#else CTRL | ALT | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, +#endif SDL_SCANCODE_T, // SHORTCUT_REMOVE_TOP_BOTTOM_TOOLBAR_TOGGLE, SDL_SCANCODE_UP, // SHORTCUT_SCROLL_MAP_UP SDL_SCANCODE_LEFT, // SHORTCUT_SCROLL_MAP_LEFT SDL_SCANCODE_DOWN, // SHORTCUT_SCROLL_MAP_DOWN SDL_SCANCODE_RIGHT, // SHORTCUT_SCROLL_MAP_RIGHT SDL_SCANCODE_C, // SHORTCUT_OPEN_CHAT_WINDOW +#if defined(__APPLE__) && defined(__MACH__) + CMD | SDL_SCANCODE_F10, // SHORTCUT_QUICK_SAVE_GAME +#else CTRL | SDL_SCANCODE_F10, // SHORTCUT_QUICK_SAVE_GAME +#endif }; #define SHORTCUT_FILE_VERSION 1 From a85b2d3982c714d3ed4229b69a215fdc25382ecd Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 12 Jan 2016 23:05:03 +0100 Subject: [PATCH 5/7] Show ALT as OPTION in keyboard shortcut list --- data/language/english_uk.txt | 1 + src/interface/keyboard_shortcut.c | 4 ++++ src/localisation/string_ids.h | 1 + 3 files changed, 6 insertions(+) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index eb6ebcc909..d83f63383f 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3972,6 +3972,7 @@ STR_5630 :Enable unlocking of scenarios STR_5631 :Original DLC Parks STR_5632 :Build your own... STR_5633 :CMD + +STR_5634 :OPTION + ############# # Scenarios # diff --git a/src/interface/keyboard_shortcut.c b/src/interface/keyboard_shortcut.c index 80e4ca77e2..5462b90311 100644 --- a/src/interface/keyboard_shortcut.c +++ b/src/interface/keyboard_shortcut.c @@ -97,7 +97,11 @@ void keyboard_shortcut_format_string(char *buffer, uint16 shortcutKey) strcat(buffer, formatBuffer); } if (shortcutKey & 0x400) { +#if defined(__APPLE__) && defined(__MACH__) + format_string(formatBuffer, STR_OPTION_PLUS, NULL); +#else format_string(formatBuffer, STR_ALT_PLUS, NULL); +#endif strcat(buffer, formatBuffer); } if (shortcutKey & 0x800) { diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 24e5f2750c..3556161df2 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2258,6 +2258,7 @@ enum { STR_BUILD_YOUR_OWN_PARKS = 5632, STR_CMD_PLUS = 5633, + STR_OPTION_PLUS = 5634, // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 From df9880247ae3d6195ef6791a6f6cf984d8fedbe4 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 12 Jan 2016 23:18:24 +0100 Subject: [PATCH 6/7] Add bugfix to changelog --- distribution/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 272cd5ce07..7900817804 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -15,6 +15,7 @@ - Fix: [#2650] Server did not validate actions send from clients (caused error box and desynchronisation) - Fix: [#2651] Ride was not removed when multiplayer client aborted ride construction. - Fix: [#2654] Free transport rides can prevent guests from properly leaving the park +- Fix: [#2704] OSX Command Key not read for keyboard shortcuts. 0.0.3.1-beta (2015-12-04) ------------------------------------------------------------------------ From 138f0139c81e93dfcf600649ff98ba663ff048fb Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Wed, 13 Jan 2016 11:06:25 +0100 Subject: [PATCH 7/7] Add `PLATFORM_MODIFIER` as alias for CMD/CTRL --- src/config.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/config.c b/src/config.c index 02c8729e2c..7782719945 100644 --- a/src/config.c +++ b/src/config.c @@ -895,6 +895,11 @@ void config_apply_to_old_addresses() #define CTRL 0x200 #define ALT 0x400 #define CMD 0x800 +#if defined(__APPLE__) && defined(__MACH__) + #define PLATFORM_MODIFIER CMD +#else + #define PLATFORM_MODIFIER CTRL +#endif // Current keyboard shortcuts uint16 gShortcutKeys[SHORTCUT_COUNT]; @@ -933,31 +938,19 @@ static const uint16 _defaultShortcutKeys[SHORTCUT_COUNT] = { SDL_SCANCODE_S, // SHORTCUT_SHOW_STAFF_LIST SDL_SCANCODE_M, // SHORTCUT_SHOW_RECENT_MESSAGES SDL_SCANCODE_TAB, // SHORTCUT_SHOW_MAP -#if defined(__APPLE__) && defined(__MACH__) - CMD | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT -#else - CTRL | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT -#endif + PLATFORM_MODIFIER | SDL_SCANCODE_S, // SHORTCUT_SCREENSHOT // New SDL_SCANCODE_MINUS, // SHORTCUT_REDUCE_GAME_SPEED, SDL_SCANCODE_EQUALS, // SHORTCUT_INCREASE_GAME_SPEED, -#if defined(__APPLE__) && defined(__MACH__) - CMD | ALT | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, -#else - CTRL | ALT | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, -#endif + PLATFORM_MODIFIER | ALT | SDL_SCANCODE_C, // SHORTCUT_OPEN_CHEAT_WINDOW, SDL_SCANCODE_T, // SHORTCUT_REMOVE_TOP_BOTTOM_TOOLBAR_TOGGLE, SDL_SCANCODE_UP, // SHORTCUT_SCROLL_MAP_UP SDL_SCANCODE_LEFT, // SHORTCUT_SCROLL_MAP_LEFT SDL_SCANCODE_DOWN, // SHORTCUT_SCROLL_MAP_DOWN SDL_SCANCODE_RIGHT, // SHORTCUT_SCROLL_MAP_RIGHT SDL_SCANCODE_C, // SHORTCUT_OPEN_CHAT_WINDOW -#if defined(__APPLE__) && defined(__MACH__) - CMD | SDL_SCANCODE_F10, // SHORTCUT_QUICK_SAVE_GAME -#else - CTRL | SDL_SCANCODE_F10, // SHORTCUT_QUICK_SAVE_GAME -#endif + PLATFORM_MODIFIER | SDL_SCANCODE_F10, // SHORTCUT_QUICK_SAVE_GAME }; #define SHORTCUT_FILE_VERSION 1