xref: /qemu/docs/system/barrier.rst (revision 4a64939d)
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