ui: fix keymap detection under Xwayland
commit1e70de679d2e7e1312d9c9debed8d11612d469d9
authorDaniel P. Berrangé <berrange@redhat.com>
Tue, 13 Mar 2018 10:42:35 +0000 (13 10:42 +0000)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 10 Apr 2018 09:21:54 +0000 (10 11:21 +0200)
tree2fbcd07bc71cde37570a96be934ef03b4a46fce5
parent915d34c5f99b0ab91517c69f54272bfdb6ca2b32
ui: fix keymap detection under Xwayland

The X11 code currently detects the keymap by looking for the keycode
name property. Unfortunately due to the way Xwayland handles keyboards,
this property gets unset almost immediately after the first application
starts using Xwayland resulting in

  ** (qemu-system-x86_64:19644): WARNING **: Unknown X11 keycode mapping '(unnamed)'.
  Please report to qemu-devel@nongnu.org
  including the following information:

    - Operating system
    - X11 Server
    - xprop -root
    - xdpyinfo

Fortunately people will only see this problem if they built QEMU with
GTK2, or have told GTK3 to prefer X11 by setting the GDK_BACKEND=x11
env variable.

To workaround the problem, we add a heuristic that looks at what
scancode the XK_Page_Up keysymbol maps to, to determine if we've
likely got the X11 kbd or evdev driver.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20180313104235.20725-1-berrange@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
ui/x_keymap.c