* [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.