Issue 497: Right-Windows key (aka Right-Super key) now acts as the Meta modifier. Meta modifier is now labelled A (specific graphic) on AROS and Super on all platforms besides OSX which has its own character. Added a few defaults AROS-specific secondary default shortcuts.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@2016 416bcca6-2ee7-4201-b75f-2eb2f807beb1
| 
		 Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB  | 
| 
		 Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB  | 
| 
		 Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB  | 
| 
		 Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB  | 
| 
		 Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB  | 
| 
		 Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.6 KiB  | 
| 
		 Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB  | 
| 
		 Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB  | 
| 
		 Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB  | 
| 
		 Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB  | 
| 
		 Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB  | 
@ -620,7 +620,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "",
 | 
					  "",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
  SDLK_b, // B
 | 
					  SDLK_b, // B
 | 
				
			||||||
  0},
 | 
					  #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
 | 
				
			||||||
 | 
					  SDLK_C|MOD_META // Right-Amiga + C
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					  0
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {68,
 | 
					  {68,
 | 
				
			||||||
  "\"Lasso\" brush grabbing",
 | 
					  "\"Lasso\" brush grabbing",
 | 
				
			||||||
  "Allows you to pick a brush defined",
 | 
					  "Allows you to pick a brush defined",
 | 
				
			||||||
@ -844,7 +849,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "path-name.",
 | 
					  "path-name.",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
  SDLK_F2, // F2
 | 
					  SDLK_F2, // F2
 | 
				
			||||||
  0},
 | 
					  #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
 | 
				
			||||||
 | 
					  SDLK_A|MOD_META // Right-Amiga + A
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					  0
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {96,
 | 
					  {96,
 | 
				
			||||||
  "Save picture",
 | 
					  "Save picture",
 | 
				
			||||||
  "Saves your picture with the last",
 | 
					  "Saves your picture with the last",
 | 
				
			||||||
@ -852,7 +862,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "",
 | 
					  "",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
  SDLK_F2|MOD_SHIFT, // Shift + F2
 | 
					  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,
 | 
					  {97,
 | 
				
			||||||
  "Load picture",
 | 
					  "Load picture",
 | 
				
			||||||
  "Opens a file-selector that allows",
 | 
					  "Opens a file-selector that allows",
 | 
				
			||||||
@ -860,7 +875,12 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "",
 | 
					  "",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
  SDLK_F3, // F3
 | 
					  SDLK_F3, // F3
 | 
				
			||||||
  0},
 | 
					  #if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
 | 
				
			||||||
 | 
					  SDLK_O|MOD_META // Right-Amiga + O
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					  0
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  {98,
 | 
					  {98,
 | 
				
			||||||
  "Re-load picture",
 | 
					  "Re-load picture",
 | 
				
			||||||
  "Re-load the current picture. This",
 | 
					  "Re-load the current picture. This",
 | 
				
			||||||
@ -905,8 +925,10 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
    (KEY_JOYBUTTON+JOY_BUTTON_I)
 | 
					    (KEY_JOYBUTTON+JOY_BUTTON_I)
 | 
				
			||||||
  #elif defined (__WIZ__)
 | 
					  #elif defined (__WIZ__)
 | 
				
			||||||
    (KEY_JOYBUTTON+JOY_BUTTON_L)
 | 
					    (KEY_JOYBUTTON+JOY_BUTTON_L)
 | 
				
			||||||
 | 
					  #elif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
 | 
				
			||||||
 | 
					  SDLK_Z|MOD_META // Right-Amiga + Z
 | 
				
			||||||
  #else
 | 
					  #else
 | 
				
			||||||
    0
 | 
					  0
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  // --
 | 
					  // --
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
@ -963,8 +985,10 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
    (KEY_JOYBUTTON+JOY_BUTTON_HOME)
 | 
					    (KEY_JOYBUTTON+JOY_BUTTON_HOME)
 | 
				
			||||||
  #elif defined (__WIZ__)
 | 
					  #elif defined (__WIZ__)
 | 
				
			||||||
    (KEY_JOYBUTTON+JOY_BUTTON_MENU)
 | 
					    (KEY_JOYBUTTON+JOY_BUTTON_MENU)
 | 
				
			||||||
 | 
					  #eif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
 | 
				
			||||||
 | 
					  SDLK_Q|MOD_META // Right-Amiga + Q
 | 
				
			||||||
  #else
 | 
					  #else
 | 
				
			||||||
    0
 | 
					  0
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  // --
 | 
					  // --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										24
									
								
								src/input.c
									
									
									
									
									
								
							
							
						
						@ -38,6 +38,16 @@
 | 
				
			|||||||
#include "input.h"
 | 
					#include "input.h"
 | 
				
			||||||
#include "loadsave.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_resize(SDL_ResizeEvent event);
 | 
				
			||||||
void Handle_window_exit(SDL_QuitEvent event);
 | 
					void Handle_window_exit(SDL_QuitEvent event);
 | 
				
			||||||
int Color_cycling(void);
 | 
					int Color_cycling(void);
 | 
				
			||||||
@ -410,6 +420,13 @@ int Handle_key_press(SDL_KeyboardEvent event)
 | 
				
			|||||||
        return Move_cursor_with_constraints();
 | 
					        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))
 | 
					    if(Is_shortcut(Key,SPECIAL_MOUSE_UP))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -548,6 +565,13 @@ int Handle_key_release(SDL_KeyboardEvent event)
 | 
				
			|||||||
        modifier=MOD_ALT;
 | 
					        modifier=MOD_ALT;
 | 
				
			||||||
        break;
 | 
					        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_RMETA:
 | 
				
			||||||
      case SDLK_LMETA:
 | 
					      case SDLK_LMETA:
 | 
				
			||||||
        modifier=MOD_META;
 | 
					        modifier=MOD_META;
 | 
				
			||||||
 | 
				
			|||||||
@ -25,6 +25,19 @@
 | 
				
			|||||||
#include "global.h"
 | 
					#include "global.h"
 | 
				
			||||||
#include "keyboard.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
 | 
					// Table de correspondance des scancode de clavier IBM PC AT vers
 | 
				
			||||||
// les symboles de touches SDL (sym).
 | 
					// les symboles de touches SDL (sym).
 | 
				
			||||||
// La correspondance est bonne si le clavier est QWERTY US, ou si
 | 
					// 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)
 | 
					  if (key & MOD_SHIFT)
 | 
				
			||||||
    strcat(buffer, "Shift+");
 | 
					    strcat(buffer, "Shift+");
 | 
				
			||||||
  if (key & MOD_META)
 | 
					  if (key & MOD_META)
 | 
				
			||||||
    strcat(buffer, "\201");
 | 
					    strcat(buffer, META_KEY_PREFIX);
 | 
				
			||||||
  // 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.
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  key=key & ~(MOD_CTRL|MOD_ALT|MOD_SHIFT);
 | 
					  key=key & ~(MOD_CTRL|MOD_ALT|MOD_SHIFT);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
				
			|||||||