All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
@ 2016-12-01  9:41 Daniel P. Berrange
  2016-12-01 11:20 ` Stefan Hajnoczi
  2017-01-03 12:55 ` Daniel P. Berrange
  0 siblings, 2 replies; 8+ messages in thread
From: Daniel P. Berrange @ 2016-12-01  9:41 UTC (permalink / raw)
  To: qemu-devel; +Cc: Stefan Hajnoczi, Daniel P. Berrange

Wayland always uses evdev as its input source, so QEMU
can use the existing evdev keymap data

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---

Changed in v2

 - Actually add all changed files to commit - gtk.h :-)

 include/ui/gtk.h | 4 ++++
 ui/gtk.c         | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/include/ui/gtk.h b/include/ui/gtk.h
index 42ca0fe..b3b5005 100644
--- a/include/ui/gtk.h
+++ b/include/ui/gtk.h
@@ -18,6 +18,10 @@
 #include <X11/XKBlib.h>
 #endif
 
+#ifdef GDK_WINDOWING_WAYLAND
+#include <gdk/gdkwayland.h>
+#endif
+
 #if defined(CONFIG_OPENGL)
 #include "ui/egl-helpers.h"
 #include "ui/egl-context.h"
diff --git a/ui/gtk.c b/ui/gtk.c
index e816428..81dba57 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -90,6 +90,9 @@
 #ifndef GDK_IS_X11_DISPLAY
 #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
 #endif
+#ifndef GDK_IS_WAYLAND_DISPLAY
+#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
+#endif
 #ifndef GDK_IS_WIN32_DISPLAY
 #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
 #endif
@@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
             qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
         }
 #endif
