# HG changeset patch # User Sam Lantinga # Date 1204023028 0 # Node ID b1fd24d62e5502c15457dd597c28eab497c4550d # Parent be12463f31ea7b709a271012abc4a1485af1d1a4 Date: Tue, 05 Feb 2008 01:41:08 -0500 From: Mike Miscevic Subject: SDL and capslock/numlock Find attached a patch against SDL-1.2.13 for check of SDL_NO_LOCK_KEYS environment variable. This differs slightly from other patches I've seen in that it has 3 modes: Disable CAPS-LOCK and NUM-LOCK supression of down+up key events, suitable for games where the player needs these keys to do more than just toggle. A value of 1 will effect both CAPS-LOCK and NUM-LOCK. A value of 2 will effect only CAPS-LOCK. A value of 3 will effect only NUM-LOCK. All other values have no effect. This works for me and has been tested on: - Fedora 8 64-bit - SRCRPM SDL-1.2.13-1.fc8.src.rpm - Emeny Territory Quake Wars (ETQW), native 32-bit commercial game --Mike Miscevic diff -r be12463f31ea -r b1fd24d62e55 docs/html/sdlenvvars.html --- a/docs/html/sdlenvvars.html Mon Feb 04 17:22:56 2008 +0000 +++ b/docs/html/sdlenvvars.html Tue Feb 26 10:50:28 2008 +0000 @@ -670,6 +670,21 @@ >

If set, the linux fbcon driver will not use a mouse at all.

SDL_NO_LOCK_KEYS

Disable CAPS-LOCK and NUM-LOCK suppression of down+up key events, +suitable for games where the player needs these keys to do more than just toggle. +A value of 1 will effect both CAPS-LOCK and NUM-LOCK. +A value of 2 will effect only CAPS-LOCK. +A value of 3 will effect only NUM-LOCK. +All other values have no effect. +

mod = (SDLMod)modstate; break; case SDLK_CAPSLOCK: modstate ^= KMOD_CAPS; + if ( SDL_NoLockKeys & SDL_NLK_CAPS ) + break; if ( ! (modstate&KMOD_CAPS) ) state = SDL_RELEASED; keysym->mod = (SDLMod)modstate; @@ -440,7 +470,13 @@ case SDLK_UNKNOWN: break; case SDLK_NUMLOCK: + if ( SDL_NoLockKeys & SDL_NLK_NUM ) + break; + /* Only send keydown events */ + return(0); case SDLK_CAPSLOCK: + if ( SDL_NoLockKeys & SDL_NLK_CAPS ) + break; /* Only send keydown events */ return(0); case SDLK_LCTRL: