# QEMU Barrier Client

Generally, mouse and keyboard are grabbed through the QEMU video interface emulation.

But when we want to use a video graphic adapter via a PCI passthrough there is no way to provide the keyboard and mouse inputs to the VM except by plugging a second set of mouse and keyboard to the host or by installing a KVM software in the guest OS.

The QEMU Barrier client avoids this by implementing directly the Barrier protocol into QEMU.

Barrier is a KVM (Keyboard-Video-Mouse) software forked from Symless's synergy 1.9 codebase.

This protocol is enabled by adding an input-barrier object to QEMU.

Syntax:

    input-barrier,id=<object-id>,name=<guest display name>
    [,server=<barrier server address>][,port=<barrier server port>]
    [,x-origin=<x-origin>][,y-origin=<y-origin>]
    [,width=<width>][,height=<height>]

The object can be added on the QEMU command line, for instance with:

    -object input-barrier,id=barrier0,name=VM-1

where VM-1 is the name the display configured in the Barrier server on the host providing the mouse and the keyboard events.

by default `<barrier server address>` is `localhost`, `<port>` is `24800`, `<x-origin>` and `<y-origin>` are set to `0`, `<width>` and `<height>` to `1920` and `1080`.

If the Barrier server is stopped QEMU needs to be reconnected manually, by removing and re-adding the input-barrier object, for instance with the help of the HMP monitor:

    (qemu) object_del barrier0
    (qemu) object_add input-barrier,id=barrier0,name=VM-1