diff --git a/share/grafx2/skins/font_Classic.png b/share/grafx2/skins/font_Classic.png index cdb07016..56379f68 100644 Binary files a/share/grafx2/skins/font_Classic.png and b/share/grafx2/skins/font_Classic.png differ diff --git a/share/grafx2/skins/font_DPaint.png b/share/grafx2/skins/font_DPaint.png index f9e89c22..cbc90df3 100644 Binary files a/share/grafx2/skins/font_DPaint.png and b/share/grafx2/skins/font_DPaint.png differ diff --git a/share/grafx2/skins/font_Fairlight.png b/share/grafx2/skins/font_Fairlight.png index f5ca8af9..d892df6f 100644 Binary files a/share/grafx2/skins/font_Fairlight.png and b/share/grafx2/skins/font_Fairlight.png differ diff --git a/share/grafx2/skins/font_Fun.png b/share/grafx2/skins/font_Fun.png index 6d3b5667..3eea4a3e 100644 Binary files a/share/grafx2/skins/font_Fun.png and b/share/grafx2/skins/font_Fun.png differ diff --git a/share/grafx2/skins/font_Melon.png b/share/grafx2/skins/font_Melon.png index 7ae30253..56e6c54f 100644 Binary files a/share/grafx2/skins/font_Melon.png and b/share/grafx2/skins/font_Melon.png differ diff --git a/share/grafx2/skins/font_Seen.png b/share/grafx2/skins/font_Seen.png index 85f82d56..253bd05a 100644 Binary files a/share/grafx2/skins/font_Seen.png and b/share/grafx2/skins/font_Seen.png differ diff --git a/share/grafx2/skins/skin_Aurora.png b/share/grafx2/skins/skin_Aurora.png index d99bb883..adf12573 100644 Binary files a/share/grafx2/skins/skin_Aurora.png and b/share/grafx2/skins/skin_Aurora.png differ diff --git a/share/grafx2/skins/skin_DPaint.png b/share/grafx2/skins/skin_DPaint.png index 5d1ff28d..495572ee 100644 Binary files a/share/grafx2/skins/skin_DPaint.png and b/share/grafx2/skins/skin_DPaint.png differ diff --git a/share/grafx2/skins/skin_classic.png b/share/grafx2/skins/skin_classic.png index 9221a6fe..a0cc86ac 100644 Binary files a/share/grafx2/skins/skin_classic.png and b/share/grafx2/skins/skin_classic.png differ diff --git a/share/grafx2/skins/skin_modern.png b/share/grafx2/skins/skin_modern.png index 6b75292b..66ec4083 100644 Binary files a/share/grafx2/skins/skin_modern.png and b/share/grafx2/skins/skin_modern.png differ diff --git a/share/grafx2/skins/skin_scenish.png b/share/grafx2/skins/skin_scenish.png index eaf84ae5..22802117 100644 Binary files a/share/grafx2/skins/skin_scenish.png and b/share/grafx2/skins/skin_scenish.png differ diff --git a/src/hotkeys.c b/src/hotkeys.c index 4ecd9b58..950c31e3 100644 --- a/src/hotkeys.c +++ b/src/hotkeys.c @@ -620,7 +620,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { "", true, SDLK_b, // B - 0}, + #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + SDLK_C|MOD_META // Right-Amiga + C + #else + 0 + #endif + }, {68, "\"Lasso\" brush grabbing", "Allows you to pick a brush defined", @@ -844,7 +849,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { "path-name.", true, SDLK_F2, // F2 - 0}, + #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + SDLK_A|MOD_META // Right-Amiga + A + #else + 0 + #endif + }, {96, "Save picture", "Saves your picture with the last", @@ -852,7 +862,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { "", true, SDLK_F2|MOD_SHIFT, // Shift + F2 - 0}, + #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + SDLK_S|MOD_META // Right-Amiga + S + #else + 0 + #endif + }, {97, "Load picture", "Opens a file-selector that allows", @@ -860,7 +875,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { "", true, SDLK_F3, // F3 - 0}, + #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + SDLK_O|MOD_META // Right-Amiga + O + #else + 0 + #endif + }, {98, "Re-load picture", "Re-load the current picture. This", @@ -905,8 +925,10 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { (KEY_JOYBUTTON+JOY_BUTTON_I) #elif defined (__WIZ__) (KEY_JOYBUTTON+JOY_BUTTON_L) + #elif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + SDLK_Z|MOD_META // Right-Amiga + Z #else - 0 + 0 #endif // -- }, @@ -963,8 +985,10 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = { (KEY_JOYBUTTON+JOY_BUTTON_HOME) #elif defined (__WIZ__) (KEY_JOYBUTTON+JOY_BUTTON_MENU) + #eif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + SDLK_Q|MOD_META // Right-Amiga + Q #else - 0 + 0 #endif // -- diff --git a/src/input.c b/src/input.c index 70a981b5..b1aa3c8f 100644 --- a/src/input.c +++ b/src/input.c @@ -38,6 +38,16 @@ #include "input.h" #include "loadsave.h" + +#define RSUPER_EMULATES_META_MOD +// Keyboards with a Super key never seem to have a Meta key at the same time. +// This setting allows the right 'Super' key (the one with a 'Windows' or +// 'Amiga' label to be used as a modifier instead of a normal key. +// This feature is especially useful for AROS where applications should use +// generic defaults like "Right Amiga+Q = Quit". +// In case this is annoying for some platforms, disable it. +#endif + void Handle_window_resize(SDL_ResizeEvent event); void Handle_window_exit(SDL_QuitEvent event); int Color_cycling(void); @@ -410,6 +420,13 @@ int Handle_key_press(SDL_KeyboardEvent event) return Move_cursor_with_constraints(); } } + #ifdef RSUPER_EMULATES_META_MOD + if (Key==SDLK_RSUPER) + { + SDL_SetModState(SDL_GetModState() | KMOD_META); + Key=0; + } + #endif if(Is_shortcut(Key,SPECIAL_MOUSE_UP)) { @@ -548,6 +565,13 @@ int Handle_key_release(SDL_KeyboardEvent event) modifier=MOD_ALT; break; + #ifdef RSUPER_EMULATES_META_MOD + case SDLK_RSUPER: + SDL_SetModState(SDL_GetModState() & ~KMOD_META); + modifier=MOD_META; + break; + #endif + case SDLK_RMETA: case SDLK_LMETA: modifier=MOD_META; diff --git a/src/keyboard.c b/src/keyboard.c index 584d20fb..d3e12ca5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -25,6 +25,19 @@ #include "global.h" #include "keyboard.h" +#if defined(__macosx__) + // Apple's "command" character is not present in the ANSI table, so we + // recycled an ANSI value that doesn't have any displayable character + // associated. + #define META_KEY_PREFIX "\201" +#elif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) + // 'Amiga' key: an outlined uppercase A. Drawn on 2 unused characters. + #define META_KEY_PREFIX "\215\216" +#else + // All other platforms + #define META_KEY_PREFIX "Super+" +#endif + // Table de correspondance des scancode de clavier IBM PC AT vers // les symboles de touches SDL (sym). // La correspondance est bonne si le clavier est QWERTY US, ou si @@ -458,11 +471,7 @@ const char * Key_name(word key) if (key & MOD_SHIFT) strcat(buffer, "Shift+"); if (key & MOD_META) - strcat(buffer, "\201"); - // Note: Apple's "command" character is not present in the ANSI table, so we - // recycled an ANSI value that doesn't have any displayable character - // associated. - + strcat(buffer, META_KEY_PREFIX); key=key & ~(MOD_CTRL|MOD_ALT|MOD_SHIFT);