{"id":4361,"date":"2026-04-02T07:23:15","date_gmt":"2026-04-02T05:23:15","guid":{"rendered":"https:\/\/g7itchme.wordpress.com\/?p=4361"},"modified":"2026-04-02T07:23:15","modified_gmt":"2026-04-02T05:23:15","slug":"die-selbstgebaute-shortcut-tastatur-mit-esp32-eine-bauanleitung-fur-maker","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/die-selbstgebaute-shortcut-tastatur-mit-esp32-eine-bauanleitung-fur-maker\/","title":{"rendered":"Die selbstgebaute Shortcut-Tastatur mit ESP32: Eine Bauanleitung f\u00fcr Maker"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Autor: DerSchneider<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Was haben Programmierer, Videoeditoren und 3D-Druck-Enthusiasten gemeinsam? Sie alle verlieren kostbare Zeit mit wiederkehrenden Tastenkombinationen. Strg+C, Strg+V, Alt+Tab \u2013 die linke Hand wandert \u00fcber die Tastatur, die Augen suchen kurz die richtigen Tasten. Effizienter w\u00e4re ein dediziertes Bedienfeld, eine Makro-Tastatur mit programmierbaren Tasten, die genau die Befehle ausf\u00fchrt, die man t\u00e4glich braucht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Artikel zeige ich, wie man aus zw\u00f6lf gebrauchten Cherry-Tasten, einem ESP32-Dev-Board und ein paar L\u00f6tverbindungen eine kompakte Shortcut-Tastatur baut. Anders als handels\u00fcbliche Stream Decks oder Elgato-Controller kostet dieses Projekt nur etwa 15\u201320 Euro \u2013 vorausgesetzt, die Tasten und das Geh\u00e4use sind bereits vorhanden. Der Fokus liegt auf einer sauberen Code-Erkl\u00e4rung, damit jeder Maker die Firmware sp\u00e4ter selbst anpassen kann. Wir nutzen dabei die eingebaute Bluetooth-Funktion des ESP32, sodass die Tastatur kabellos mit PC oder Laptop kommuniziert \u2013 ein echter Gewinn an Flexibilit\u00e4t.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Hauptteil<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Eine kurze Geschichte der programmierbaren Tastaturen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Idee, Tasten mit Makros zu belegen, ist fast so alt wie die Computertastatur selbst. Bereits in den 1980er-Jahren boten Btx-Terminals und fr\u00fche PCs wie der Commodore 64 die M\u00f6glichkeit, Funktionstasten mit benutzerdefinierten Befehlsfolgen zu belegen. Die eigentliche Revolution brachten jedoch Gaming-Tastaturen der 2000er Jahre: Razer, Logitech und Corsair integrierten zus\u00e4tzliche Makro-Tasten, deren Belegung \u00fcber Treiber-Software im Betriebssystem erfolgte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Parallel dazu entwickelte sich die Open-Source-Bewegung im Bereich der Tastatur-Firmware. Projekte wie&nbsp;<strong>QMK<\/strong>&nbsp;(Quantum Mechanical Keyboard) und sp\u00e4ter&nbsp;<strong>ZMK<\/strong>&nbsp;erlaubten es Bastlern, vollst\u00e4ndig eigene Tastaturen zu programmieren \u2013 inklusive Ebenen, Doppelfunktionen und komplexer Makros. Der ESP32, urspr\u00fcnglich als WLAN\/BT-Modul f\u00fcr IoT-Ger\u00e4te konzipiert, fand dank seiner F\u00e4higkeit, sich als Bluetooth-HID (Human Interface Device) zu tarnen, schnell den Weg in die Maker-Szene. Heute ist die Kombination aus ESP32 und der Bibliothek&nbsp;<code>BleKeyboard<\/code>&nbsp;der einfachste Einstieg in eine eigene drahtlose Makro-Tastatur \u2013 ohne tiefe Low-Level-Kenntnisse.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Hardware-Aufbau: Verkabelung ohne Matrix<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">2.1 Komponentenliste<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Bauteil<\/th><th class=\"has-text-align-left\" data-align=\"left\">Anzahl<\/th><th class=\"has-text-align-left\" data-align=\"left\">Bemerkung<\/th><\/tr><\/thead><tbody><tr><td>ESP32 Dev Board (z.B. NodeMCU-32S)<\/td><td>1<\/td><td>Mit USB-Buchse, GPIOs zug\u00e4nglich<\/td><\/tr><tr><td>Cherry MX-Taster (oder kompatible)<\/td><td>12<\/td><td>Bereits im Geh\u00e4use verbaut<\/td><\/tr><tr><td>L\u00f6tzinn, Kabel (0,14 mm\u00b2)<\/td><td>&#8211;<\/td><td>Alternativ: DuPont-Br\u00fccken<\/td><\/tr><tr><td>USB-C\/Micro-USB Kabel<\/td><td>1<\/td><td>F\u00fcr Strom &amp; Flashen; sp\u00e4ter nur f\u00fcr Strom<\/td><\/tr><tr><td>5 k\u03a9 Widerstand (optional)<\/td><td>1<\/td><td>Falls HID-Erkennung scheitert<\/td><\/tr><tr><td>Kurze USB-Verl\u00e4ngerung (max. 1m)<\/td><td>optional<\/td><td>Verringert Signalverluste<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">2.2 Verdrahtungsprinzip<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Da wir auf eine Diodenmatrix verzichten (die zw\u00f6lf Tasten sind \u00fcberschaubar), wird jeder Taster direkt an einen separaten GPIO-Pin und an GND angeschlossen. Das ist die einfachste Topologie, aber ohne Dioden besteht bei gleichzeitigem Dr\u00fccken von drei oder mehr Tasten die Gefahr von&nbsp;<strong>Ghosting<\/strong>&nbsp;(Phantom-Tastensignale). F\u00fcr reine Shortcut-Tasten, die \u00fcblicherweise einzeln gedr\u00fcckt werden, ist das akzeptabel. Wer sichergehen m\u00f6chte, l\u00f6tet eine 1N4148-Diode in Reihe zu jedem Taster \u2013 das ist aber f\u00fcr dieses Projekt optional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Anschlussplan (Taster 1..12):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Jeder Taster: Ein Kontakt \u2192 GPIO aus untenstehender Liste, der andere Kontakt \u2192 GND (Masse).<\/li>\n\n\n\n<li>Die internen Pullup-Widerst\u00e4nde des ESP32 werden im Code aktiviert, daher keine externen Widerst\u00e4nde n\u00f6tig.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Taste<\/th><th class=\"has-text-align-left\" data-align=\"left\">GPIO<\/th><th class=\"has-text-align-left\" data-align=\"left\">Funktion (vorl\u00e4ufig)<\/th><\/tr><\/thead><tbody><tr><td>T1<\/td><td>13<\/td><td>Strg+C (Kopieren)<\/td><\/tr><tr><td>T2<\/td><td>12<\/td><td>Strg+V (Einf\u00fcgen)<\/td><\/tr><tr><td>T3<\/td><td>14<\/td><td><em>reserviert<\/em><\/td><\/tr><tr><td>T4<\/td><td>27<\/td><td>Win+Shift+S (Screenshot)<\/td><\/tr><tr><td>T5<\/td><td>26<\/td><td>Win+D (Desktop)<\/td><\/tr><tr><td>T6<\/td><td>25<\/td><td>Play\/Pause<\/td><\/tr><tr><td>T7<\/td><td>33<\/td><td>Terminal \u00f6ffnen<\/td><\/tr><tr><td>T8<\/td><td>32<\/td><td>Terminal schlie\u00dfen (Alt+F4)<\/td><\/tr><tr><td>T9<\/td><td>35<\/td><td><em>frei<\/em><\/td><\/tr><tr><td>T10<\/td><td>34<\/td><td><em>frei<\/em><\/td><\/tr><tr><td>T11<\/td><td>39<\/td><td><em>frei<\/em><\/td><\/tr><tr><td>T12<\/td><td>36<\/td><td><em>frei<\/em><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Achtung:<\/strong>&nbsp;Die GPIOs 34, 35, 36 und 39 sind auf vielen ESP32-Boards nur als Eing\u00e4nge nutzbar (keine internen Pullups!). Im Code muss hier&nbsp;<code>INPUT<\/code>&nbsp;statt&nbsp;<code>INPUT_PULLUP<\/code>&nbsp;verwendet werden, und ein externer 10 k\u03a9-Widerstand zwischen GPIO und 3,3 V ist erforderlich. Wir vereinfachen: F\u00fcr die ersten acht Tasten wurden nur Pins mit Pullup-F\u00e4higkeit gew\u00e4hlt.<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">2.3 L\u00f6tanleitung f\u00fcr Einsteiger<\/h4>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Vorbereitung:<\/strong>\u00a0Entzinnen Sie die L\u00f6tpads der Cherry-Taster, falls sie bereits angel\u00f6tet waren.<\/li>\n\n\n\n<li><strong>Kabel zuschneiden:<\/strong>\u00a0Zw\u00f6lf St\u00fccke Litze \u00e0 10 cm.<\/li>\n\n\n\n<li><strong>Anl\u00f6ten an die Taster:<\/strong>\u00a0Jeweils ein Kabel an einen der beiden Kontakte jedes Tasters. Den zweiten Kontakt aller Taster verbinden Sie mit einer gemeinsamen GND-Leitung (z.B. als Sternpunkt).<\/li>\n\n\n\n<li><strong>Verbindung zum ESP32:<\/strong>\u00a0Die zw\u00f6lf einzelnen Kabel l\u00f6ten Sie an die oben genannten GPIO-Pins. Das gemeinsame GND-Kabel l\u00f6ten Sie an einen GND-Pin des ESP32.<\/li>\n\n\n\n<li><strong>Isolierung:<\/strong>\u00a0Schrumpfschlauch oder Hei\u00dfkleber verhindert Kurzschl\u00fcsse im Geh\u00e4use.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Risikohinweis:<\/strong>&nbsp;Arbeiten Sie niemals an einem stromf\u00fchrenden ESP32. Ein versehentlicher Kurzschluss zwischen 3,3 V und GND kann den Chip zerst\u00f6ren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Die Software: Code-Erkl\u00e4rung Schritt f\u00fcr Schritt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Firmware basiert auf der Arduino-IDE und der Bibliothek&nbsp;<code>BleKeyboard<\/code>&nbsp;von T-vK (GitHub-Repository:&nbsp;<a href=\"https:\/\/github.com\/T-vK\/ESP32-BLE-Keyboard\" target=\"_blank\" rel=\"noreferrer noopener\">ESP32-BLE-Keyboard<\/a>). Diese Bibliothek emuliert eine Bluetooth-Tastatur \u2013 jedes Dr\u00fccken einer Taste auf dem ESP32 wird vom Betriebssystem als Tastendruck einer gew\u00f6hnlichen Bluetooth-Tastatur erkannt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.1 Vorbereitung der Arduino-IDE<\/h4>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Installieren Sie die Arduino-IDE (Version 2.x empfohlen).<\/li>\n\n\n\n<li>F\u00fcgen Sie die ESP32-Board-URL hinzu:\u00a0<code>https:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json<\/code>\u00a0(unter Datei \u2192 Voreinstellungen \u2192 Zus\u00e4tzliche Boardverwalter-URLs).<\/li>\n\n\n\n<li>Installieren Sie das Boardpaket &#8222;ESP32&#8220; (Version 3.0.0 oder neuer) \u00fcber den Boardverwalter.<\/li>\n\n\n\n<li>Installieren Sie die Bibliothek\u00a0<code>BleKeyboard<\/code>\u00a0\u00fcber den Bibliotheksverwalter (Suche nach &#8222;BleKeyboard&#8220; von\u00a0<code>T-vK<\/code>).<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">3.2 Der vollst\u00e4ndige Code (Version f\u00fcr die ersten acht Tasten)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">cpp<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;BleKeyboard.h&gt;\n\n<em>\/\/ Erzeuge ein Bluetooth-Tastatur-Objekt mit dem Namen \"Kerm-it-Shortcut\"<\/em>\nBleKeyboard keyboard(\"Kerm-it-Shortcut\");\n\n<em>\/\/ Liste der GPIO-Pins f\u00fcr Tasten 1..12 (in Reihenfolge)<\/em>\nconst uint8_t pins[12] = {13,12,14,27,26,25,33,32,35,34,39,36};\n\nvoid setup() {\n  <em>\/\/ Alle Pins als Eing\u00e4nge mit internem Pullup-Widerstand konfigurieren<\/em>\n  for(int i = 0; i &lt; 12; i++) {\n    pinMode(pins[i], INPUT_PULLUP);\n  }\n  <em>\/\/ Bluetooth-Tastatur starten<\/em>\n  keyboard.begin();\n}\n\nvoid loop() {\n  <em>\/\/ Jede Taste nacheinander abfragen<\/em>\n  for(int i = 0; i &lt; 12; i++) {\n    <em>\/\/ LOW bedeutet: Taster gedr\u00fcckt (weil der andere Pin an GND liegt)<\/em>\n    if(digitalRead(pins[i]) == LOW) {\n      action(i);               <em>\/\/ F\u00fchre die zugeh\u00f6rige Aktion aus<\/em>\n      while(digitalRead(pins[i]) == LOW); <em>\/\/ Warte auf Loslassen (Entprellung)<\/em>\n      delay(20);               <em>\/\/ Kurze Pause zur Stabilisierung<\/em>\n    }\n  }\n}\n\n<em>\/\/ Funktion f\u00fcr jede Taste (Index 0 = T1, 1 = T2, ...)<\/em>\nvoid action(int keyIndex) {\n  switch(keyIndex) {\n    case 0: <em>\/\/ T1: Strg+C<\/em>\n      keyboard.press(KEY_LEFT_CTRL);\n      keyboard.press('c');\n      delay(100);\n      keyboard.releaseAll();\n      break;\n\n    case 1: <em>\/\/ T2: Strg+V<\/em>\n      keyboard.press(KEY_LEFT_CTRL);\n      keyboard.press('v');\n      delay(100);\n      keyboard.releaseAll();\n      break;\n\n    case 3: <em>\/\/ T4: Win+Shift+S<\/em>\n      keyboard.press(KEY_LEFT_GUI);   <em>\/\/ Windows-Taste<\/em>\n      keyboard.press(KEY_LEFT_SHIFT);\n      keyboard.press('s');\n      delay(100);\n      keyboard.releaseAll();\n      break;\n\n    case 4: <em>\/\/ T5: Win+D (Desktop anzeigen)<\/em>\n      keyboard.press(KEY_LEFT_GUI);\n      keyboard.press('d');\n      delay(100);\n      keyboard.releaseAll();\n      break;\n\n    case 5: <em>\/\/ T6: Play\/Pause Mediensteuerung<\/em>\n      keyboard.write(KEY_MEDIA_PLAY_PAUSE);\n      break;\n\n    case 6: <em>\/\/ T7: Terminal starten (cmd.exe)<\/em>\n      keyboard.press(KEY_LEFT_GUI);\n      keyboard.releaseAll();\n      delay(300);\n      keyboard.print(\"cmd\");\n      keyboard.press(KEY_RETURN);\n      keyboard.releaseAll();\n      break;\n\n    case 7: <em>\/\/ T8: Aktives Fenster schlie\u00dfen (Alt+F4)<\/em>\n      keyboard.press(KEY_LEFT_ALT);\n      keyboard.press(KEY_F4);\n      delay(100);\n      keyboard.releaseAll();\n      break;\n\n    <em>\/\/ T3, T9\u2013T12 noch nicht belegt<\/em>\n    default:\n      break;\n  }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3.3 Zeile-f\u00fcr-Zeile-Erkl\u00e4rung der wichtigsten Bl\u00f6cke<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>#include &lt;BleKeyboard.h&gt;<\/code><\/strong><br>Bindet die Bibliothek ein, die alle Bluetooth-HID-Operationen bereitstellt.<\/li>\n\n\n\n<li><strong><code>BleKeyboard keyboard(\"Kerm-it-Shortcut\");<\/code><\/strong><br>Erzeugt eine Instanz. Der String &#8222;Kerm-it-Shortcut&#8220; ist der Name, der beim Koppeln im Bluetooth-Men\u00fc erscheint.<\/li>\n\n\n\n<li><strong><code>const uint8_t pins[12] = {...}<\/code><\/strong><br>Ein Array, das die GPIO-Nummern in der Reihenfolge der Tasten speichert. Die Indizes 0..11 entsprechen T1..T12.<\/li>\n\n\n\n<li><strong><code>pinMode(pins[i], INPUT_PULLUP);<\/code><\/strong><br>Aktiviert den internen Pullup-Widerstand (ca. 30\u201350 k\u03a9). Dadurch liegt der Pin im Ruhezustand auf HIGH (3,3 V). Wenn der Taster gedr\u00fcckt wird, verbindet er den Pin mit GND \u2192 der Pegel f\u00e4llt auf LOW. Das spart externe Widerst\u00e4nde.<\/li>\n\n\n\n<li><strong><code>keyboard.begin();<\/code><\/strong><br>Startet den Bluetooth-Stack und macht den ESP32 f\u00fcr den PC sichtbar. Erst danach reagiert das Ger\u00e4t auf Tastendr\u00fccke.<\/li>\n\n\n\n<li><strong><code>digitalRead(pins[i]) == LOW<\/code><\/strong><br>Abfrage, ob der Taster aktuell gedr\u00fcckt ist. LOW bedeutet &#8222;gedr\u00fcckt&#8220;, weil der Taster gegen Masse schaltet.<\/li>\n\n\n\n<li><strong><code>while(digitalRead(pins[i]) == LOW);<\/code><\/strong><br>Ein einfaches Entprellverfahren: Das Programm bleibt in dieser leeren Schleife, bis der Taster wieder losgelassen wird. Dadurch wird die Aktion nur einmal pro Dr\u00fcck-Vorgang ausgef\u00fchrt. Das ist sicherer als eine feste Wartezeit.<\/li>\n\n\n\n<li><strong><code>keyboard.press(KEY_LEFT_CTRL);<\/code><\/strong><br>Simuliert das Herunterdr\u00fccken der linken Strg-Taste. Zusammen mit\u00a0<code>keyboard.press('c')<\/code>\u00a0ergibt das Strg+C. Nach\u00a0<code>delay(100)<\/code>\u00a0werden alle Tasten losgelassen (<code>keyboard.releaseAll()<\/code>).<\/li>\n\n\n\n<li><strong><code>keyboard.write(KEY_MEDIA_PLAY_PAUSE);<\/code><\/strong><br>Sendet einen einzelnen Tastencode \u2013 hier den speziellen Medien-Play\/Pause-Befehl.\u00a0<code>write<\/code>\u00a0dr\u00fcckt und l\u00e4sst sofort los.<\/li>\n\n\n\n<li><strong><code>keyboard.print(\"cmd\");<\/code><\/strong><br>Sendet eine Zeichenkette (jeden Buchstaben einzeln). Zusammen mit der vorherigen Windows-Taste und anschlie\u00dfendem Enter wird die Ausf\u00fchrung von &#8222;cmd&#8220; gestartet.<\/li>\n\n\n\n<li><strong><code>keyboard.press(KEY_LEFT_ALT); keyboard.press(KEY_F4);<\/code><\/strong><br>Alt+F4 \u2013 der klassische Befehl zum Schlie\u00dfen des aktiven Fensters unter Windows.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Risiken und typische Fehlerquellen<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Problem<\/th><th class=\"has-text-align-left\" data-align=\"left\">Ursache<\/th><th class=\"has-text-align-left\" data-align=\"left\">L\u00f6sung<\/th><\/tr><\/thead><tbody><tr><td>ESP32 wird nicht als Tastatur erkannt<\/td><td>Fehlender Pullup auf D+ bei manchen Boards<\/td><td>5 k\u03a9 Widerstand zwischen 3,3 V und D+ der USB-Buchse l\u00f6ten<\/td><\/tr><tr><td>Tasten l\u00f6sen doppelte Befehle aus<\/td><td>Prellen der mechanischen Kontakte<\/td><td>Die&nbsp;<code>while<\/code>-Schleife bereits entprellt; falls nicht ausreichend,&nbsp;<code>delay(30)<\/code>&nbsp;nach dem Loslassen einf\u00fcgen<\/td><\/tr><tr><td>Bestimmte GPIOs funktionieren nicht (z.B. 34,35)<\/td><td>Keine internen Pullups auf diesen Pins<\/td><td>Externen 10 k\u03a9 Widerstand auf 3,3 V ziehen und&nbsp;<code>pinMode(pin, INPUT)<\/code>&nbsp;ohne Pullup<\/td><\/tr><tr><td>Bluetooth-Verbindung rei\u00dft ab<\/td><td>Stromversorgung \u00fcber USB instabil<\/td><td>Hochwertiges USB-Kabel und Netzteil (mind. 500 mA) verwenden<\/td><\/tr><tr><td>Code l\u00e4sst sich nicht flashen<\/td><td>Falsche Boardauswahl oder USB-Treiber<\/td><td>In der IDE \u201eESP32 Dev Module\u201c ausw\u00e4hlen; CH340\/CP2102-Treiber installieren<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5. Ausblick: Was kann man noch verbessern?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Erweiterung auf 24 Tasten<\/strong>\u00a0\u2013 durch eine Diodenmatrix (z.B. 6&#215;4). Dann sind weniger GPIOs n\u00f6tig, aber der Code wird komplexer (Spalten\/Zeilen abfragen).<\/li>\n\n\n\n<li><strong>RGB-Beleuchtung<\/strong>\u00a0\u2013 adressierbare LEDs (WS2812) an einem weiteren GPIO-Pin und die Bibliothek\u00a0<code>FastLED<\/code>.<\/li>\n\n\n\n<li><strong>Akku-Betrieb<\/strong>\u00a0\u2013 Einbau eines Lithium-Ionen-Akkus mit TP4056-Lademodul. Dann wird die Tastatur wirklich kabellos.<\/li>\n\n\n\n<li><strong>Profilumschaltung<\/strong>\u00a0\u2013 \u00fcber einen zus\u00e4tzlichen Taster oder eine lange gedr\u00fcckte Taste verschiedene Key-Mappings laden (z.B. f\u00fcr Video-Bearbeitung vs. programmieren).<\/li>\n\n\n\n<li><strong>Integration in QMK<\/strong>\u00a0\u2013 wer tief in die Materie einsteigen m\u00f6chte, kann QMK mit ESP32-Unterst\u00fctzung nutzen (allerdings aufw\u00e4ndiger).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die selbstgebaute Shortcut-Tastatur mit ESP32 ist ein ideales Einstiegsprojekt f\u00fcr alle, die Hardware und Software kombinieren wollen. Mit weniger als 50 Zeilen aktivem Code, zw\u00f6lf Tastern und einem g\u00e4ngigen Entwicklungsboard entsteht ein n\u00fctzliches Werkzeug f\u00fcr den Arbeitsalltag. Der gr\u00f6\u00dfte Vorteil gegen\u00fcber gekauften Makro-Pads: absolute Freiheit bei der Belegung, keine propriet\u00e4re Treibersoftware und die Gewissheit, jeden einzelnen L\u00f6tpunkt selbst gesetzt zu haben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Freilich ist die L\u00f6sung nicht perfekt: Das Fehlen einer Diodenmatrix limitiert die maximale Tastenzahl auf etwa ein Dutzend, und die Bluetooth-Reichweite ist mit maximal zehn Metern f\u00fcr den Schreibtisch v\u00f6llig ausreichend. Wer aber genau die Funktionen braucht, die wir hier eingebaut haben (Kopieren, Einf\u00fcgen, Screenshot, Play\/Pause, Terminal), erh\u00e4lt ein ma\u00dfgeschneidertes Eingabeger\u00e4t f\u00fcr weniger als den Preis einer mittleren Pizza-Lieferung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Und das Beste: Der Code liegt auf GitHub (unter dem Benutzer&nbsp;<code>Kerm-it<\/code>), kann jederzeit erweitert werden und ist ein lebendiges Beispiel daf\u00fcr, wie die Maker-Bewegung Technik demokratisiert. Also: L\u00f6tkolben an, ESP32 flashen \u2013 und die linke Hand darf sich endlich ausruhen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Espressif Systems. (2023).\u00a0<em>ESP32 Series Datasheet<\/em>. Version 4.5. [Online] Abrufbar unter:\u00a0<a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf<\/a><\/li>\n\n\n\n<li>T-vK. (2024).\u00a0*ESP32-BLE-Keyboard \u2013 Arduino library for Bluetooth HID*. GitHub Repository.\u00a0<a href=\"https:\/\/github.com\/T-vK\/ESP32-BLE-Keyboard\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/T-vK\/ESP32-BLE-Keyboard<\/a><\/li>\n\n\n\n<li>Arduino. (2025).\u00a0<em>ESP32 Board Installation Instructions<\/em>.\u00a0<a href=\"https:\/\/docs.arduino.cc\/software\/ide-2\/tutorials\/ide-2-board-manager#esp32\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.arduino.cc\/software\/ide-2\/tutorials\/ide-2-board-manager#esp32<\/a><\/li>\n\n\n\n<li>Cherry GmbH. (2022).\u00a0<em>MX Series \u2013 Technical Data Sheet<\/em>.\u00a0<a href=\"https:\/\/www.cherry-world.com\/cherry-mx.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.cherry-world.com\/cherry-mx.html<\/a><\/li>\n\n\n\n<li>Random Nerd Tutorials. (2024).\u00a0<em>ESP32 USB Keyboard (HID) \u2013 How to Emulate a Keyboard<\/em>.\u00a0<a href=\"https:\/\/randomnerdtutorials.com\/esp32-usb-keyboard-hid-arduino\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/randomnerdtutorials.com\/esp32-usb-keyboard-hid-arduino\/<\/a>\u00a0(abgerufen am 7. M\u00e4rz 2026)<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Autor: DerSchneider Einleitung Was haben Programmierer, Videoeditoren und 3D-Druck-Enthusiasten gemeinsam? Sie alle verlieren kostbare Zeit mit wiederkehrenden Tastenkombinationen. Strg+C, Strg+V, Alt+Tab \u2013 die linke Hand wandert \u00fcber die Tastatur, die Augen suchen kurz die richtigen Tasten. Effizienter w\u00e4re ein dediziertes Bedienfeld, eine Makro-Tastatur mit programmierbaren Tasten, die genau die Befehle ausf\u00fchrt, die man t\u00e4glich braucht. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42,45,26],"tags":[544,977,1176,1743,2225,3071,4304,6304],"class_list":["post-4361","post","type-post","status-publish","format-standard","hentry","category-elektrotechnik","category-hardware-im-test","category-mit-den-handen","tag-arduino","tag-ble","tag-cherry-mx","tag-diy","tag-esp32","tag-hid","tag-makro-tastatur","tag-shortcuts"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/4361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/comments?post=4361"}],"version-history":[{"count":0,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/4361\/revisions"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=4361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=4361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=4361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}