QeBoard is a standalone, network-agnostic keyboard sharing utility. It allows you to control a remote computer's keyboard from your local machine, seamlessly switching between local and remote input with a simple hotkey.
- Standalone Architecture: Two single files (
sender.pyandreceiver.py) with zero pre-configuration. - Auto-Dependency Management: Automatically detects and installs required packages (
rich,paho-mqtt,cryptography, etc.) on first run. - Hybrid Networking:
- LAN: Low-latency direct TCP connection with mDNS auto-discovery.
- WAN: Automatic fallback to MQTT Relay for controlling devices across the internet (NAT traversal).
- End-to-End Encryption: All keystrokes are encrypted using Fernet (symmetric encryption) derived from a unique session pairing code.
- Terminal UI (TUI): Beautiful, real-time dashboard powered by
rich. - Cross-Platform: Works on Windows, Linux (X11), and macOS.
- Python 3.11 or higher.
- An active internet connection (for initial dependency install and WAN mode).
No manual installation is required. Just download the scripts.
Using uv (Recommended):
uv run --no-project receiver.py
uv run --no-project sender.pyUsing Standard Python:
python receiver.py
python sender.pyRun receiver.py on the computer you want to control.
- It will generate a Device ID and a Pairing Code.
- It listens for both local (LAN) and remote (WAN) connections.
Run sender.py on the computer you want to type from.
- Discovery: It automatically scans for devices on your local network and the global lobby.
- Connect:
- Press
cand enter the Device ID shown on the Receiver. - Enter the Pairing Code to establish a secure encrypted tunnel.
- Press
- Rescan: Press
rto refresh the device list.
- Toggle Mode: Press
Ctrl + F12to switch between:- LOCAL: Your keyboard controls your own computer.
- REMOTE: Your keystrokes are sent to the connected Receiver.
- Visual Feedback: The TUI changes color (Green = Local, Red = Remote) to indicate the current state.
QeBoard uses a dual-stack approach to ensure connectivity:
-
Service Discovery:
- LAN: Uses Zeroconf (mDNS) to broadcast presence on the local network.
- WAN: Publishes a "heartbeat" to a public MQTT Lobby (
qeboard/v1/lobby) so devices can find each other even behind firewalls.
-
Connection Handshake:
- The Sender attempts to connect via TCP (port 5555) first.
- If the LAN connection fails (timeout or firewall), it automatically falls back to MQTT (port 1883) using a public broker (
broker.hivemq.com).
-
Security:
- A Pairing Code (Fernet Key) is generated by the Receiver.
- This code is never transmitted over the network during discovery.
- The Sender must manually input this code.
- All subsequent traffic (keystrokes) is encrypted with this key, ensuring that even if the MQTT broker is public, your data remains private.
- Clipboard Sharing: Automatically sync clipboard content (text/images) between the Sender and Receiver when switching modes.
- Custom Keymaps: Remap keys on the fly (e.g., Mac to Windows layout translation).
- Mouse Support: Transmit mouse movements and clicks (requires more bandwidth/lower latency optimization).
- Private Broker: Option to host a private MQTT broker for enterprise environments.
I built this because I was too broke to buy a wireless keyboard. If you find it useful, please consider buying me a coffee! ☕



