Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > by-pkgid > 3209b92216f62dc33e26d8a6c8033bab > files > 6

SDL12-1.2.13-10.2mdv2009.0.src.rpm

--- SDL-1.2.10/src/events/SDL_keyboard.c.lock	2006-05-04 07:06:02.000000000 +0200
+++ SDL-1.2.10/src/events/SDL_keyboard.c	2006-05-20 17:22:14.000000000 +0200
@@ -32,6 +32,7 @@
 /* Global keystate information */
 static Uint8  SDL_KeyState[SDLK_LAST];
 static SDLMod SDL_ModState;
+static char *SDL_UseLockKeys;
 int SDL_TranslateUNICODE = 0;
 
 static const char *keynames[SDLK_LAST];	/* Array of keycode names */
@@ -64,6 +65,7 @@ int SDL_KeyboardInit(void)
 	video->InitOSKeymap(this);
 
 	SDL_EnableKeyRepeat(0, 0);
+	SDL_UseLockKeys = getenv("SDL_DISABLE_LOCK_KEYS");
 
 	/* Fill in the blanks in keynames */
 	keynames[SDLK_BACKSPACE] = "backspace";
@@ -375,6 +377,7 @@ int SDL_PrivateKeyboard(Uint8 state, SDL
 	SDL_Event event;
 	int posted, repeatable;
 	Uint16 modstate;
+	int use_lock_keys;
 
 	SDL_memset(&event, 0, sizeof(event));
 
@@ -386,6 +389,7 @@ printf("The '%s' key has been %s\n", SDL
 	modstate = (Uint16)SDL_ModState;
 
 	repeatable = 0;
+	use_lock_keys = ( SDL_UseLockKeys && *SDL_UseLockKeys );
 
 	if ( state == SDL_PRESSED ) {
 		keysym->mod = (SDLMod)modstate;
@@ -393,12 +397,16 @@ printf("The '%s' key has been %s\n", SDL
 			case SDLK_UNKNOWN:
 				break;
 			case SDLK_NUMLOCK:
+				if ( ! use_lock_keys )
+					break;
 				modstate ^= KMOD_NUM;
 				if ( ! (modstate&KMOD_NUM) )
 					state = SDL_RELEASED;
 				keysym->mod = (SDLMod)modstate;
 				break;
 			case SDLK_CAPSLOCK:
+				if ( ! use_lock_keys )
+					break;
 				modstate ^= KMOD_CAPS;
 				if ( ! (modstate&KMOD_CAPS) )
 					state = SDL_RELEASED;
@@ -441,6 +449,8 @@ printf("The '%s' key has been %s\n", SDL
 				break;
 			case SDLK_NUMLOCK:
 			case SDLK_CAPSLOCK:
+				if (! use_lock_keys )
+					break;
 				/* Only send keydown events */
 				return(0);
 			case SDLK_LCTRL: