virt-manager/virtinst/devices/input.py
Hugues Fafard 9028d728f8 cli: --input: add support for evdev inputs
This adds support for evdev inputs which were introduced in 7.4.0,
as well as passthrough inputs and some other misc options to complete
the --input command.

New suboptions:
* source.evdev
* source.dev
* source.repeat
* source.grab
* source.grabToggle
* model
2021-07-27 16:04:15 -04:00

57 lines
1.5 KiB
Python

#
# Copyright 2009, 2013 Red Hat, Inc.
#
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
from .device import Device
from ..xmlbuilder import XMLProperty
class DeviceInput(Device):
XML_NAME = "input"
TYPE_MOUSE = "mouse"
TYPE_TABLET = "tablet"
TYPE_KEYBOARD = "keyboard"
TYPE_EVDEV = "evdev"
BUS_PS2 = "ps2"
BUS_USB = "usb"
BUS_VIRTIO = "virtio"
BUS_XEN = "xen"
type = XMLProperty("./@type")
bus = XMLProperty("./@bus")
model = XMLProperty("./@model")
source_evdev = XMLProperty("./source/@evdev")
source_dev = XMLProperty("./source/@dev")
source_repeat = XMLProperty("./source/@repeat", is_onoff=True)
source_grab = XMLProperty("./source/@grab")
source_grabToggle = XMLProperty("./source/@grabToggle")
##################
# Default config #
##################
def _default_bus(self, _guest):
if self.type == self.TYPE_TABLET:
return self.BUS_USB
# This is not explicitly stated in the docs, but the example provided
# for evdev inputs does not have a bus type set and libvirt won't
# accept such XML either.
if self.type == self.TYPE_EVDEV:
return None
if self.conn.is_xen():
return self.BUS_XEN
return self.BUS_PS2
def set_defaults(self, guest):
if not self.type:
self.type = self.TYPE_MOUSE
if not self.bus:
self.bus = self._default_bus(guest)