From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40099) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZAyUt-0002fh-Vh for qemu-devel@nongnu.org; Fri, 03 Jul 2015 06:47:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZAyUr-0002gt-2V for qemu-devel@nongnu.org; Fri, 03 Jul 2015 06:47:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50487) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZAyUq-0002gB-Rp for qemu-devel@nongnu.org; Fri, 03 Jul 2015 06:47:05 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id 7782C3173E1 for ; Fri, 3 Jul 2015 10:47:04 +0000 (UTC) From: Gerd Hoffmann Date: Fri, 3 Jul 2015 12:46:59 +0200 Message-Id: <1435920420-25594-2-git-send-email-kraxel@redhat.com> In-Reply-To: <1435920420-25594-1-git-send-email-kraxel@redhat.com> References: <1435920420-25594-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PULL 1/2] virtio-input: add input routing support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , "Michael S. Tsirkin" Add display and head properties for input routing to virtio-input devices, update multiseat documentation. Signed-off-by: Gerd Hoffmann --- docs/multiseat.txt | 17 +++++++++++++++-- hw/input/virtio-input-hid.c | 11 +++++++++++ include/hw/virtio/virtio-input.h | 2 ++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/docs/multiseat.txt b/docs/multiseat.txt index 814496e..d57d174 100644 --- a/docs/multiseat.txt +++ b/docs/multiseat.txt @@ -2,8 +2,8 @@ multiseat howto (with some multihead coverage) ============================================== -host side ---------- +host devices +------------ First you must compile qemu with a user interface supporting multihead/multiseat and input event routing. Right now this @@ -41,6 +41,19 @@ The "display=video2" sets up the input routing. Any input coming from the window which belongs to the video.2 display adapter will be routed to these input devices. +Starting with qemu 2.4 and linux kernel 4.1 you can also use virtio +for the input devices, using this ... + + -device pci-bridge,addr=12.0,chassis_nr=2,id=head.2 \ + -device secondary-vga,bus=head.2,addr=02.0,id=video.2 \ + -device virtio-keyboard-pci,bus=head.2,addr=03.0,display=video.2 \ + -device virtio-tablet-pci,bus=head.2,addr=03.0,display=video.2 + +... instead of xhci and usb hid devices. + +host ui +------- + The sdl2 ui will start up with two windows, one for each display device. The gtk ui will start with a single window and each display in a separate tab. You can either simply switch tabs to switch heads, diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c index 32cc94a..616a815 100644 --- a/hw/input/virtio-input-hid.c +++ b/hw/input/virtio-input-hid.c @@ -252,7 +252,11 @@ static void virtio_input_handle_sync(DeviceState *dev) static void virtio_input_hid_realize(DeviceState *dev, Error **errp) { VirtIOInputHID *vhid = VIRTIO_INPUT_HID(dev); + vhid->hs = qemu_input_handler_register(dev, vhid->handler); + if (vhid->display && vhid->hs) { + qemu_input_handler_bind(vhid->hs, vhid->display, vhid->head, NULL); + } } static void virtio_input_hid_unrealize(DeviceState *dev, Error **errp) @@ -301,10 +305,17 @@ static void virtio_input_hid_handle_status(VirtIOInput *vinput, } } +static Property virtio_input_hid_properties[] = { + DEFINE_PROP_STRING("display", VirtIOInputHID, display), + DEFINE_PROP_UINT32("head", VirtIOInputHID, head, 0), +}; + static void virtio_input_hid_class_init(ObjectClass *klass, void *data) { + DeviceClass *dc = DEVICE_CLASS(klass); VirtIOInputClass *vic = VIRTIO_INPUT_CLASS(klass); + dc->props = virtio_input_hid_properties; vic->realize = virtio_input_hid_realize; vic->unrealize = virtio_input_hid_unrealize; vic->change_active = virtio_input_hid_change_active; diff --git a/include/hw/virtio/virtio-input.h b/include/hw/virtio/virtio-input.h index fd5417d..af1c207 100644 --- a/include/hw/virtio/virtio-input.h +++ b/include/hw/virtio/virtio-input.h @@ -95,6 +95,8 @@ struct VirtIOInputClass { struct VirtIOInputHID { VirtIOInput parent_obj; + char *display; + uint32_t head; QemuInputHandler *handler; QemuInputHandlerState *hs; int ledstate; -- 1.8.3.1