qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 0.14] ui/sdl: Fix handling of caps lock and num


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 0.14] ui/sdl: Fix handling of caps lock and num lock keys
Date: Fri, 04 Feb 2011 06:51:17 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Lightning/1.0b1 Thunderbird/3.0.10

On 02/03/2011 03:35 PM, Stefan Weil wrote:
Starting with SDL version 1.2.14, caps lock and num lock keys
will send a SDL_KEYUP when SDL_DISABLE_LOCK_KEYS=1 is set in
the environment.

The new code sets the environment unconditionally
(it won't harm old versions which do not know it).

The workaround for SDL_KEYUP is only compiled with old SDL versions.

A similar patch without handling of old SDL versions was already
published by Benjamin Drung for Ubuntu.

Cc: Anthony Liguori<address@hidden>
Cc: Kevin Wolf<address@hidden>
Cc: Benjamin Drung<address@hidden>
Signed-off-by: Stefan Weil<address@hidden>

Applied to master, Thanks.

Regards,

Anthony Liguori
---
  ui/sdl.c |    8 ++++++++
  1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/ui/sdl.c b/ui/sdl.c
index a1458ce..47ac49c 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -388,12 +388,16 @@ static void sdl_process_key(SDL_KeyboardEvent *ev)
          else
              modifiers_state[keycode] = 1;
          break;
+#define QEMU_SDL_VERSION ((SDL_MAJOR_VERSION<<  8) + SDL_MINOR_VERSION)
+#if QEMU_SDL_VERSION<  0x102 || QEMU_SDL_VERSION == 0x102&&  SDL_PATCHLEVEL<  
14
+        /* SDL versions before 1.2.14 don't support key up for caps/num lock. 
*/
      case 0x45: /* num lock */
      case 0x3a: /* caps lock */
          /* SDL does not send the key up event, so we generate it */
          kbd_put_keycode(keycode);
          kbd_put_keycode(keycode | SCANCODE_UP);
          return;
+#endif
      }

      /* now send the key code */
@@ -831,6 +835,10 @@ void sdl_display_init(DisplayState *ds, int full_screen, 
int no_frame)
          setenv("SDL_VIDEO_ALLOW_SCREENSAVER", "1", 0);
      }

+    /* Enable normal up/down events for Caps-Lock and Num-Lock keys.
+     * This requires SDL>= 1.2.14. */
+    setenv("SDL_DISABLE_LOCK_KEYS", "1", 1);
+
      flags = SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE;
      if (SDL_Init (flags)) {
          fprintf(stderr, "Could not initialize SDL(%s) - exiting\n",




reply via email to

[Prev in Thread] Current Thread [Next in Thread]