+#ifdef GDK_WINDOWING_WAYLAND
+    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
+        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
+#endif
     } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
         qemu_keycode = 0x70;
     } else if (gdk_keycode == 211) { /* backslash */
-- 
2.9.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01  9:41 [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland Daniel P. Berrange
@ 2016-12-01 11:20 ` Stefan Hajnoczi
  2016-12-01 11:25   ` Stefan Hajnoczi
  2016-12-01 11:29   ` Daniel P. Berrange
  2017-01-03 12:55 ` Daniel P. Berrange
  1 sibling, 2 replies; 8+ messages in thread
From: Stefan Hajnoczi @ 2016-12-01 11:20 UTC (permalink / raw)
  To: Daniel P. Berrange; +Cc: qemu-devel

On Thu, Dec 1, 2016 at 9:41 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
> Wayland always uses evdev as its input source, so QEMU
> can use the existing evdev keymap data
>
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
>
> Changed in v2
>
>  - Actually add all changed files to commit - gtk.h :-)
>
>  include/ui/gtk.h | 4 ++++
>  ui/gtk.c         | 7 +++++++
>  2 files changed, 11 insertions(+)
>
> diff --git a/include/ui/gtk.h b/include/ui/gtk.h
> index 42ca0fe..b3b5005 100644
> --- a/include/ui/gtk.h
> +++ b/include/ui/gtk.h
> @@ -18,6 +18,10 @@
>  #include <X11/XKBlib.h>
>  #endif
>
> +#ifdef GDK_WINDOWING_WAYLAND
> +#include <gdk/gdkwayland.h>
> +#endif
> +
>  #if defined(CONFIG_OPENGL)
>  #include "ui/egl-helpers.h"
>  #include "ui/egl-context.h"
> diff --git a/ui/gtk.c b/ui/gtk.c
> index e816428..81dba57 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -90,6 +90,9 @@
>  #ifndef GDK_IS_X11_DISPLAY
>  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
>  #endif
> +#ifndef GDK_IS_WAYLAND_DISPLAY
> +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
> +#endif
>  #ifndef GDK_IS_WIN32_DISPLAY
>  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
>  #endif
> @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
>              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
>          }
>  #endif
> +#ifdef GDK_WINDOWING_WAYLAND
> +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
> +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
> +#endif
>      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
>          qemu_keycode = 0x70;
>      } else if (gdk_keycode == 211) { /* backslash */
> --
> 2.9.3
>

Great, you've fixed Wayland!

This is GTK3-only so I used ./configure --with-gtkabi=3.0 on my system
that has both GTK2 and GTK3 headers installed.  ./configure will
select GTK2 by default and I'm not sure if that is a good idea
nowadays.

Tested-by: Stefan Hajnoczi <stefanha@redhat.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01 11:20 ` Stefan Hajnoczi
@ 2016-12-01 11:25   ` Stefan Hajnoczi
  2016-12-01 11:26     ` Stefan Hajnoczi
  2016-12-01 11:29   ` Daniel P. Berrange
  1 sibling, 1 reply; 8+ messages in thread
From: Stefan Hajnoczi @ 2016-12-01 11:25 UTC (permalink / raw)
  To: Daniel P. Berrange; +Cc: qemu-devel, Cole Robinson

On Thu, Dec 1, 2016 at 11:20 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Thu, Dec 1, 2016 at 9:41 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
>> Wayland always uses evdev as its input source, so QEMU
>> can use the existing evdev keymap data
>>
>> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>> ---
>>
>> Changed in v2
>>
>>  - Actually add all changed files to commit - gtk.h :-)
>>
>>  include/ui/gtk.h | 4 ++++
>>  ui/gtk.c         | 7 +++++++
>>  2 files changed, 11 insertions(+)
>>
>> diff --git a/include/ui/gtk.h b/include/ui/gtk.h
>> index 42ca0fe..b3b5005 100644
>> --- a/include/ui/gtk.h
>> +++ b/include/ui/gtk.h
>> @@ -18,6 +18,10 @@
>>  #include <X11/XKBlib.h>
>>  #endif
>>
>> +#ifdef GDK_WINDOWING_WAYLAND
>> +#include <gdk/gdkwayland.h>
>> +#endif
>> +
>>  #if defined(CONFIG_OPENGL)
>>  #include "ui/egl-helpers.h"
>>  #include "ui/egl-context.h"
>> diff --git a/ui/gtk.c b/ui/gtk.c
>> index e816428..81dba57 100644
>> --- a/ui/gtk.c
>> +++ b/ui/gtk.c
>> @@ -90,6 +90,9 @@
>>  #ifndef GDK_IS_X11_DISPLAY
>>  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
>>  #endif
>> +#ifndef GDK_IS_WAYLAND_DISPLAY
>> +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
>> +#endif
>>  #ifndef GDK_IS_WIN32_DISPLAY
>>  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
>>  #endif
>> @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
>>              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
>>          }
>>  #endif
>> +#ifdef GDK_WINDOWING_WAYLAND
>> +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
>> +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
>> +#endif
>>      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
>>          qemu_keycode = 0x70;
>>      } else if (gdk_keycode == 211) { /* backslash */
>> --
>> 2.9.3
>>
>
> Great, you've fixed Wayland!
>
> This is GTK3-only so I used ./configure --with-gtkabi=3.0 on my system
> that has both GTK2 and GTK3 headers installed.  ./configure will
> select GTK2 by default and I'm not sure if that is a good idea
> nowadays.
>
> Tested-by: Stefan Hajnoczi <stefanha@redhat.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01 11:25   ` Stefan Hajnoczi
@ 2016-12-01 11:26     ` Stefan Hajnoczi
  2016-12-01 11:28       ` Daniel P. Berrange
  2016-12-04 21:28       ` Cole Robinson
  0 siblings, 2 replies; 8+ messages in thread
From: Stefan Hajnoczi @ 2016-12-01 11:26 UTC (permalink / raw)
  To: Daniel P. Berrange; +Cc: qemu-devel, Cole Robinson

On Thu, Dec 1, 2016 at 11:25 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Thu, Dec 1, 2016 at 11:20 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
>> On Thu, Dec 1, 2016 at 9:41 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
>>> Wayland always uses evdev as its input source, so QEMU
>>> can use the existing evdev keymap data
>>>
>>> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>>> ---
>>>
>>> Changed in v2
>>>
>>>  - Actually add all changed files to commit - gtk.h :-)
>>>
>>>  include/ui/gtk.h | 4 ++++
>>>  ui/gtk.c         | 7 +++++++
>>>  2 files changed, 11 insertions(+)
>>>
>>> diff --git a/include/ui/gtk.h b/include/ui/gtk.h
>>> index 42ca0fe..b3b5005 100644
>>> --- a/include/ui/gtk.h
>>> +++ b/include/ui/gtk.h
>>> @@ -18,6 +18,10 @@
>>>  #include <X11/XKBlib.h>
>>>  #endif
>>>
>>> +#ifdef GDK_WINDOWING_WAYLAND
>>> +#include <gdk/gdkwayland.h>
>>> +#endif
>>> +
>>>  #if defined(CONFIG_OPENGL)
>>>  #include "ui/egl-helpers.h"
>>>  #include "ui/egl-context.h"
>>> diff --git a/ui/gtk.c b/ui/gtk.c
>>> index e816428..81dba57 100644
>>> --- a/ui/gtk.c
>>> +++ b/ui/gtk.c
>>> @@ -90,6 +90,9 @@
>>>  #ifndef GDK_IS_X11_DISPLAY
>>>  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
>>>  #endif
>>> +#ifndef GDK_IS_WAYLAND_DISPLAY
>>> +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
>>> +#endif
>>>  #ifndef GDK_IS_WIN32_DISPLAY
>>>  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
>>>  #endif
>>> @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
>>>              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
>>>          }
>>>  #endif
>>> +#ifdef GDK_WINDOWING_WAYLAND
>>> +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
>>> +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
>>> +#endif
>>>      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
>>>          qemu_keycode = 0x70;
>>>      } else if (gdk_keycode == 211) { /* backslash */
>>> --
>>> 2.9.3
>>>
>>
>> Great, you've fixed Wayland!
>>
>> This is GTK3-only so I used ./configure --with-gtkabi=3.0 on my system
>> that has both GTK2 and GTK3 headers installed.  ./configure will
>> select GTK2 by default and I'm not sure if that is a good idea
>> nowadays.
>>
>> Tested-by: Stefan Hajnoczi <stefanha@redhat.com>

Sorry, Cole.  I pressed Send too quickly :).  I meant to add:

This patch is especially relevant for Fedora 25 where Wayland is the
default.  Without the GTK UI will not handle cursor and other keys
correctly.

Dan: Come to think of it, ui/sdl.c also has X11 keycode mangling.
Perhaps that is broken too... :(

Stefan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01 11:26     ` Stefan Hajnoczi
@ 2016-12-01 11:28       ` Daniel P. Berrange
  2016-12-04 21:28       ` Cole Robinson
  1 sibling, 0 replies; 8+ messages in thread
From: Daniel P. Berrange @ 2016-12-01 11:28 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel, Cole Robinson

On Thu, Dec 01, 2016 at 11:26:59AM +0000, Stefan Hajnoczi wrote:
> On Thu, Dec 1, 2016 at 11:25 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> > On Thu, Dec 1, 2016 at 11:20 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> >> On Thu, Dec 1, 2016 at 9:41 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
> >>> Wayland always uses evdev as its input source, so QEMU
> >>> can use the existing evdev keymap data
> >>>
> >>> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> >>> ---
> >>>
> >>> Changed in v2
> >>>
> >>>  - Actually add all changed files to commit - gtk.h :-)
> >>>
> >>>  include/ui/gtk.h | 4 ++++
> >>>  ui/gtk.c         | 7 +++++++
> >>>  2 files changed, 11 insertions(+)
> >>>
> >>> diff --git a/include/ui/gtk.h b/include/ui/gtk.h
> >>> index 42ca0fe..b3b5005 100644
> >>> --- a/include/ui/gtk.h
> >>> +++ b/include/ui/gtk.h
> >>> @@ -18,6 +18,10 @@
> >>>  #include <X11/XKBlib.h>
> >>>  #endif
> >>>
> >>> +#ifdef GDK_WINDOWING_WAYLAND
> >>> +#include <gdk/gdkwayland.h>
> >>> +#endif
> >>> +
> >>>  #if defined(CONFIG_OPENGL)
> >>>  #include "ui/egl-helpers.h"
> >>>  #include "ui/egl-context.h"
> >>> diff --git a/ui/gtk.c b/ui/gtk.c
> >>> index e816428..81dba57 100644
> >>> --- a/ui/gtk.c
> >>> +++ b/ui/gtk.c
> >>> @@ -90,6 +90,9 @@
> >>>  #ifndef GDK_IS_X11_DISPLAY
> >>>  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
> >>>  #endif
> >>> +#ifndef GDK_IS_WAYLAND_DISPLAY
> >>> +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
> >>> +#endif
> >>>  #ifndef GDK_IS_WIN32_DISPLAY
> >>>  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
> >>>  #endif
> >>> @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
> >>>              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
> >>>          }
> >>>  #endif
> >>> +#ifdef GDK_WINDOWING_WAYLAND
> >>> +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
> >>> +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
> >>> +#endif
> >>>      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
> >>>          qemu_keycode = 0x70;
> >>>      } else if (gdk_keycode == 211) { /* backslash */
> >>> --
> >>> 2.9.3
> >>>
> >>
> >> Great, you've fixed Wayland!
> >>
> >> This is GTK3-only so I used ./configure --with-gtkabi=3.0 on my system
> >> that has both GTK2 and GTK3 headers installed.  ./configure will
> >> select GTK2 by default and I'm not sure if that is a good idea
> >> nowadays.
> >>
> >> Tested-by: Stefan Hajnoczi <stefanha@redhat.com>
> 
> Sorry, Cole.  I pressed Send too quickly :).  I meant to add:
> 
> This patch is especially relevant for Fedora 25 where Wayland is the
> default.  Without the GTK UI will not handle cursor and other keys
> correctly.
> 
> Dan: Come to think of it, ui/sdl.c also has X11 keycode mangling.
> Perhaps that is broken too... :(

SDL doesn't have native Wayland support, so it will be running
via Xwayland, which will use regulard Xorg evdev mapping, so that
should be fine still.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://entangle-photo.org       -o-    http://search.cpan.org/~danberr/ :|

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01 11:20 ` Stefan Hajnoczi
  2016-12-01 11:25   ` Stefan Hajnoczi
@ 2016-12-01 11:29   ` Daniel P. Berrange
  1 sibling, 0 replies; 8+ messages in thread
From: Daniel P. Berrange @ 2016-12-01 11:29 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: qemu-devel

On Thu, Dec 01, 2016 at 11:20:36AM +0000, Stefan Hajnoczi wrote:
> On Thu, Dec 1, 2016 at 9:41 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
> > Wayland always uses evdev as its input source, so QEMU
> > can use the existing evdev keymap data
> >
> > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > ---
> >
> > Changed in v2
> >
> >  - Actually add all changed files to commit - gtk.h :-)
> >
> >  include/ui/gtk.h | 4 ++++
> >  ui/gtk.c         | 7 +++++++
> >  2 files changed, 11 insertions(+)
> >
> > diff --git a/include/ui/gtk.h b/include/ui/gtk.h
> > index 42ca0fe..b3b5005 100644
> > --- a/include/ui/gtk.h
> > +++ b/include/ui/gtk.h
> > @@ -18,6 +18,10 @@
> >  #include <X11/XKBlib.h>
> >  #endif
> >
> > +#ifdef GDK_WINDOWING_WAYLAND
> > +#include <gdk/gdkwayland.h>
> > +#endif
> > +
> >  #if defined(CONFIG_OPENGL)
> >  #include "ui/egl-helpers.h"
> >  #include "ui/egl-context.h"
> > diff --git a/ui/gtk.c b/ui/gtk.c
> > index e816428..81dba57 100644
> > --- a/ui/gtk.c
> > +++ b/ui/gtk.c
> > @@ -90,6 +90,9 @@
> >  #ifndef GDK_IS_X11_DISPLAY
> >  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
> >  #endif
> > +#ifndef GDK_IS_WAYLAND_DISPLAY
> > +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
> > +#endif
> >  #ifndef GDK_IS_WIN32_DISPLAY
> >  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
> >  #endif
> > @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
> >              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
> >          }
> >  #endif
> > +#ifdef GDK_WINDOWING_WAYLAND
> > +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
> > +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
> > +#endif
> >      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
> >          qemu_keycode = 0x70;
> >      } else if (gdk_keycode == 211) { /* backslash */
> > --
> > 2.9.3
> >
> 
> Great, you've fixed Wayland!
> 
> This is GTK3-only so I used ./configure --with-gtkabi=3.0 on my system
> that has both GTK2 and GTK3 headers installed.  ./configure will
> select GTK2 by default and I'm not sure if that is a good idea
> nowadays.

We had a discussion on IRC a few weeks back about default UI frontends.

We should certainly prefer GTK3 over GTK2 if both a present, since GTK2
is essentially a dead technology at this time.

> Tested-by: Stefan Hajnoczi <stefanha@redhat.com>

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://entangle-photo.org       -o-    http://search.cpan.org/~danberr/ :|

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01 11:26     ` Stefan Hajnoczi
  2016-12-01 11:28       ` Daniel P. Berrange
@ 2016-12-04 21:28       ` Cole Robinson
  1 sibling, 0 replies; 8+ messages in thread
From: Cole Robinson @ 2016-12-04 21:28 UTC (permalink / raw)
  To: Stefan Hajnoczi, Daniel P. Berrange; +Cc: qemu-devel

On 12/01/2016 06:26 AM, Stefan Hajnoczi wrote:
> On Thu, Dec 1, 2016 at 11:25 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
>> On Thu, Dec 1, 2016 at 11:20 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
>>> On Thu, Dec 1, 2016 at 9:41 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
>>>> Wayland always uses evdev as its input source, so QEMU
>>>> can use the existing evdev keymap data
>>>>
>>>> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
>>>> ---
>>>>
>>>> Changed in v2
>>>>
>>>>  - Actually add all changed files to commit - gtk.h :-)
>>>>
>>>>  include/ui/gtk.h | 4 ++++
>>>>  ui/gtk.c         | 7 +++++++
>>>>  2 files changed, 11 insertions(+)
>>>>
>>>> diff --git a/include/ui/gtk.h b/include/ui/gtk.h
>>>> index 42ca0fe..b3b5005 100644
>>>> --- a/include/ui/gtk.h
>>>> +++ b/include/ui/gtk.h
>>>> @@ -18,6 +18,10 @@
>>>>  #include <X11/XKBlib.h>
>>>>  #endif
>>>>
>>>> +#ifdef GDK_WINDOWING_WAYLAND
>>>> +#include <gdk/gdkwayland.h>
>>>> +#endif
>>>> +
>>>>  #if defined(CONFIG_OPENGL)
>>>>  #include "ui/egl-helpers.h"
>>>>  #include "ui/egl-context.h"
>>>> diff --git a/ui/gtk.c b/ui/gtk.c
>>>> index e816428..81dba57 100644
>>>> --- a/ui/gtk.c
>>>> +++ b/ui/gtk.c
>>>> @@ -90,6 +90,9 @@
>>>>  #ifndef GDK_IS_X11_DISPLAY
>>>>  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
>>>>  #endif
>>>> +#ifndef GDK_IS_WAYLAND_DISPLAY
>>>> +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
>>>> +#endif
>>>>  #ifndef GDK_IS_WIN32_DISPLAY
>>>>  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
>>>>  #endif
>>>> @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
>>>>              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
>>>>          }
>>>>  #endif
>>>> +#ifdef GDK_WINDOWING_WAYLAND
>>>> +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
>>>> +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
>>>> +#endif
>>>>      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
>>>>          qemu_keycode = 0x70;
>>>>      } else if (gdk_keycode == 211) { /* backslash */
>>>> --
>>>> 2.9.3
>>>>
>>>
>>> Great, you've fixed Wayland!
>>>
>>> This is GTK3-only so I used ./configure --with-gtkabi=3.0 on my system
>>> that has both GTK2 and GTK3 headers installed.  ./configure will
>>> select GTK2 by default and I'm not sure if that is a good idea
>>> nowadays.
>>>
>>> Tested-by: Stefan Hajnoczi <stefanha@redhat.com>
> 
> Sorry, Cole.  I pressed Send too quickly :).  I meant to add:
> 
> This patch is especially relevant for Fedora 25 where Wayland is the
> default.  Without the GTK UI will not handle cursor and other keys
> correctly.
> 

Thanks for the pointer, I made a note in
https://bugzilla.redhat.com/show_bug.cgi?id=1401211 and I'll do a build ASAP

- Cole

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland
  2016-12-01  9:41 [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland Daniel P. Berrange
  2016-12-01 11:20 ` Stefan Hajnoczi
@ 2017-01-03 12:55 ` Daniel P. Berrange
  1 sibling, 0 replies; 8+ messages in thread
From: Daniel P. Berrange @ 2017-01-03 12:55 UTC (permalink / raw)
  To: qemu-devel, Gerd Hoffmann; +Cc: Stefan Hajnoczi

CC'ing Gerd as the ui/ maintainer

On Thu, Dec 01, 2016 at 09:41:17AM +0000, Daniel P. Berrange wrote:
> Wayland always uses evdev as its input source, so QEMU
> can use the existing evdev keymap data
> 
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
> 
> Changed in v2
> 
>  - Actually add all changed files to commit - gtk.h :-)
> 
>  include/ui/gtk.h | 4 ++++
>  ui/gtk.c         | 7 +++++++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/include/ui/gtk.h b/include/ui/gtk.h
> index 42ca0fe..b3b5005 100644
> --- a/include/ui/gtk.h
> +++ b/include/ui/gtk.h
> @@ -18,6 +18,10 @@
>  #include <X11/XKBlib.h>
>  #endif
>  
> +#ifdef GDK_WINDOWING_WAYLAND
> +#include <gdk/gdkwayland.h>
> +#endif
> +
>  #if defined(CONFIG_OPENGL)
>  #include "ui/egl-helpers.h"
>  #include "ui/egl-context.h"
> diff --git a/ui/gtk.c b/ui/gtk.c
> index e816428..81dba57 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -90,6 +90,9 @@
>  #ifndef GDK_IS_X11_DISPLAY
>  #define GDK_IS_X11_DISPLAY(dpy) (dpy == dpy)
>  #endif
> +#ifndef GDK_IS_WAYLAND_DISPLAY
> +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy == dpy)
> +#endif
>  #ifndef GDK_IS_WIN32_DISPLAY
>  #define GDK_IS_WIN32_DISPLAY(dpy) (dpy == dpy)
>  #endif
> @@ -1054,6 +1057,10 @@ static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
>              qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
>          }
>  #endif
> +#ifdef GDK_WINDOWING_WAYLAND
> +    } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) {
> +        qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
> +#endif
>      } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
>          qemu_keycode = 0x70;
>      } else if (gdk_keycode == 211) { /* backslash */
> -- 
> 2.9.3
> 

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://entangle-photo.org       -o-    http://search.cpan.org/~danberr/ :|

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-01-03 12:55 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-01  9:41 [Qemu-devel] [PATCH v2] ui: use evdev keymap when running under wayland Daniel P. Berrange
2016-12-01 11:20 ` Stefan Hajnoczi
2016-12-01 11:25   ` Stefan Hajnoczi
2016-12-01 11:26     ` Stefan Hajnoczi
2016-12-01 11:28       ` Daniel P. Berrange
2016-12-04 21:28       ` Cole Robinson
2016-12-01 11:29   ` Daniel P. Berrange
2017-01-03 12:55 ` Daniel P. Berrange

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.