From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1eAJU0-0006EW-HA for mharc-qemu-trivial@gnu.org; Thu, 02 Nov 2017 13:40:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eAJTx-0006Cd-GZ for qemu-trivial@nongnu.org; Thu, 02 Nov 2017 13:40:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eAJTu-0006lV-9F for qemu-trivial@nongnu.org; Thu, 02 Nov 2017 13:40:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53290) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eAJTk-0006Sf-P5; Thu, 02 Nov 2017 13:40:32 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 11BDB81138; Thu, 2 Nov 2017 17:40:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 11BDB81138 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com Received: from redhat.com (unknown [10.33.36.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 218F860621; Thu, 2 Nov 2017 17:40:24 +0000 (UTC) Date: Thu, 2 Nov 2017 17:40:22 +0000 From: "Daniel P. Berrange" To: Peter Maydell Cc: Liang Yan , Anthony PERARD , "open list:X86" , Stefano Stabellini , QEMU Trivial , QEMU Developers Message-ID: <20171102174022.GA32533@redhat.com> Reply-To: "Daniel P. Berrange" References: <20171102171846.21445-1-lyan@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.1 (2017-09-22) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 02 Nov 2017 17:40:27 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: Re: [Qemu-trivial] [Qemu-devel] [PATCH v2] hw/display/xenfb: Simulate auto-repeat key events X-BeenThere: qemu-trivial@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Nov 2017 17:40:46 -0000 On Thu, Nov 02, 2017 at 05:26:50PM +0000, Peter Maydell wrote: > On 2 November 2017 at 17:18, Liang Yan wrote: > > New tigervnc changes the way to send long pressed key, > > from "down up down up ..." to "down down ... up", it only > > affects xen pv console mode. I send a patch to latest > > kernel side, but it may have a fix in qemu backend for > > back compatible becase guest VMs may use very old kernel. > > This patch inserts an up event after each regular key down > > event to simulate an auto-repeat key event for xen keyboard > > frontend driver. > > > > Signed-off-by: Liang Yan > > --- > > v2: > > - exclude extended key > > - change log comment > > > > hw/display/xenfb.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c > > index 8e2547ac05..1bc5b41ab7 100644 > > --- a/hw/display/xenfb.c > > +++ b/hw/display/xenfb.c > > @@ -292,6 +292,11 @@ static void xenfb_key_event(void *opaque, int scancode) > > } > > trace_xenfb_key_event(opaque, scancode2linux[scancode], down); > > xenfb_send_key(xenfb, down, scancode2linux[scancode]); > > + > > + /* insert an up event for regular down key event */ > > + if (down && !xenfb->extended) { > > + xenfb_send_key(xenfb, 0, scancode2linux[scancode]); > > + } > > } > > This doesn't look to me like the right place to fix this bug. > The xenfb key event handler is just one QEMU keyboard backend > (in a setup where there are many possible sources of keyboard > events: vnc, gtk, SDL, cocoa UI frontends; and many possible > sinks: xenfb's key handling, ps2 keyboard emulator, etc etc). > > We need to be clear in our definition of generic QEMU key > events how key repeat is supposed to be handled, and then > every consumer and every producer needs to follow that. > In the specific case of the vnc UI frontend, we need to > also look at what the VNC protocol specifies for key repeat. > That then tells us whether the bug to be fixed is in QEMU, > or in a particular VNC client. I'm somewhat inclined to say this is a Tigervnc bug. We fixed this same issue in GTK-VNC ~10 years ago. While X11 would send a sequence of press,release,press,release, GTK would turn this into press,press,press,press,release which broke some VNC servers. So GTK-VNC undoes this optimization from GTK to ensure a full set of press,release,press,release pairs is always sent. The official RFC for VNC does not specify any auto-repeat behaviour https://tools.ietf.org/html/rfc6143#section-7.5.4 The unofficial community authored extension to the RFC suggests taking the press,press,press,release approach to allow servers to distinguish auto-repeat from manual repeat, but I'm not really convinced by that justification really http://vncdotool.readthedocs.io/en/latest/rfbproto.html#keyevent Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59146) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eAJTs-00069y-RQ for qemu-devel@nongnu.org; Thu, 02 Nov 2017 13:40:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eAJTl-0006bR-35 for qemu-devel@nongnu.org; Thu, 02 Nov 2017 13:40:36 -0400 Date: Thu, 2 Nov 2017 17:40:22 +0000 From: "Daniel P. Berrange" Message-ID: <20171102174022.GA32533@redhat.com> Reply-To: "Daniel P. Berrange" References: <20171102171846.21445-1-lyan@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH v2] hw/display/xenfb: Simulate auto-repeat key events List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Liang Yan , Anthony PERARD , "open list:X86" , Stefano Stabellini , QEMU Trivial , QEMU Developers On Thu, Nov 02, 2017 at 05:26:50PM +0000, Peter Maydell wrote: > On 2 November 2017 at 17:18, Liang Yan wrote: > > New tigervnc changes the way to send long pressed key, > > from "down up down up ..." to "down down ... up", it only > > affects xen pv console mode. I send a patch to latest > > kernel side, but it may have a fix in qemu backend for > > back compatible becase guest VMs may use very old kernel. > > This patch inserts an up event after each regular key down > > event to simulate an auto-repeat key event for xen keyboard > > frontend driver. > > > > Signed-off-by: Liang Yan > > --- > > v2: > > - exclude extended key > > - change log comment > > > > hw/display/xenfb.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c > > index 8e2547ac05..1bc5b41ab7 100644 > > --- a/hw/display/xenfb.c > > +++ b/hw/display/xenfb.c > > @@ -292,6 +292,11 @@ static void xenfb_key_event(void *opaque, int scancode) > > } > > trace_xenfb_key_event(opaque, scancode2linux[scancode], down); > > xenfb_send_key(xenfb, down, scancode2linux[scancode]); > > + > > + /* insert an up event for regular down key event */ > > + if (down && !xenfb->extended) { > > + xenfb_send_key(xenfb, 0, scancode2linux[scancode]); > > + } > > } > > This doesn't look to me like the right place to fix this bug. > The xenfb key event handler is just one QEMU keyboard backend > (in a setup where there are many possible sources of keyboard > events: vnc, gtk, SDL, cocoa UI frontends; and many possible > sinks: xenfb's key handling, ps2 keyboard emulator, etc etc). > > We need to be clear in our definition of generic QEMU key > events how key repeat is supposed to be handled, and then > every consumer and every producer needs to follow that. > In the specific case of the vnc UI frontend, we need to > also look at what the VNC protocol specifies for key repeat. > That then tells us whether the bug to be fixed is in QEMU, > or in a particular VNC client. I'm somewhat inclined to say this is a Tigervnc bug. We fixed this same issue in GTK-VNC ~10 years ago. While X11 would send a sequence of press,release,press,release, GTK would turn this into press,press,press,press,release which broke some VNC servers. So GTK-VNC undoes this optimization from GTK to ensure a full set of press,release,press,release pairs is always sent. The official RFC for VNC does not specify any auto-repeat behaviour https://tools.ietf.org/html/rfc6143#section-7.5.4 The unofficial community authored extension to the RFC suggests taking the press,press,press,release approach to allow servers to distinguish auto-repeat from manual repeat, but I'm not really convinced by that justification really http://vncdotool.readthedocs.io/en/latest/rfbproto.html#keyevent Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Daniel P. Berrange" Subject: Re: [Qemu-devel] [PATCH v2] hw/display/xenfb: Simulate auto-repeat key events Date: Thu, 2 Nov 2017 17:40:22 +0000 Message-ID: <20171102174022.GA32533@redhat.com> References: <20171102171846.21445-1-lyan@suse.com> Reply-To: "Daniel P. Berrange" Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eAJTi-0002Yl-Tv for xen-devel@lists.xenproject.org; Thu, 02 Nov 2017 17:40:31 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Peter Maydell Cc: Liang Yan , Stefano Stabellini , QEMU Trivial , QEMU Developers , Anthony PERARD , "open list:X86" List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBOb3YgMDIsIDIwMTcgYXQgMDU6MjY6NTBQTSArMDAwMCwgUGV0ZXIgTWF5ZGVsbCB3 cm90ZToKPiBPbiAyIE5vdmVtYmVyIDIwMTcgYXQgMTc6MTgsIExpYW5nIFlhbiA8bHlhbkBzdXNl LmNvbT4gd3JvdGU6Cj4gPiBOZXcgdGlnZXJ2bmMgY2hhbmdlcyB0aGUgd2F5IHRvIHNlbmQgbG9u ZyBwcmVzc2VkIGtleSwKPiA+IGZyb20gImRvd24gdXAgZG93biB1cCAuLi4iIHRvICJkb3duIGRv d24gLi4uIHVwIiwgaXQgb25seQo+ID4gYWZmZWN0cyB4ZW4gcHYgY29uc29sZSBtb2RlLiBJIHNl bmQgYSBwYXRjaCB0byBsYXRlc3QKPiA+IGtlcm5lbCBzaWRlLCBidXQgaXQgbWF5IGhhdmUgYSBm aXggaW4gcWVtdSBiYWNrZW5kIGZvcgo+ID4gYmFjayBjb21wYXRpYmxlIGJlY2FzZSBndWVzdCBW TXMgbWF5IHVzZSB2ZXJ5IG9sZCBrZXJuZWwuCj4gPiBUaGlzIHBhdGNoIGluc2VydHMgYW4gdXAg ZXZlbnQgYWZ0ZXIgZWFjaCByZWd1bGFyIGtleSBkb3duCj4gPiBldmVudCB0byBzaW11bGF0ZSBh biBhdXRvLXJlcGVhdCBrZXkgZXZlbnQgZm9yIHhlbiBrZXlib2FyZAo+ID4gZnJvbnRlbmQgZHJp dmVyLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IExpYW5nIFlhbiA8bHlhbkBzdXNlLmNvbT4KPiA+ IC0tLQo+ID4gdjI6Cj4gPiAtIGV4Y2x1ZGUgZXh0ZW5kZWQga2V5Cj4gPiAtIGNoYW5nZSBsb2cg Y29tbWVudAo+ID4KPiA+ICBody9kaXNwbGF5L3hlbmZiLmMgfCA1ICsrKysrCj4gPiAgMSBmaWxl IGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQo+ID4KPiA+IGRpZmYgLS1naXQgYS9ody9kaXNwbGF5 L3hlbmZiLmMgYi9ody9kaXNwbGF5L3hlbmZiLmMKPiA+IGluZGV4IDhlMjU0N2FjMDUuLjFiYzVi NDFhYjcgMTAwNjQ0Cj4gPiAtLS0gYS9ody9kaXNwbGF5L3hlbmZiLmMKPiA+ICsrKyBiL2h3L2Rp c3BsYXkveGVuZmIuYwo+ID4gQEAgLTI5Miw2ICsyOTIsMTEgQEAgc3RhdGljIHZvaWQgeGVuZmJf a2V5X2V2ZW50KHZvaWQgKm9wYXF1ZSwgaW50IHNjYW5jb2RlKQo+ID4gICAgICB9Cj4gPiAgICAg IHRyYWNlX3hlbmZiX2tleV9ldmVudChvcGFxdWUsIHNjYW5jb2RlMmxpbnV4W3NjYW5jb2RlXSwg ZG93bik7Cj4gPiAgICAgIHhlbmZiX3NlbmRfa2V5KHhlbmZiLCBkb3duLCBzY2FuY29kZTJsaW51 eFtzY2FuY29kZV0pOwo+ID4gKwo+ID4gKyAgICAvKiBpbnNlcnQgYW4gdXAgZXZlbnQgZm9yIHJl Z3VsYXIgZG93biBrZXkgZXZlbnQgKi8KPiA+ICsgICAgaWYgKGRvd24gJiYgIXhlbmZiLT5leHRl bmRlZCkgewo+ID4gKyAgICAgICAgeGVuZmJfc2VuZF9rZXkoeGVuZmIsIDAsIHNjYW5jb2RlMmxp bnV4W3NjYW5jb2RlXSk7Cj4gPiArICAgIH0KPiA+ICB9Cj4gCj4gVGhpcyBkb2Vzbid0IGxvb2sg dG8gbWUgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gZml4IHRoaXMgYnVnLgo+IFRoZSB4ZW5mYiBr ZXkgZXZlbnQgaGFuZGxlciBpcyBqdXN0IG9uZSBRRU1VIGtleWJvYXJkIGJhY2tlbmQKPiAoaW4g YSBzZXR1cCB3aGVyZSB0aGVyZSBhcmUgbWFueSBwb3NzaWJsZSBzb3VyY2VzIG9mIGtleWJvYXJk Cj4gZXZlbnRzOiB2bmMsIGd0aywgU0RMLCBjb2NvYSBVSSBmcm9udGVuZHM7IGFuZCBtYW55IHBv c3NpYmxlCj4gc2lua3M6IHhlbmZiJ3Mga2V5IGhhbmRsaW5nLCBwczIga2V5Ym9hcmQgZW11bGF0 b3IsIGV0YyBldGMpLgo+IAo+IFdlIG5lZWQgdG8gYmUgY2xlYXIgaW4gb3VyIGRlZmluaXRpb24g b2YgZ2VuZXJpYyBRRU1VIGtleQo+IGV2ZW50cyBob3cga2V5IHJlcGVhdCBpcyBzdXBwb3NlZCB0 byBiZSBoYW5kbGVkLCBhbmQgdGhlbgo+IGV2ZXJ5IGNvbnN1bWVyIGFuZCBldmVyeSBwcm9kdWNl ciBuZWVkcyB0byBmb2xsb3cgdGhhdC4KPiBJbiB0aGUgc3BlY2lmaWMgY2FzZSBvZiB0aGUgdm5j IFVJIGZyb250ZW5kLCB3ZSBuZWVkIHRvCj4gYWxzbyBsb29rIGF0IHdoYXQgdGhlIFZOQyBwcm90 b2NvbCBzcGVjaWZpZXMgZm9yIGtleSByZXBlYXQuCj4gVGhhdCB0aGVuIHRlbGxzIHVzIHdoZXRo ZXIgdGhlIGJ1ZyB0byBiZSBmaXhlZCBpcyBpbiBRRU1VLAo+IG9yIGluIGEgcGFydGljdWxhciBW TkMgY2xpZW50LgoKSSdtIHNvbWV3aGF0IGluY2xpbmVkIHRvIHNheSB0aGlzIGlzIGEgVGlnZXJ2 bmMgYnVnLiBXZSBmaXhlZCB0aGlzCnNhbWUgaXNzdWUgaW4gR1RLLVZOQyB+MTAgeWVhcnMgYWdv LiBXaGlsZSBYMTEgd291bGQgc2VuZCBhIHNlcXVlbmNlCm9mIHByZXNzLHJlbGVhc2UscHJlc3Ms cmVsZWFzZSwgIEdUSyB3b3VsZCB0dXJuIHRoaXMgaW50bwpwcmVzcyxwcmVzcyxwcmVzcyxwcmVz cyxyZWxlYXNlIHdoaWNoIGJyb2tlIHNvbWUgVk5DIHNlcnZlcnMuClNvIEdUSy1WTkMgdW5kb2Vz IHRoaXMgb3B0aW1pemF0aW9uIGZyb20gR1RLIHRvIGVuc3VyZSBhIGZ1bGwgc2V0Cm9mIHByZXNz LHJlbGVhc2UscHJlc3MscmVsZWFzZSBwYWlycyBpcyBhbHdheXMgc2VudC4KClRoZSBvZmZpY2lh bCBSRkMgZm9yIFZOQyBkb2VzIG5vdCBzcGVjaWZ5IGFueSBhdXRvLXJlcGVhdCBiZWhhdmlvdXIK CiAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYxNDMjc2VjdGlvbi03LjUuNAoKVGhl IHVub2ZmaWNpYWwgY29tbXVuaXR5IGF1dGhvcmVkIGV4dGVuc2lvbiB0byB0aGUgUkZDIHN1Z2dl c3RzCnRha2luZyB0aGUgcHJlc3MscHJlc3MscHJlc3MscmVsZWFzZSBhcHByb2FjaCB0byBhbGxv dyBzZXJ2ZXJzIHRvCmRpc3Rpbmd1aXNoIGF1dG8tcmVwZWF0IGZyb20gbWFudWFsIHJlcGVhdCwg YnV0IEknbSBub3QgcmVhbGx5CmNvbnZpbmNlZCBieSB0aGF0IGp1c3RpZmljYXRpb24gcmVhbGx5 CgogIGh0dHA6Ly92bmNkb3Rvb2wucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L3JmYnByb3RvLmh0 bWwja2V5ZXZlbnQKClJlZ2FyZHMsCkRhbmllbAotLSAKfDogaHR0cHM6Ly9iZXJyYW5nZS5jb20g ICAgICAtby0gICAgaHR0cHM6Ly93d3cuZmxpY2tyLmNvbS9waG90b3MvZGJlcnJhbmdlIDp8Cnw6 IGh0dHBzOi8vbGlidmlydC5vcmcgICAgICAgICAtby0gICAgICAgICAgICBodHRwczovL2ZzdG9w MTM4LmJlcnJhbmdlLmNvbSA6fAp8OiBodHRwczovL2VudGFuZ2xlLXBob3RvLm9yZyAgICAtby0g ICAgaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9kYmVycmFuZ2UgOnwKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=