virtio-input: add input routing support
Add display and head properties for input routing to virtio-input devices, update multiseat documentation. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
6686ce3f16
commit
5cce173323
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -95,6 +95,8 @@ struct VirtIOInputClass {
|
||||
|
||||
struct VirtIOInputHID {
|
||||
VirtIOInput parent_obj;
|
||||
char *display;
|
||||
uint32_t head;
|
||||
QemuInputHandler *handler;
|
||||
QemuInputHandlerState *hs;
|
||||
int ledstate;
|
||||
|
Loading…
Reference in New Issue
Block a user