Files
server/usr/share/doc/qemu-system-common/system/barrier.html
2026-01-07 20:52:11 +01:00

198 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>QEMU Barrier Client &mdash; QEMU Debian 1:8.2.2+ds-0ubuntu1.11 documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=86f27845" />
<link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css?v=08e6c168" />
<link rel="shortcut icon" href="../_static/qemu_32x32.png"/>
<script src="../_static/jquery.js?v=8dae8fb0"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=802af9f6"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/custom.js?v=2ab9f71d"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="VNC security" href="vnc-security.html" />
<link rel="prev" title="Guest Loader" href="guest-loader.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #802400" >
<a href="../index.html" class="icon icon-home">
QEMU
<img src="../_static/qemu_128x128.png" class="logo" alt="Logo"/>
</a>
<div class="version">
8.2.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../about/index.html">About QEMU</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">System Emulation</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="invocation.html">Invocation</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-emulation.html">Device Emulation</a></li>
<li class="toctree-l2"><a class="reference internal" href="keys.html">Keys in the graphical frontends</a></li>
<li class="toctree-l2"><a class="reference internal" href="mux-chardev.html">Keys in the character backend multiplexer</a></li>
<li class="toctree-l2"><a class="reference internal" href="monitor.html">QEMU Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="images.html">Disk Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="virtio-net-failover.html">QEMU virtio-net standby (net_failover)</a></li>
<li class="toctree-l2"><a class="reference internal" href="linuxboot.html">Direct Linux Boot</a></li>
<li class="toctree-l2"><a class="reference internal" href="generic-loader.html">Generic Loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="guest-loader.html">Guest Loader</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">QEMU Barrier Client</a></li>
<li class="toctree-l2"><a class="reference internal" href="vnc-security.html">VNC security</a></li>
<li class="toctree-l2"><a class="reference internal" href="tls.html">TLS setup for network services</a></li>
<li class="toctree-l2"><a class="reference internal" href="secrets.html">Providing secret data to QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="authz.html">Client authorization</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdb.html">GDB usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="replay.html">Record/replay</a></li>
<li class="toctree-l2"><a class="reference internal" href="managed-startup.html">Managed start up options</a></li>
<li class="toctree-l2"><a class="reference internal" href="bootindex.html">Managing device boot order with bootindex properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="cpu-hotplug.html">Virtual CPU hotplug</a></li>
<li class="toctree-l2"><a class="reference internal" href="pr-manager.html">Persistent reservation managers</a></li>
<li class="toctree-l2"><a class="reference internal" href="targets.html">QEMU System Emulator Targets</a></li>
<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="multi-process.html">Multi-process QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="confidential-guest-support.html">Confidential Guest Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="vm-templating.html">QEMU VM templating</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../user/index.html">User Mode Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../interop/index.html">System Emulation Management and Interoperability</a></li>
<li class="toctree-l1"><a class="reference internal" href="../specs/index.html">System Emulation Guest Hardware Specifications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devel/index.html">Developer Information</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #802400" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">QEMU</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">System Emulation</a></li>
<li class="breadcrumb-item active">QEMU Barrier Client</li>
<li class="wy-breadcrumbs-aside">
<a href="https://gitlab.com/qemu-project/qemu/blob/master/docs/system/barrier.rst" class="fa fa-gitlab"> Edit on GitLab</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="qemu-barrier-client">
<h1>QEMU Barrier Client<a class="headerlink" href="#qemu-barrier-client" title="Link to this heading"></a></h1>
<p>Generally, mouse and keyboard are grabbed through the QEMU video
interface emulation.</p>
<p>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.</p>
<p>The QEMU Barrier client avoids this by implementing directly the Barrier
protocol into QEMU.</p>
<p><a class="reference external" href="https://github.com/debauchee/barrier">Barrier</a>
is a KVM (Keyboard-Video-Mouse) software forked from Symlesss
synergy 1.9 codebase.</p>
<p>This protocol is enabled by adding an input-barrier object to QEMU.</p>
<p>Syntax:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nb">input</span><span class="o">-</span><span class="n">barrier</span><span class="p">,</span><span class="nb">id</span><span class="o">=&lt;</span><span class="nb">object</span><span class="o">-</span><span class="nb">id</span><span class="o">&gt;</span><span class="p">,</span><span class="n">name</span><span class="o">=&lt;</span><span class="n">guest</span> <span class="n">display</span> <span class="n">name</span><span class="o">&gt;</span>
<span class="p">[,</span><span class="n">server</span><span class="o">=&lt;</span><span class="n">barrier</span> <span class="n">server</span> <span class="n">address</span><span class="o">&gt;</span><span class="p">][,</span><span class="n">port</span><span class="o">=&lt;</span><span class="n">barrier</span> <span class="n">server</span> <span class="n">port</span><span class="o">&gt;</span><span class="p">]</span>
<span class="p">[,</span><span class="n">x</span><span class="o">-</span><span class="n">origin</span><span class="o">=&lt;</span><span class="n">x</span><span class="o">-</span><span class="n">origin</span><span class="o">&gt;</span><span class="p">][,</span><span class="n">y</span><span class="o">-</span><span class="n">origin</span><span class="o">=&lt;</span><span class="n">y</span><span class="o">-</span><span class="n">origin</span><span class="o">&gt;</span><span class="p">]</span>
<span class="p">[,</span><span class="n">width</span><span class="o">=&lt;</span><span class="n">width</span><span class="o">&gt;</span><span class="p">][,</span><span class="n">height</span><span class="o">=&lt;</span><span class="n">height</span><span class="o">&gt;</span><span class="p">]</span>
</pre></div>
</div>
<p>The object can be added on the QEMU command line, for instance with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="nb">object</span> <span class="nb">input</span><span class="o">-</span><span class="n">barrier</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">barrier0</span><span class="p">,</span><span class="n">name</span><span class="o">=</span><span class="n">VM</span><span class="o">-</span><span class="mi">1</span>
</pre></div>
</div>
<p>where VM-1 is the name the display configured in the Barrier server
on the host providing the mouse and the keyboard events.</p>
<p>by default <code class="docutils literal notranslate"><span class="pre">&lt;barrier</span> <span class="pre">server</span> <span class="pre">address&gt;</span></code> is <code class="docutils literal notranslate"><span class="pre">localhost</span></code>,
<code class="docutils literal notranslate"><span class="pre">&lt;port&gt;</span></code> is <code class="docutils literal notranslate"><span class="pre">24800</span></code>, <code class="docutils literal notranslate"><span class="pre">&lt;x-origin&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">&lt;y-origin&gt;</span></code> are set to <code class="docutils literal notranslate"><span class="pre">0</span></code>,
<code class="docutils literal notranslate"><span class="pre">&lt;width&gt;</span></code> and <code class="docutils literal notranslate"><span class="pre">&lt;height&gt;</span></code> to <code class="docutils literal notranslate"><span class="pre">1920</span></code> and <code class="docutils literal notranslate"><span class="pre">1080</span></code>.</p>
<p>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:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">qemu</span><span class="p">)</span> <span class="n">object_del</span> <span class="n">barrier0</span>
<span class="p">(</span><span class="n">qemu</span><span class="p">)</span> <span class="n">object_add</span> <span class="nb">input</span><span class="o">-</span><span class="n">barrier</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">barrier0</span><span class="p">,</span><span class="n">name</span><span class="o">=</span><span class="n">VM</span><span class="o">-</span><span class="mi">1</span>
</pre></div>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="guest-loader.html" class="btn btn-neutral float-left" title="Guest Loader" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="vnc-security.html" class="btn btn-neutral float-right" title="VNC security" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, The QEMU Project Developers.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
<p></p>
<p>This documentation is for QEMU version 8.2.2.</p>
<p><a href="../about/license.html">QEMU and this manual are released under the
GNU General Public License, version 2.</a></p>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>