[gtk+] wayland: Ignore NoSymbol keys



commit 210a747ff082796fb28ee3a626be9e6bff0ea722
Author: Daniel Stone <daniels collabora com>
Date:   Wed Apr 27 14:06:38 2016 +0200

    wayland: Ignore NoSymbol keys
    
    NoSymbol is not a valid GDK symbol (it only has the concept of
    VoidSymbol, for some reason, which is neither the same thing nor
    produced by any sane keymap). Passing NoSymbol events through to GTK+
    apps is unlikely to produce anything useful.
    
    In particular, this meant VTE would scroll to the end of the buffer when
    pressing Fn (required for Page Up/Down on Macs), as it was receiving a
    keypress that wasn't a modifeir. This does not happen on X11, as the
    KEY_FN keycode is above 255, so does not get sent to clients.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=764825

 gdk/wayland/gdkdevice-wayland.c |    2 ++
 gdk/wayland/gdkkeys-wayland.c   |    2 +-
 2 files changed, 3 insertions(+), 1 deletions(-)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 8d0a61e..ae564ab 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -1827,6 +1827,8 @@ deliver_key_event (GdkWaylandSeat *seat,
   xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap);
 
   sym = xkb_state_key_get_one_sym (xkb_state, key);
+  if (sym == XKB_KEY_NoSymbol)
+    return;
 
   seat->pointer_info.time = time_;
   seat->key_modifiers = gdk_keymap_get_modifier_state (keymap);
diff --git a/gdk/wayland/gdkkeys-wayland.c b/gdk/wayland/gdkkeys-wayland.c
index a780e9d..01cdd04 100644
--- a/gdk/wayland/gdkkeys-wayland.c
+++ b/gdk/wayland/gdkkeys-wayland.c
@@ -354,7 +354,7 @@ gdk_wayland_keymap_translate_keyboard_state (GdkKeymap       *keymap,
   if (consumed_modifiers)
     *consumed_modifiers = get_gdk_modifiers (xkb_keymap, consumed);
 
-  return TRUE;
+  return (sym != XKB_KEY_NoSymbol);
 }
 
 static guint


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