shithub: choc

Download patch

ref: 779a2157c0e5afe358b03c8236e88a661b35bca0
parent: 3a4db2509420fa89c2ee940cc0998d0d614d63a5
author: Simon Howard <fraggle@gmail.com>
date: Thu Jun 11 15:41:20 EDT 2009

Grab the input in setup when reading a new key binding, so that Windows
CE buttons are read properly. Map buttons to PC function keys.

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 1594

--- a/setup/txt_keyinput.c
+++ b/setup/txt_keyinput.c
@@ -57,6 +57,11 @@
     }
 }
 
+static void ReleaseGrab(TXT_UNCAST_ARG(window), TXT_UNCAST_ARG(unused))
+{
+    SDL_WM_GrabInput(SDL_GRAB_OFF);
+}
+
 static void OpenPromptWindow(txt_key_input_t *key_input)
 {
     txt_window_t *window;
@@ -78,6 +83,13 @@
     // Disable key mappings while we prompt for the key press
 
     TXT_EnableKeyMapping(0);
+
+    // Grab input while reading the key.  On Windows Mobile
+    // handheld devices, the hardware keypresses are only
+    // detected when input is grabbed.
+
+    SDL_WM_GrabInput(SDL_GRAB_ON);
+    TXT_SignalConnect(window, "closed", ReleaseGrab, NULL);
 }
 
 static void TXT_KeyInputSizeCalc(TXT_UNCAST_ARG(key_input))
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -362,6 +362,15 @@
       case SDLK_PAGEUP: return KEY_PGUP;
       case SDLK_PAGEDOWN: return KEY_PGDN;
 
+#ifdef SDL_HAVE_APP_KEYS
+        case SDLK_APP1:        return KEY_F1;
+        case SDLK_APP2:        return KEY_F2;
+        case SDLK_APP3:        return KEY_F3;
+        case SDLK_APP4:        return KEY_F4;
+        case SDLK_APP5:        return KEY_F5;
+        case SDLK_APP6:        return KEY_F6;
+#endif
+
       default:
         return tolower(sym->sym);
     }
--- a/textscreen/txt_sdl.c
+++ b/textscreen/txt_sdl.c
@@ -368,6 +368,15 @@
         case SDLK_PAGEUP:      return KEY_PGUP;
         case SDLK_PAGEDOWN:    return KEY_PGDN;
 
+#ifdef SDL_HAVE_APP_KEYS
+        case SDLK_APP1:        return KEY_F1;
+        case SDLK_APP2:        return KEY_F2;
+        case SDLK_APP3:        return KEY_F3;
+        case SDLK_APP4:        return KEY_F4;
+        case SDLK_APP5:        return KEY_F5;
+        case SDLK_APP6:        return KEY_F6;
+#endif
+
         default:               break;
     }
 
@@ -508,6 +517,7 @@
         case KEYP_MINUS:      return "PAD-";
         case KEYP_DIVIDE:     return "PAD/";
                    */
+
         default:              return NULL;
     }
 }