[gtk-vnc] Use scancode instead of keycode names



commit 8dee84bfd34cc88d41e98bdc9d7ac9f0f226644f
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Thu Mar 8 11:56:36 2018 +0100

    Use scancode instead of keycode names
    
    When running on Xwayland, the keycode mapping property is not available,
    which causes unknown keycode mapping errors and the keyboard doesn't
    work.
    
    Check for a known scancode (“XK_Page_Up”) which differs to distinguish
    between “xfree86” and “evdev” when the there is no keycode name.
    
    Signed-off-by: Olivier Fourdan <ofourdan redhat com>

 src/vncdisplaykeymap.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/src/vncdisplaykeymap.c b/src/vncdisplaykeymap.c
index 1d60d53..d51a9a0 100644
--- a/src/vncdisplaykeymap.c
+++ b/src/vncdisplaykeymap.c
@@ -173,11 +173,13 @@ const guint16 *vnc_display_keymap_gdk2rfb_table(size_t *maplen)
             VNC_DEBUG("Using xquartz keycode mapping");
             *maplen = G_N_ELEMENTS(keymap_xorgxquartz2rfb);
             return keymap_xorgxquartz2rfb;
-        } else if (keycodes && STRPREFIX(keycodes, "evdev")) {
+        } else if ((keycodes && STRPREFIX(keycodes, "evdev")) ||
+                   (XKeysymToKeycode(xdisplay, XK_Page_Up) == 0x70)) {
             VNC_DEBUG("Using evdev keycode mapping");
             *maplen = G_N_ELEMENTS(keymap_xorgevdev2rfb);
             return keymap_xorgevdev2rfb;
-        } else if (keycodes && STRPREFIX(keycodes, "xfree86")) {
+        } else if ((keycodes && STRPREFIX(keycodes, "xfree86")) ||
+                   (XKeysymToKeycode(xdisplay, XK_Page_Up) == 0x63)) {
             VNC_DEBUG("Using xfree86 keycode mapping");
             *maplen = G_N_ELEMENTS(keymap_xorgkbd2rfb);
             return keymap_xorgkbd2rfb;


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