Skip to content
udaysinh-gitPublic

About

A standalone, zero-config remote keyboard controller. Control any device (Windows/Linux/macOS) securely over LAN or WAN with a beautiful Terminal UI. (I was too broke to buy a new keybaord so i made this.)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QeBoard

Python Platform License Status

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.


Features

  • Standalone Architecture: Two single files (sender.py and receiver.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.

Getting Started

Prerequisites

  • Python 3.11 or higher.
  • An active internet connection (for initial dependency install and WAN mode).

Installation

No manual installation is required. Just download the scripts.

Using uv (Recommended):

uv run --no-project receiver.py
uv run --no-project sender.py

Using Standard Python:

python receiver.py
python sender.py

Usage Guide

1. Receiver (Target Device)

Run 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.

Receiver UI

2. Sender (Input Device)

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.

Sender UI

  • Connect:
    • Press c and enter the Device ID shown on the Receiver.
    • Enter the Pairing Code to establish a secure encrypted tunnel.

Connecting

  • Rescan: Press r to refresh the device list.

3. Controlling

  • Toggle Mode: Press Ctrl + F12 to 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.

How It Works

Architecture

QeBoard uses a dual-stack approach to ensure connectivity:

  1. 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.
  2. 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).
  3. 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.

Future Scope

  • 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.

Support

I built this because I was too broke to buy a wireless keyboard. If you find it useful, please consider buying me a coffee! ☕

Buy Me A Coffee


Built With Rich

About

A standalone, zero-config remote keyboard controller. Control any device (Windows/Linux/macOS) securely over LAN or WAN with a beautiful Terminal UI. (I was too broke to buy a new keybaord so i made this.)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages