1*4a64939dSPeter MaydellQEMU Barrier Client 2*4a64939dSPeter Maydell=================== 3*4a64939dSPeter Maydell 4*4a64939dSPeter MaydellGenerally, mouse and keyboard are grabbed through the QEMU video 5*4a64939dSPeter Maydellinterface emulation. 6*4a64939dSPeter Maydell 7*4a64939dSPeter MaydellBut when we want to use a video graphic adapter via a PCI passthrough 8*4a64939dSPeter Maydellthere is no way to provide the keyboard and mouse inputs to the VM 9*4a64939dSPeter Maydellexcept by plugging a second set of mouse and keyboard to the host 10*4a64939dSPeter Maydellor by installing a KVM software in the guest OS. 11*4a64939dSPeter Maydell 12*4a64939dSPeter MaydellThe QEMU Barrier client avoids this by implementing directly the Barrier 13*4a64939dSPeter Maydellprotocol into QEMU. 14*4a64939dSPeter Maydell 15*4a64939dSPeter Maydell`Barrier <https://github.com/debauchee/barrier>`__ 16*4a64939dSPeter Maydellis a KVM (Keyboard-Video-Mouse) software forked from Symless's 17*4a64939dSPeter Maydellsynergy 1.9 codebase. 18*4a64939dSPeter Maydell 19*4a64939dSPeter MaydellThis protocol is enabled by adding an input-barrier object to QEMU. 20*4a64939dSPeter Maydell 21*4a64939dSPeter MaydellSyntax:: 22*4a64939dSPeter Maydell 23*4a64939dSPeter Maydell input-barrier,id=<object-id>,name=<guest display name> 24*4a64939dSPeter Maydell [,server=<barrier server address>][,port=<barrier server port>] 25*4a64939dSPeter Maydell [,x-origin=<x-origin>][,y-origin=<y-origin>] 26*4a64939dSPeter Maydell [,width=<width>][,height=<height>] 27*4a64939dSPeter Maydell 28*4a64939dSPeter MaydellThe object can be added on the QEMU command line, for instance with:: 29*4a64939dSPeter Maydell 30*4a64939dSPeter Maydell -object input-barrier,id=barrier0,name=VM-1 31*4a64939dSPeter Maydell 32*4a64939dSPeter Maydellwhere VM-1 is the name the display configured in the Barrier server 33*4a64939dSPeter Maydellon the host providing the mouse and the keyboard events. 34*4a64939dSPeter Maydell 35*4a64939dSPeter Maydellby default ``<barrier server address>`` is ``localhost``, 36*4a64939dSPeter Maydell``<port>`` is ``24800``, ``<x-origin>`` and ``<y-origin>`` are set to ``0``, 37*4a64939dSPeter Maydell``<width>`` and ``<height>`` to ``1920`` and ``1080``. 38*4a64939dSPeter Maydell 39*4a64939dSPeter MaydellIf the Barrier server is stopped QEMU needs to be reconnected manually, 40*4a64939dSPeter Maydellby removing and re-adding the input-barrier object, for instance 41*4a64939dSPeter Maydellwith the help of the HMP monitor:: 42*4a64939dSPeter Maydell 43*4a64939dSPeter Maydell (qemu) object_del barrier0 44*4a64939dSPeter Maydell (qemu) object_add input-barrier,id=barrier0,name=VM-1 45