[Spice-commits] 4 commits - gtk/keymaps.csv gtk/spice-widget.c gtk/vncdisplaykeymap.c

Marc-André Lureau elmarco at kemper.freedesktop.org
Mon Oct 15 11:13:15 PDT 2012


 gtk/keymaps.csv        |    2 +-
 gtk/spice-widget.c     |   11 ++++++++++-
 gtk/vncdisplaykeymap.c |    4 ++--
 3 files changed, 13 insertions(+), 4 deletions(-)

New commits:
commit eb0d7e4d4fc588e523c8fd6d87f7c15ca16dda89
Author: Marc-André Lureau <marcandre.lureau at redhat.com>
Date:   Mon Oct 15 19:04:06 2012 +0200

    win32: ignore hardware keycode 255
    
    It's a reserved value, and it doesn't have a valid scancode
    translation. Currently, We hit a warning in the delayed key handling
    later.

diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
index 391cd39..13d7111 100644
--- a/gtk/spice-widget.c
+++ b/gtk/spice-widget.c
@@ -1037,6 +1037,8 @@ static void send_key(SpiceDisplay *display, int scancode, SendKeyType type, gboo
     SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display);
     uint32_t i, b, m;
 
+    g_return_if_fail(scancode != 0);
+
     if (!d->inputs)
         return;
 
@@ -1139,7 +1141,11 @@ static gboolean key_event(GtkWidget *widget, GdkEventKey *key)
     SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display);
     int scancode;
 
-
+#ifdef WIN32
+    /* on windows, we ought to ignore the reserved key event? */
+    if (key->hardware_keycode == 0xff)
+        return false;
+#endif
     SPICE_DEBUG("%s %s: keycode: %d  state: %d  group %d modifier %d",
             __FUNCTION__, key->type == GDK_KEY_PRESS ? "press" : "release",
             key->hardware_keycode, key->state, key->group, key->is_modifier);
commit 57449951f890121ee3fa6984040711c28b09f935
Author: Marc-André Lureau <marcandre.lureau at redhat.com>
Date:   Mon Oct 15 18:42:16 2012 +0200

    vnc keymap: fix incorrect table size
    
    This lead to out of bound array access

diff --git a/gtk/vncdisplaykeymap.c b/gtk/vncdisplaykeymap.c
index a6ef38c..bf79f9b 100644
--- a/gtk/vncdisplaykeymap.c
+++ b/gtk/vncdisplaykeymap.c
@@ -197,7 +197,7 @@ const guint16 const *vnc_display_keymap_gdk2xtkbd_table(size_t *maplen)
 #ifdef GDK_WINDOWING_WIN32
 	if (GDK_IS_WIN32_DISPLAY(dpy)) {
 		VNC_DEBUG("Using Win32 virtual keycode mapping");
-		*maplen = sizeof(keymap_win322xtkbd);
+		*maplen = G_N_ELEMENTS(keymap_win322xtkbd);
 		return keymap_win322xtkbd;
 	}
 #endif
@@ -205,7 +205,7 @@ const guint16 const *vnc_display_keymap_gdk2xtkbd_table(size_t *maplen)
 #ifdef GDK_WINDOWING_QUARTZ
 	if (GDK_IS_QUARTZ_DISPLAY(dpy)) {
 		VNC_DEBUG("Using OS-X virtual keycode mapping");
-		*maplen = sizeof(keymap_osx2xtkbd);
+		*maplen = G_N_ELEMENTS(keymap_osx2xtkbd);
 		return keymap_osx2xtkbd;
 	}
 #endif
commit 27338e6727fb641e884b26563f5fa47176635ee6
Author: Marc-André Lureau <marcandre.lureau at redhat.com>
Date:   Mon Oct 15 18:12:27 2012 +0200

    Add a warning if scancode lookup failed
    
    This helps tracking some send_keys() issues, such as
    https://bugzilla.gnome.org/show_bug.cgi?id=686170

diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
index 47afa40..391cd39 100644
--- a/gtk/spice-widget.c
+++ b/gtk/spice-widget.c
@@ -1192,6 +1192,9 @@ static guint get_scancode_from_keyval(SpiceDisplay *display, guint keyval)
         /* FIXME what about levels? */
         keycode = keys[0].keycode;
         g_free(keys);
+    } else {
+        g_warning("could not lookup keyval %u, please report a bug", keyval);
+        return 0;
     }
 
     return vnc_display_keymap_gdk2xtkbd(d->keycode_map, d->keycode_maplen, keycode);
commit a4b86f3eddba9859bf53c00b129708fc3d6870a7
Author: Marc-André Lureau <marcandre.lureau at redhat.com>
Date:   Mon Oct 15 18:11:19 2012 +0200

    win32: fix quote key handling
    
    Fix keymaps to correctly handle the quote key.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=856317

diff --git a/gtk/keymaps.csv b/gtk/keymaps.csv
index 98c723b..ab29e4a 100644
--- a/gtk/keymaps.csv
+++ b/gtk/keymaps.csv
@@ -40,7 +40,7 @@ KEY_J,36,ANSI_J,0x26,36,59,59,36,36,13,VK_J,0x4a,36,36
 KEY_K,37,ANSI_K,0x28,37,66,66,37,37,14,VK_K,0x4b,37,37
 KEY_L,38,ANSI_L,0x25,38,75,75,38,38,15,VK_L,0x4c,38,38
 KEY_SEMICOLON,39,ANSI_Semicolon,0x29,39,76,76,39,39,51,VK_OEM_1,0xba,39,39
-KEY_APOSTROPHE,40,ANSI_Quote,0x27,40,82,82,40,40,52,VK_OEM_2,0xbf,40,40
+KEY_APOSTROPHE,40,ANSI_Quote,0x27,40,82,82,40,40,52,VK_OEM_7,0xde,40,40
 KEY_GRAVE,41,ANSI_Grave,0x32,41,14,14,41,41,53,VK_OEM_3,0xc0,41,41
 KEY_SHIFT,42,Shift,0x38,42,18,18,42,42,225,VK_SHIFT,0x10,42,42
 KEY_LEFTSHIFT,42,Shift,0x38,42,18,18,42,42,225,VK_LSHIFT,0xa0,42,42


More information about the Spice-commits mailing list