[These are some not-exhaustive notes based on an IRC chat with some of the QEMU/libvirt developers -- Thomas Huth, Andrea Bolognani, Dan Berrangé, Philippe Mathieu-Daudé. Mistakes are my own. This should actually be captured in an upstream document on "input devices", but until then we have to make do with this.] — 07 Oct 2020 (Virtual) Input Devices 101 for those in a hurry ================================================ For x86, currently you can't disable the PS/2 mouse & keyboard, as they're baked into the machine type. Non-x86 architectures --------------------- Other architectures don't have those [PS/2 devices], and generally you want to use a 'qemu-xhci' USB controller and then plug usb-tablet + usb-keyboard in them. 'ppc64' uses USB, so 'usb-mouse', 'usb-keyboard', 'usb-YouNameIt' are all supported. These USB devices are pluggable, but are not built-in [i.e. they _can_ be disabled if need be.] In general, most non-x86 architectures, you can start guests without input devices by using QEMU's '-nodefaults' command-line switch. Quirk on 'ppc64' ---------------- On 'ppc64', if graphics are present libvirt will automatically add USB keyboard and mouse too. If graphics are present *and* a USB tablet is also present, however, the USB mouse will be skipped to avoid having two pointing devices. Headless and headful guests; a word on s390x --------------------------------------------- If you want a headless guest, don't add graphics or input devices and you'll get as little of that as QEMU allows. If you want a guest with GUI, add graphics as well as a 'qemu-xhci' USB controller, a USB keyboard and a USB tablet for the best possible user experience This will work for all architectures except s390x, where you have to use 'virtio-input' instead of USB. What is QEMU's '-nodefaults'? ----------------------------- The idea of '-nodefaults' is to run minimal hardware, bare minimum, nothing plugged in. So if your motherboard comes with PS/2 and USB buses built-in, then the buses "merely exist". However you won't have any device automatically created to use the said buses. - - - Use `virsh qemu-monitor-command vm1 --hmp info qom-tree` to get a fine-grained view of devices.