diff -ur orig/SDL-1.2.14/include/SDL_keysym.h SDL-1.2.14/include/SDL_keysym.h
--- orig/SDL-1.2.14/include/SDL_keysym.h	2009-10-13 00:07:19.000000000 +0100
+++ SDL-1.2.14/include/SDL_keysym.h	2010-02-13 20:00:39.000000000 +0000
@@ -296,11 +296,21 @@
 	SDLK_UNDO		= 322,		/**< Atari keyboard has Undo */
         /*@}*/
 
+	/* Windows CE soft keys */
+	SDLK_APP1               = 323,
+	SDLK_APP2               = 324,
+	SDLK_APP3               = 325,
+	SDLK_APP4               = 326,
+	SDLK_APP5               = 327,
+	SDLK_APP6               = 328,
+
 	/* Add any other keys here */
 
 	SDLK_LAST
 } SDLKey;
 
+#define SDL_HAVE_APP_KEYS 1
+
 /** Enumeration of valid key mods (possibly OR'd together) */
 typedef enum {
 	KMOD_NONE  = 0x0000,
diff -ur orig/SDL-1.2.14/src/events/SDL_keyboard.c SDL-1.2.14/src/events/SDL_keyboard.c
--- orig/SDL-1.2.14/src/events/SDL_keyboard.c	2009-10-13 00:07:14.000000000 +0100
+++ SDL-1.2.14/src/events/SDL_keyboard.c	2010-02-13 19:58:38.000000000 +0000
@@ -331,6 +331,13 @@
 	keynames[SDLK_EURO] = "euro";
 	keynames[SDLK_UNDO] = "undo";
 
+	keynames[SDLK_APP1] = "application 1";
+	keynames[SDLK_APP2] = "application 2";
+	keynames[SDLK_APP3] = "application 3";
+	keynames[SDLK_APP4] = "application 4";
+	keynames[SDLK_APP5] = "application 5";
+	keynames[SDLK_APP6] = "application 6";
+
 	/* Done.  Whew. */
 	return(0);
 }
diff -ur orig/SDL-1.2.14/src/video/windib/SDL_dibevents.c SDL-1.2.14/src/video/windib/SDL_dibevents.c
--- orig/SDL-1.2.14/src/video/windib/SDL_dibevents.c	2009-10-17 17:59:12.000000000 +0100
+++ SDL-1.2.14/src/video/windib/SDL_dibevents.c	2010-02-13 20:02:51.000000000 +0000
@@ -530,6 +530,12 @@
 	VK_keymap[VK_SNAPSHOT] = SDLK_PRINT;
 	VK_keymap[VK_CANCEL] = SDLK_BREAK;
 	VK_keymap[VK_APPS] = SDLK_MENU;
+	VK_keymap[VK_APP1] = SDLK_APP1;
+	VK_keymap[VK_APP2] = SDLK_APP2;
+	VK_keymap[VK_APP3] = SDLK_APP3;
+	VK_keymap[VK_APP4] = SDLK_APP4;
+	VK_keymap[VK_APP5] = SDLK_APP5;
+	VK_keymap[VK_APP6] = SDLK_APP6;
 
 	Arrows_keymap[3] = 0x25;
 	Arrows_keymap[2] = 0x26;

