From 4083ae311d51edf93e2e163f4af2b22a1d0952cc Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 21 Nov 2014 10:25:57 +0100 Subject: [PATCH 1/3] input: improve docs for input-send-event qmp command Text partly suggested by Markus Armbruster Signed-off-by: Gerd Hoffmann --- qapi-schema.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/qapi-schema.json b/qapi-schema.json index fbfc52f94d..f5b1ed109b 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3258,6 +3258,18 @@ # Send input event(s) to guest. # # @console: #optional console to send event(s) to. +# This parameter can be used to send the input event to +# specific input devices in case (a) multiple input devices +# of the same kind are added to the virtual machine and (b) +# you have configured input routing (see docs/multiseat.txt) +# for those input devices. If input routing is not +# configured this parameter has no effect. +# If @console is missing, only devices that aren't associated +# with a console are admissible. +# If @console is specified, it must exist, and both devices +# associated with that console and devices not associated with a +# console are admissible, but the former take precedence. + # # @events: List of InputEvent union. # From ba4d26064e8c42711a1a6eb287cedac75deb1478 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 27 Nov 2014 10:02:35 +0100 Subject: [PATCH 2/3] hid: handle full ptr queues in post_load Cc: Dr. David Alan Gilbert Signed-off-by: Gerd Hoffmann Tested-by: Gonglei Reviewed-by: Gonglei --- hw/input/hid.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/hw/input/hid.c b/hw/input/hid.c index 148c003bb2..ad1855528d 100644 --- a/hw/input/hid.c +++ b/hw/input/hid.c @@ -514,6 +514,27 @@ static int hid_post_load(void *opaque, int version_id) HIDState *s = opaque; hid_set_next_idle(s); + + if (s->n == QUEUE_LENGTH && (s->kind == HID_TABLET || + s->kind == HID_MOUSE)) { + /* + * Handle ptr device migration from old qemu with full queue. + * + * Throw away everything but the last event, so we propagate + * at least the current button state to the guest. Also keep + * current position for the tablet, signal "no motion" for the + * mouse. + */ + HIDPointerEvent evt; + evt = s->ptr.queue[(s->head+s->n) & QUEUE_MASK]; + if (s->kind == HID_MOUSE) { + evt.xdx = 0; + evt.ydy = 0; + } + s->ptr.queue[0] = evt; + s->head = 0; + s->n = 1; + } return 0; } From 0ee4de5840ccc1072459ec68062bfb63c888a94d Mon Sep 17 00:00:00 2001 From: Dinar Valeev Date: Wed, 21 Jan 2015 23:48:41 +0100 Subject: [PATCH 3/3] hw/input/hid.c Fix capslock hid code When ever USB keyboard is used, e.g. '-usbdevice keyboard' pressing caps lock key send 0x32 hid code, which is treated as backslash. Instead it should be 0x39 code. This affects sending uppercase keys, as they typed whith caps lock active. While on x86 this can be workarounded by using ps/2 protocol. On Power it is crusial as we don't have anything else than USB. This is fixes guest automation tasts over vnc. Signed-off-by: Dinar Valeev Signed-off-by: Gerd Hoffmann --- hw/input/hid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/input/hid.c b/hw/input/hid.c index ad1855528d..6841cb8649 100644 --- a/hw/input/hid.c +++ b/hw/input/hid.c @@ -41,7 +41,7 @@ static const uint8_t hid_usage_keys[0x100] = { 0x07, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x33, 0x34, 0x35, 0xe1, 0x31, 0x1d, 0x1b, 0x06, 0x19, 0x05, 0x11, 0x10, 0x36, 0x37, 0x38, 0xe5, 0x55, - 0xe2, 0x2c, 0x32, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, + 0xe2, 0x2c, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x53, 0x47, 0x5f, 0x60, 0x61, 0x56, 0x5c, 0x5d, 0x5e, 0x57, 0x59, 0x5a, 0x5b, 0x62, 0x63, 0x00, 0x00, 0x00, 0x44,