{"id":36939976,"url":"https://github.com/szymonwilczek/talos-7","last_synced_at":"2026-02-15T04:02:44.117Z","repository":{"id":326301772,"uuid":"1097036900","full_name":"szymonwilczek/talos-7","owner":"szymonwilczek","description":"The Ultimate SudoPad. A programmable RP2040 macro keyboard with OLED.","archived":false,"fork":false,"pushed_at":"2026-01-21T19:59:09.000Z","size":1675,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-22T03:40:32.710Z","etag":null,"topics":["automation","c","diy","firmware","macropad","mechanical-keyboard","midi-controller","oled","productivity","programmable-keyboard","raspberry-pi-pico","rp2040","tinyusb","usb-hid","web-serial"],"latest_commit_sha":null,"homepage":"https://talos-7.vercel.app","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/szymonwilczek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-15T12:22:23.000Z","updated_at":"2026-01-21T19:57:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/szymonwilczek/talos-7","commit_stats":null,"previous_names":["szymonwilczek/talos-7"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/szymonwilczek/talos-7","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szymonwilczek%2Ftalos-7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szymonwilczek%2Ftalos-7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szymonwilczek%2Ftalos-7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szymonwilczek%2Ftalos-7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/szymonwilczek","download_url":"https://codeload.github.com/szymonwilczek/talos-7/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/szymonwilczek%2Ftalos-7/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29468393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T01:01:38.065Z","status":"online","status_checked_at":"2026-02-15T02:00:07.449Z","response_time":118,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","c","diy","firmware","macropad","mechanical-keyboard","midi-controller","oled","productivity","programmable-keyboard","raspberry-pi-pico","rp2040","tinyusb","usb-hid","web-serial"],"created_at":"2026-01-13T10:33:23.583Z","updated_at":"2026-02-15T04:02:44.112Z","avatar_url":"https://github.com/szymonwilczek.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚡ Talos 7\n### The Ultimate Open-Source SudoPad \n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"web-interface/public/talos_logo.png\" alt=\"Talos 7 Logo\" width=\"180\"/\u003e\n  \u003cbr/\u003e\n  \n  [![Hephaestus Forge](https://github.com/szymonwilczek/talos-7/actions/workflows/bump-firmware.yml/badge.svg)](https://github.com/szymonwilczek/talos-7/actions)\n  [![Firmware](https://img.shields.io/github/v/release/szymonwilczek/talos-7?label=firmware\u0026color=00599C)](https://github.com/szymonwilczek/talos-7/releases)\n  ![License](https://img.shields.io/badge/license-MIT-green)\n  ![Platform](https://img.shields.io/badge/platform-RP2040-C51A4A)\n\u003c/div\u003e\n\n---\n\n## 📸 Preview\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cimg src=\"assets/images/talos_front.JPEG\" alt=\"Talos Front\" width=\"100%\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cimg src=\"assets/images/talos_atari.JPEG\" alt=\"Talos Back\" width=\"100%\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd colspan=\"2\" align=\"center\"\u003e\n      \u003cimg src=\"assets/images/talos_back.JPEG\" alt=\"Atari Game\" width=\"100%\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/fb88e3e2-818f-48c2-9b6d-56c365594454\" controls\u003e\u003c/video\u003e\n\u003c/div\u003e\n\n---\n\n## 📖 Overview\n\n**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**.\n\nOnce 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.\n\n### Why Talos?\n* **Hybrid Device:** Simultaneously acts as a Keyboard, Mouse, MIDI Controller, and Serial Device.\n* **OLED Dashboard:** A 128x64 pixel display gives you real-time feedback on layers and actions.\n* **Web Configurator:** Modify your layout directly in Chrome/Edge using Web Serial API.\n* **Hephaestus CI/CD:** Automated cloud builds ensure you always have the latest firmware.\n\n---\n\n## 🛠️ Hardware Architecture\n\nTalos 7 is built on the accessible and powerful **Raspberry Pi Pico (RP2040)**.\n\n### Bill of Materials (BOM)\n* 1x **Raspberry Pi Pico**\n* 7x **Mechanical Switches** (MX standard)\n* 7x **Keycaps** (MX standard)\n* 1x **SSD1306 OLED Display** (0.96\", SPI Interface)\n* 7x **LEDs** (0805, red)\n* 10x **Resistors** (220R or 47R if you prefer dimmer light)\n* 1x **RGB LED** (LTST-G563ZEGBW or FYLS-5050NRGBC)\n* 1x **Micro-USB Data Cable**\n\n### Wiring Diagram (Pinout)\n\nSee [Talos Schema](assets/board/talos_schema.pdf) for more information.\n\n## 🚀 Setup \u0026 Installation\n\n### 1. Flash the Firmware\nYou don't need to compile anything manually.\n1.  Go to [**Releases**](https://github.com/szymonwilczek/talos-7/releases).\n2.  Download the latest `talos7.uf2`.\n3.  Hold the **BOOTSEL** button on your Pico while plugging it into USB.\n4.  A drive named `RPI-RP2` will appear. Drag and drop the `.uf2` file there.\n5.  The device will reboot. You should see the Talos Logo on the OLED.\n\n### 2. Configure via Web\n1.  Open the **[Talos Configurator](https://talos-7.vercel.app)** in a Chromium-based browser (Chrome, Edge, Opera).\n2.  Click **Connect Device** and select *Talos 7*.\n3.  **Customize** your layers and buttons.\n4.  Click **Save Changes** to flash your config to the onboard memory.\n\n---\n\n## 🎛️ Macro Dictionary\n\nTalos 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.\n\n### 1. ⌨️ Key Press\nSimulates a standard keyboard press.\n* **Parameters:** Keycode (A-Z, F1-F12, etc.).\n* **Use Case:** Muting Discord (`F13`), Screenshot (`PrintScreen`), Game abilities (`Q`, `W`, `E`).\n\n### 2. ⛓️ Key Sequence\nExecutes a precise combination of up to 3 keys pressed simultaneously or sequentially.\n* **Parameters:** List of keys + Modifiers (Ctrl, Alt, Shift, GUI).\n* **Use Case:** `Ctrl` + `Shift` + `Esc` (Task Manager), `Win` + `Shift` + `S` (Snipping Tool).\n\n### 3. 🔡 Text String\nTypes a text snippet automatically.\n* **Parameters:** Text content (up to 32 chars).\n* **Behavior:** Works like a super-fast typist. Supports basic Unicode.\n* **Use Case:** Email signatures, Git commands (`git push origin main`), etc.\n\n### 4. 🔄 Layer Toggle\nSwitches the active layer of the device.\n* **Parameters:** Target Layer (Automatic Cycle).\n* **Behavior:** Pressing this creates a loop: `Layer 1` → `Layer 2` → `Layer 3` → `Layer 4` → `Layer 1`.\n* **Visuals:** The OLED instantly updates to show the new layer's name and icon.\n\n### 5. 🖱️ Mouse Control\nTakes hardware control of the mouse cursor.\n* **Sub-types:**\n    * **Move:** X/Y coordinates (relative). Great for AFK scripts.\n    * **Click:** Left, Right, or Middle button (with Hold support).\n    * **Wheel:** Scroll Up/Down.\n* **Use Case:** \"Cookie Clicker\" macros, in-game AFK preventions, preventing screen lock.\n\n### 6. 📜 Script Engine (Power User)\nThe most powerful feature. Talos acts as a \"BadUSB\" device to inject and execute complex scripts on the host machine.\n* **Platform Awareness:** You can define separate scripts for Windows, Linux, and macOS on the same button.\n* **Workflow:**\n    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).\n    2.  It types a temporary script file to `/tmp` or `%TEMP%`.\n    3.  It executes the file and deletes it immediately.\n* **Use Case:** `docker-compose up -d`, SSH into a server, batch rename files, organize desktop.\n\n### 7. 🎹 MIDI Note (Studio Mode)\nSends a MIDI Note On/Off signal via USB MIDI class.\n* **Parameters:** Note (0-127), Velocity (0-127), Channel (1-16).\n* **Why MIDI?** Unlike keyboard shortcuts, MIDI messages **never conflict** with typing and work even when the target app is in the background.\n* **Integration:**\n    * **OBS:** Use `obs-midi` plugin to switch scenes or toggle sources.\n    * **DAWs:** Map to drum pads in FL Studio / Ableton.\n\n### 8. 🎚️ MIDI Control Change (CC)\nSends a generic MIDI value (Potentiometer/Fader simulation).\n* **Parameters:** CC Number (0-119), Value (0-127), Channel (1-16).\n* **Use Case:**\n    * **Lightroom:** Set Exposure to +1.0.\n    * **Premiere Pro:** Set Timeline Zoom level.\n    * **Windows Volume:** Use middleware (e.g., MidiKey2Key) to map CC to system volume.\n\n### 9. 🕹️ Atari Breakout Game\nA pleasant *Break* during work\n\n---\n\n## 🤖 DevOps: Hephaestus\n\nThis repository is managed by an automated github workflow named **Hephaestus**.\n\n### Automated Versioning\nI use **Semantic Versioning**. Hephaestus parses every commit message:\n* `fix: ...` ➜ Bumps **Patch** (1.0.0 ➜ 1.0.1)\n* `feat: ...` ➜ Bumps **Minor** (1.0.1 ➜ 1.1.0)\n* `feat!: ...` ➜ Bumps **Major** (1.1.0 ➜ 2.0.0)\n\n### Continuous Delivery\nOn every valid push to `main`:\n1.  Hephaestus spins up a cloud environment with the **ARM GCC Toolchain**.\n2.  It checks out the official **Pico SDK**.\n3.  It compiles the firmware (`talos7.uf2`).\n4.  It creates a **GitHub Release** with the new version and changelog.\n\n---\n\n## 🔧 Troubleshooting\n\n### Device not connecting in browser?\n* **Windows:** Ensure you are not blocking USB devices via Group Policy. No drivers needed.\n* **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.\n\n1. **Create a new udev rule file:**\n   ```bash\n   sudo nano /etc/udev/rules.d/99-talos.rules\n   ```\n\n2. **Add the following content**: This grants r/w permission to the device (Vendor ID 0x2e8a is RPi Pico):\n\n```text\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"2e8a\", MODE=\"0666\"\nKERNEL==\"ttyACM*\", ATTRS{idVendor}==\"2e8a\", MODE=\"0666\"\n```\n\n3. Reload the rules and reconnect:\n\n```bash\nsudo udevadm control --reload-rules # reload\nsudo udevadm trigger # apply changes\n```\n\n**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`\n\n\n\n* **Browser:** Use Chrome, Edge, or Opera. Firefox/Safari do not support Web Serial yet.\n\n### Firmware update failed?\nIf you \"bricked\" the configuration or the device is unresponsive:\n1.  Unplug the device.\n2.  Hold the physical **BOOTSEL** button on the Pico.\n3.  Plug it in.\n4.  Flash the `.uf2` again. This factory resets the core logic.\n\n---\n\n## 📄 License \u0026 Credits\n\n* **Core Logic:** Szymon Wilczek\n* **3D Case**: Kacper Kil, thanks a lot again!\n* **Project Link:** [github.com/szymonwilczek/talos-7](https://github.com/szymonwilczek/talos-7)\n* **License:** [MIT License](./LICENSE.md)\n\nThanks for interest in my project!\n\nBuilt with ❤️ using **Raspberry Pi Pico SDK** and **TinyUSB**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszymonwilczek%2Ftalos-7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fszymonwilczek%2Ftalos-7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fszymonwilczek%2Ftalos-7/lists"}