From: Sam Lantinga
Subject: SDL 1.3 keyboard plan
After lots of discussion with Christian, this is what we came up with:
> So, to sum up...
> SDLK_* become the physical keys, starting at > (1<<21)
> We create a macro SDLK_INDEX(X)
> We have two functions SDL_GetLayoutKey(SDLKey) and SDL_GetKeyName()
> SDL_GetLayoutKey maps to UCS4 for printable characters, and SDLK* for
non-printable characters
> and does so based on the OS's current keyboard layout
> SDL_GetKeyName() handles both SDLK_* and UCS4, converting UCS4 to UTF-8 and
converting SDLK_* into our names, which are UTF-8 for printable characters.
> WASD folks use SDLK_*, and 'I' folks use SDL_GetLayoutKey(SDLK_*)
Here is the patch he came up with, and his e-mail about it:
Date: Fri, 17 Aug 2007 19:50:28 +0200
From: Christian Walther
Subject: Re: SDL 1.3 keyboard plan
> Sounds great, go ahead and send me a patch.
Here goes! Thanks for having a look. Don't hesitate to comment if
anything does not conform to your ideas.
One caveat: Committing this now may break compilability of some video
drivers - specifically, if they use any of the SDLK_* codes that were
obsoleted and moved into SDL_compat.h. I only tried Cocoa (which did
break, but is already fixed) and X11 (which didn't, but then its key
handling is #iffed out). If that's a problem, it may need to go into
a branch.
-Christian
--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402630
These are test programs for the SDL library:
checkkeys Watch the key events to check the keyboard
graywin Display a gray gradient and center mouse on spacebar
loopwave Audio test -- loop playing a WAV file
testalpha Display an alpha faded icon -- paint with mouse
testaudioinfo Lists audio device capabilities
testbitmap Test displaying 1-bit bitmaps
testblitspeed Tests performance of SDL's blitters and converters.
testcdrom Sample audio CD control program
testcursor Tests custom mouse cursor
testdyngl Tests dynamically loading OpenGL library
testerror Tests multi-threaded error handling
testfile Tests RWops layer
testgamma Tests video device gamma ramp
testgl A very simple example of using OpenGL with SDL
testgl2 Improved version of testgl
testhread Hacked up test of multi-threading
testiconv Tests international string conversion
testjoystick List joysticks and watch joystick events
testkeys List the available keyboard keys
testloadso Tests the loadable library layer
testlock Hacked up test of multi-threading and locking
testmultiaudio Tests using several audio devices
testoverlay Tests the software/hardware overlay functionality.
testoverlay2 Tests the overlay flickering/scaling during playback.
testpalette Tests palette color cycling
testplatform Tests types, endianness and cpu capabilities
testsem Tests SDL's semaphore implementation
testsprite Example of fast sprite movement on the screen
testsprite2 Improved version of testsprite
testtimer Test the timer facilities
testver Check the version and dynamic loading and endianness
testvidinfo Show the pixel format of the display and perfom the benchmark
testwin Display a BMP image at various depths
testwm Test window manager -- title, icon, events
testwm2 Improved version of testwm
threadwin Test multi-threaded event handling
torturethread Simple test for thread creation/destruction