https://github.com/szymonwilczek/talos-7
The Ultimate SudoPad. A programmable RP2040 macro keyboard with OLED.
https://github.com/szymonwilczek/talos-7
automation c diy firmware macropad mechanical-keyboard midi-controller oled productivity programmable-keyboard raspberry-pi-pico rp2040 tinyusb usb-hid web-serial
Last synced: 5 months ago
JSON representation
The Ultimate SudoPad. A programmable RP2040 macro keyboard with OLED.
- Host: GitHub
- URL: https://github.com/szymonwilczek/talos-7
- Owner: szymonwilczek
- License: mit
- Created: 2025-11-15T12:22:23.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-01-21T19:59:09.000Z (6 months ago)
- Last Synced: 2026-01-22T03:40:32.710Z (6 months ago)
- Topics: automation, c, diy, firmware, macropad, mechanical-keyboard, midi-controller, oled, productivity, programmable-keyboard, raspberry-pi-pico, rp2040, tinyusb, usb-hid, web-serial
- Language: C
- Homepage: https://talos-7.vercel.app
- Size: 1.6 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# ⥠Talos 7
### The Ultimate Open-Source SudoPad
[](https://github.com/szymonwilczek/talos-7/actions)
[](https://github.com/szymonwilczek/talos-7/releases)


---
## đ¸ Preview
---
## đ Overview
**Talos 7** is not just a keypad; it's a hardware productivity platform. I've name this functionality as SudoPad. Unlike traditional macro pads that rely on heavy background software (like Synapse or iCUE), **Talos 7 runs everything on the device itself**.
Once configured via the web interface, you can plug it into **any computer** (Windows, macOS, Linux), and it will work instantly. No drivers. No background agents. Just pure hardware emulation.
### Why Talos?
* **Hybrid Device:** Simultaneously acts as a Keyboard, Mouse, MIDI Controller, and Serial Device.
* **OLED Dashboard:** A 128x64 pixel display gives you real-time feedback on layers and actions.
* **Web Configurator:** Modify your layout directly in Chrome/Edge using Web Serial API.
* **Hephaestus CI/CD:** Automated cloud builds ensure you always have the latest firmware.
---
## đ ī¸ Hardware Architecture
Talos 7 is built on the accessible and powerful **Raspberry Pi Pico (RP2040)**.
### Bill of Materials (BOM)
* 1x **Raspberry Pi Pico**
* 7x **Mechanical Switches** (MX standard)
* 7x **Keycaps** (MX standard)
* 1x **SSD1306 OLED Display** (0.96", SPI Interface)
* 7x **LEDs** (0805, red)
* 10x **Resistors** (220R or 47R if you prefer dimmer light)
* 1x **RGB LED** (LTST-G563ZEGBW or FYLS-5050NRGBC)
* 1x **Micro-USB Data Cable**
### Wiring Diagram (Pinout)
See [Talos Schema](assets/board/talos_schema.pdf) for more information.
## đ Setup & Installation
### 1. Flash the Firmware
You don't need to compile anything manually.
1. Go to [**Releases**](https://github.com/szymonwilczek/talos-7/releases).
2. Download the latest `talos7.uf2`.
3. Hold the **BOOTSEL** button on your Pico while plugging it into USB.
4. A drive named `RPI-RP2` will appear. Drag and drop the `.uf2` file there.
5. The device will reboot. You should see the Talos Logo on the OLED.
### 2. Configure via Web
1. Open the **[Talos Configurator](https://talos-7.vercel.app)** in a Chromium-based browser (Chrome, Edge, Opera).
2. Click **Connect Device** and select *Talos 7*.
3. **Customize** your layers and buttons.
4. Click **Save Changes** to flash your config to the onboard memory.
---
## đī¸ Macro Dictionary
Talos 7 supports **8 distinct action types** (for now, if you have something in mind, be welcome to propose). Here is a deep dive into each capabilities.
### 1. â¨ī¸ Key Press
Simulates a standard keyboard press.
* **Parameters:** Keycode (A-Z, F1-F12, etc.).
* **Use Case:** Muting Discord (`F13`), Screenshot (`PrintScreen`), Game abilities (`Q`, `W`, `E`).
### 2. âī¸ Key Sequence
Executes a precise combination of up to 3 keys pressed simultaneously or sequentially.
* **Parameters:** List of keys + Modifiers (Ctrl, Alt, Shift, GUI).
* **Use Case:** `Ctrl` + `Shift` + `Esc` (Task Manager), `Win` + `Shift` + `S` (Snipping Tool).
### 3. đĄ Text String
Types a text snippet automatically.
* **Parameters:** Text content (up to 32 chars).
* **Behavior:** Works like a super-fast typist. Supports basic Unicode.
* **Use Case:** Email signatures, Git commands (`git push origin main`), etc.
### 4. đ Layer Toggle
Switches the active layer of the device.
* **Parameters:** Target Layer (Automatic Cycle).
* **Behavior:** Pressing this creates a loop: `Layer 1` â `Layer 2` â `Layer 3` â `Layer 4` â `Layer 1`.
* **Visuals:** The OLED instantly updates to show the new layer's name and icon.
### 5. đąī¸ Mouse Control
Takes hardware control of the mouse cursor.
* **Sub-types:**
* **Move:** X/Y coordinates (relative). Great for AFK scripts.
* **Click:** Left, Right, or Middle button (with Hold support).
* **Wheel:** Scroll Up/Down.
* **Use Case:** "Cookie Clicker" macros, in-game AFK preventions, preventing screen lock.
### 6. đ Script Engine (Power User)
The most powerful feature. Talos acts as a "BadUSB" device to inject and execute complex scripts on the host machine.
* **Platform Awareness:** You can define separate scripts for Windows, Linux, and macOS on the same button.
* **Workflow:**
1. Talos opens a terminal using a shortcut (e.g., `Win+R` or `Ctrl+Alt+T` - those are just default, you can provide your own sequence if you have it).
2. It types a temporary script file to `/tmp` or `%TEMP%`.
3. It executes the file and deletes it immediately.
* **Use Case:** `docker-compose up -d`, SSH into a server, batch rename files, organize desktop.
### 7. đš MIDI Note (Studio Mode)
Sends a MIDI Note On/Off signal via USB MIDI class.
* **Parameters:** Note (0-127), Velocity (0-127), Channel (1-16).
* **Why MIDI?** Unlike keyboard shortcuts, MIDI messages **never conflict** with typing and work even when the target app is in the background.
* **Integration:**
* **OBS:** Use `obs-midi` plugin to switch scenes or toggle sources.
* **DAWs:** Map to drum pads in FL Studio / Ableton.
### 8. đī¸ MIDI Control Change (CC)
Sends a generic MIDI value (Potentiometer/Fader simulation).
* **Parameters:** CC Number (0-119), Value (0-127), Channel (1-16).
* **Use Case:**
* **Lightroom:** Set Exposure to +1.0.
* **Premiere Pro:** Set Timeline Zoom level.
* **Windows Volume:** Use middleware (e.g., MidiKey2Key) to map CC to system volume.
### 9. đšī¸ Atari Breakout Game
A pleasant *Break* during work
---
## đ¤ DevOps: Hephaestus
This repository is managed by an automated github workflow named **Hephaestus**.
### Automated Versioning
I use **Semantic Versioning**. Hephaestus parses every commit message:
* `fix: ...` â Bumps **Patch** (1.0.0 â 1.0.1)
* `feat: ...` â Bumps **Minor** (1.0.1 â 1.1.0)
* `feat!: ...` â Bumps **Major** (1.1.0 â 2.0.0)
### Continuous Delivery
On every valid push to `main`:
1. Hephaestus spins up a cloud environment with the **ARM GCC Toolchain**.
2. It checks out the official **Pico SDK**.
3. It compiles the firmware (`talos7.uf2`).
4. It creates a **GitHub Release** with the new version and changelog.
---
## đ§ Troubleshooting
### Device not connecting in browser?
* **Windows:** Ensure you are not blocking USB devices via Group Policy. No drivers needed.
* **Linux:** If you are unable to connect to the device via the web configurator on Linux (receiving `NetworkError: Failed to execute open on SerialPort`), you need to configure `udev` rules to allow non-root access to the Raspberry Pi Pico.
1. **Create a new udev rule file:**
```bash
sudo nano /etc/udev/rules.d/99-talos.rules
```
2. **Add the following content**: This grants r/w permission to the device (Vendor ID 0x2e8a is RPi Pico):
```text
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", MODE="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", MODE="0666"
```
3. Reload the rules and reconnect:
```bash
sudo udevadm control --reload-rules # reload
sudo udevadm trigger # apply changes
```
**Note for Fedora/RHEL users**: If connection issues persist, ModemManager might be interfering with the serial port. You can temporarily stop it with: `sudo systemctl stop ModemManager`
* **Browser:** Use Chrome, Edge, or Opera. Firefox/Safari do not support Web Serial yet.
### Firmware update failed?
If you "bricked" the configuration or the device is unresponsive:
1. Unplug the device.
2. Hold the physical **BOOTSEL** button on the Pico.
3. Plug it in.
4. Flash the `.uf2` again. This factory resets the core logic.
---
## đ License & Credits
* **Core Logic:** Szymon Wilczek
* **3D Case**: Kacper Kil, thanks a lot again!
* **Project Link:** [github.com/szymonwilczek/talos-7](https://github.com/szymonwilczek/talos-7)
* **License:** [MIT License](./LICENSE.md)
Thanks for interest in my project!
Built with â¤ī¸ using **Raspberry Pi Pico SDK** and **TinyUSB**.