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