# # 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)