Deskflow 可让您在 Windows、macOS 和 Linux 上的多台计算机之间共享一个鼠标和键盘。它就像一个软件 KVM(但没有视频)。
Go to file
Kentaro Hayashi faf83d7824
Some checks are pending
CodeQL Analysis / codeql (push) Waiting to run
Continuous Integration / ci-passed (push) Blocked by required conditions
Continuous Integration / test-results (push) Blocked by required conditions
Continuous Integration / lint-reuse (push) Waiting to run
Continuous Integration / lint-clang (push) Blocked by required conditions
Continuous Integration / analyze-valgrind (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[arch:amd64 config-args:-G Ninja name:windows-2022-x64 qt-version:6.10.3 runs-on:windows-2022 timeout:30 vcpkg-triplet:x64-windows-release]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[arch:arm64 config-args:-G Ninja name:windows-2022-arm64 qt-version:6.11.1 runs-on:windows-11-arm timeout:30 vcpkg-triplet:arm64-windows]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-DCMAKE_OSX_ARCHITECTURES="arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=14 name:macos-arm64 qt-version:6.11.1 runs-on:macos-15 timeout:10]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=12 -DCMAKE_OSX_SYSROOT=/Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk name:macos-x64 qt-ver… (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_DEV_DOCS=ON container:archlinux:latest like:arch name:archlinux-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:debian:stable-slim like:debian name:debian-arm64 runs-on:ubuntu-24.04-arm timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:debian:stable-slim like:debian name:debian-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:debian:testing-slim like:debian name:debian-testing-arm64 runs-on:ubuntu-24.04-arm timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:debian:testing-slim like:debian name:debian-testing-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:fedora:43 like:fedora name:fedora-43-arm64 runs-on:ubuntu-24.04-arm timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:fedora:43 like:fedora name:fedora-43-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:fedora:44 like:fedora name:fedora-44-arm64 runs-on:ubuntu-24.04-arm timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:fedora:44 like:fedora name:fedora-44-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:opensuse/tumbleweed:latest like:suse name:opensuse-arm64 runs-on:ubuntu-24.04-arm timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:opensuse/tumbleweed:latest like:suse name:opensuse-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:ubuntu:26.04 like:debian name:ubuntu-26.04-arm64 runs-on:ubuntu-24.04-arm timeout:20]) (push) Blocked by required conditions
Continuous Integration / ${{ matrix.target.name }} (map[config-args:-G Ninja -DCMAKE_INSTALL_PREFIX=/usr container:ubuntu:26.04 like:debian name:ubuntu-26.04-x86_64 runs-on:ubuntu-latest timeout:20]) (push) Blocked by required conditions
Continuous Integration / unix-${{ matrix.distro.name }} (map[name:freebsd]) (push) Blocked by required conditions
Continuous Integration / flatpak-${{matrix.flatpak.arch}} (map[arch:aarch64 runs-on:ubuntu-24.04-arm]) (push) Blocked by required conditions
Continuous Integration / flatpak-${{matrix.flatpak.arch}} (map[arch:x86_64 runs-on:ubuntu-latest]) (push) Blocked by required conditions
Continuous Integration / release (push) Blocked by required conditions
SonarCloud Analysis / sonar (push) Waiting to run
fix: drop misleading SSL_set1_host for OpenSSL 4.0.0
It will fix the following warning:

  In member function 'int SecureSocket::secureConnect(int)':
  /build/deskflow.work/src/lib/net/SecureSocket.cpp:479:16: warning: 'int SSL_set1_host(SSL*, const char*)' is deprecated: Since OpenSSL 4.0 [
  -Wdeprecated-declarations]
    479 |   SSL_set1_host(m_ssl->m_ssl, name.c_str());
        |   ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  In file included from /build/deskflow.work/src/lib/net/SslLogger.h:8,
                   from /build/deskflow.work/src/lib/net/SecureSocket.cpp:20:
  /usr/include/openssl/ssl.h:1922:34: note: declared here
   1922 | OSSL_DEPRECATEDIN_4_0 __owur int SSL_set1_host(SSL *s, const char *host);
        |                                  ^~~~~~~~~~~~~

NOTE: It seems that SSL_set1_host setup params for hostname verification, but
it will not be used correctly afterward (See
SSL_CTX_set_cert_verify_callback
in SecureSocket::initContext). This implicit behavior cause misleading
and harmful.

Signed-off-by: Kentaro Hayashi <kenhys@xdump.org>
2026-06-05 10:59:58 +01:00
.github ci: use Qt 6.11.1 for windows and mac os arm builds 2026-05-29 23:22:15 +01:00
cmake build(macos): remove unneeded setting for sysroot 2026-04-27 10:38:52 -04:00
deploy Revert "chore: move LICENSE -> docs/LICENSE" 2026-02-23 17:26:19 -05:00
docs feat: handle input capture session persistence 2026-05-05 11:58:02 +01:00
LICENSES build: do not ship vc msm file, link the redist in the readme 2025-03-06 19:17:53 +00:00
src fix: drop misleading SSL_set1_host for OpenSSL 4.0.0 2026-06-05 10:59:58 +01:00
translations feat: add AltGr modifier override to Screen Settings Dialog 2026-05-19 10:50:47 +01:00
.clang-format chore: Adjust Clang-format linter rules 2024-10-17 21:38:29 +01:00
.editorconfig docs: Add .editorconfig file 2024-10-15 23:08:28 +01:00
.gitattributes Force LF in gitattributes 2024-10-15 18:02:20 +01:00
.gitignore chore: add CLAUDE.md to the gitignore 2026-02-03 18:43:41 +00:00
CMakeLists.txt build: Replace WINAPI_MSWINDOWS with Q_OS_WIN 2026-03-06 08:57:31 -05:00
cspell.json docs(build): Fix minor nits in build docs 2025-11-20 08:15:34 -05:00
LICENSE Revert "chore: move LICENSE -> docs/LICENSE" 2026-02-23 17:26:19 -05:00
REUSE.toml chore: move doc dir to docs 2026-02-23 17:02:05 -05:00
sonar-project.properties feat: support translation generation 2025-10-27 17:54:32 -04:00

Deskflow

Deskflow is a free and open source keyboard and mouse sharing app. Use the keyboard, mouse, or trackpad of one computer to control nearby computers, and work seamlessly between them.

Homepage Code

Getting help online

  • View the wiki Online resource

Chat with us

Reporting security issues

Check Security to find out how to report security issues.