Robokeys Logo Robokeys

Important Notice Regarding Robokeys Limited

Please note that as of March 2026, the commercial entity Robokeys Limited has been disolved.

The Software Lives On

This administrative change does not affect the availability or development of the open-source projects. Ownership and maintenance of the code repositories (including the Robokeys platform) have been transferred to Rob Deas, who will continue to lead development and support the community.

Commercial Enquiries

Commercial support and consulting remains available directly through Rob Deas. s.

Robokeyboard

Programmable Hardware for Automation & Testing

Open-source Arduino-based tool that transforms automation, testing, demos, and productivity workflows. Control PCs remotely with macro commands triggered from any device.

View on GitHub Hardware Available

What Can Robokeyboard Do?

Whether you're delivering software demos, automating tasks, or building accessibility solutions, Robokeyboard helps you control computers remotely with precision and reliability.

🔧 Hardware Control

  • Send complex keystroke sequences from one PC to another
  • Use Arduino Due as a USB HID keyboard
  • Real-time pause, stop, or resume keyboard tasks
  • Interrupt-driven firmware for instant response

💻 Software Integration

  • Kotlin desktop app (GUI or CLI)
  • REST API for integration with other tools
  • Trigger actions from StreamDeck or AutoHotKey
  • UUID-tagged commands for response tracking

⚡ Modern Architecture

  • Coroutine-based task pool for smooth execution
  • Spring Boot foundation for enterprise integration
  • FlatLaf GUI for modern look & feel
  • State machine: IDLE, BUSY, PRIORITY

How It Works

Robokeyboard has two main components that work together seamlessly:

🔌 Arduino Sketch

Turns your Arduino Due into a keyboard emulator using the HID library. Listens on the serial port for commands and executes them with precise timing control.

// Arduino state machine
enum State { IDLE, BUSY, PRIORITY };

void processCommand(String cmd) {
if (cmd == "STOP") setState(IDLE);
else if (cmd == "PAUSE") pauseExecution();
else executeKeystrokes(cmd);
}

☕ Kotlin Client

Desktop app built with Spring Boot that sends commands over serial or simulates local keystrokes. Supports GUI, REST API, and CLI interfaces.

// Coroutine-based task execution
suspend fun executeSequence(keys: String) {
taskPool.submit {
serialPort.send("TYPE:$keys")
awaitResponse()
}
}

Use Cases

Live Demos

Perfectly timed sequences with pause/resume for flawless software demonstrations

Test Automation

Simulate user input or key sequences for comprehensive application testing

Stream Deck Macros

Trigger complex sequences from other machines or macro tools

Accessibility

Alternate keyboard control for special workflows and accessibility needs

Why Coroutines?

Originally, Robokeyboard used traditional threads, but managing long-running or interruptible tasks proved clunky. By switching to Kotlin coroutines, Robokeyboard can:

🚀 Non-Blocking Execution

Run multiple tasks without blocking the main thread

⚡ Immediate Response

Respond immediately to critical commands like pause or stop

📋 Efficient Queuing

Efficiently queue and manage keyboard sequences

The coroutine-based task pool makes Robokeyboard scalable, testable, and future-proof—ready for priority task support, advanced scheduling, and more.

🚀 Want to Skip the Setup?

We offer a ready-to-use Robokeyboard device: an Arduino Due-compatible board pre-installed with firmware and mounted in a custom 3D-printed desktop case.

🛠️ DIY Option

  • Open-source Arduino sketch
  • Kotlin client source code
  • Complete documentation
  • Community support
Get Started Free

📦 Ready-to-Use Hardware

  • Pre-flashed Arduino Due-compatible board
  • Custom 3D-printed desktop enclosure
  • USB cable + pre-configured Kotlin client
  • Perfect for rapid prototyping and demos
  • Enterprise licensing and custom hardware configurations available for commercial deployments.
Get Pricing

Ideal for developers, automation testers, educators, or anyone looking to explore keyboard-based control. We make it easy so you can get automating right away.

Coming Soon

🎯 Advanced Prioritization

Enhanced task prioritization in coroutine pool

🥧 Raspberry Pi Integration

Integration with Raspberry Pi-based hardware

🎨 GUI Editor

Dedicated GUI-based editor for keystroke sequences

🧪 Enhanced Testing

Improved unit + integration testing tools for async flows

Get Involved

Robokeyboard is open-source (GPL v3), and contributions are always welcome! Whether you're adding features, building integrations, improving documentation, or sharing new use cases, there’s plenty of opportunity to help the project grow.

Licensing Options

🆓 Open Source (GPL v3):

Ideal for personal use, research, experimentation, and open-source projects.

🏢 Commercial License:

Need to integrate Robokeyboard with proprietary systems, or distribute it as part of a commercial product?

Contact us for enterprise licensing options.

If your use case requires a different license, just ask.

View Source Code   Collaborate

Because Robokeyboard is available under both open source and commercial terms, you get the freedom to experiment—and the flexibility to build real products.