mz25key Schnittstelle Entwicklerhandbuch
mz25key Entwicklerhandbuch
Das mz25key ist ein dediziertes Tastaturinterface fuer die Sharp MZ-2500 und MZ-2800 Computer, basierend auf dem Espressif ESP32 Dual-Core-Mikrocontroller. Es uebersetzt moderne PS/2- und Bluetooth-HID-Tastaturen in das native MZ-2500/MZ-2800-Tastaturmatrix-Protokoll. Das mz25key teilt die gesamte Codebasis mit dem SharpKey Multi-Host-Interface-Projekt, wird aber mit einer vereinfachten Konfiguration erstellt.
Dieses Handbuch ist die primaere Entwicklerreferenz fuer die mz25key-Firmware. Es behandelt die vollstaendige Software-Architektur, jedes Quellmodul, das MZ-2500/MZ-2800-Tastaturprotokoll, das Tastenzuordnungssystem, die Web-Oberflaeche, die Bluetooth-Integration, die Build-Umgebung, die CI/CD-Pipeline und Debugging-Techniken.
Hauptunterschied zu SharpKey: Das mz25key ist derselbe Quellcode wie SharpKey, wird aber mit dem Kconfig-Ziel
MZ25KEY_MZ2500 oder MZ25KEY_MZ2800 anstelle von SHARPKEY erstellt. Der kritische Unterschied ist, dass das mz25key-Git-Repository keine Git-Submodule verwendet -- die erforderlichen Komponentenbibliotheken muessen manuell geklont werden.
Hinweis: Dieses Entwicklerhandbuch enthaelt umfangreichen Quellcode, API-Dokumentation und technische Details, die in englischer Sprache verbleiben. Bitte lesen Sie die englische Version fuer den vollstaendigen Inhalt, einschliesslich:
- Voraussetzungen (ESP-IDF v4.4, Python 3.8+, Git, UART-Adapter)
- Repository-Struktur und Quellmodule
- Software-Architektur und Kern-Trennung
- MZ-2500/MZ-2800-Tastaturprotokoll-Implementierung
- Tastenzuordnungssystem
- Web-Interface (WiFi Manager, OTA, KeyMap Editor)
- Bluetooth-HID-Integration
- Build-Anleitung (nativ und Docker)
- CI/CD-Pipeline (Jenkins)
- Debugging-Techniken
Voraussetzungen
Bevor Sie die mz25key-Firmware bauen und flashen koennen, benoetigen Sie eine funktionierende Entwicklungsumgebung:
- ESP-IDF v4.4: Das Espressif IoT Development Framework, Version 4.4 spezifisch.
- Python 3.8+: Erforderlich fuer die Build-System-Skripte.
- Git: Zum Klonen des Repositories und der Komponentenbibliotheken.
- USB-zu-TTL UART-Adapter: Zum Flashen der Firmware.
- Docker (optional): Als Alternative zur nativen ESP-IDF-Installation.
- Komponentenversionen:
arduino-esp32bei Tag2.0.3undesp_littlefsbei Tagv1.3.1.
Repository-Struktur
Das mz25key-Repository ist unter https://git.eaw.app/eaw/mz25key gehostet. Es teilt dieselben Quelldateien wie das SharpKey-Projekt, lebt aber in einem separaten Repository ohne
.gitmodules-Datei.
mz25key/ ├── main/ │ ├── SharpKey.cpp — Entry point │ ├── MZ2528.cpp — MZ-2500/2800 host interface (Core 1) │ ├── PS2KeyAdvanced.cpp — PS/2 protocol driver │ ├── HID.cpp — Bluetooth HID │ ├── WiFi.cpp — WiFi web interface │ └── LED.cpp — Activity LED ├── components/ — Manually cloned libraries ├── data/ — Web filesystem source ├── sdkconfig — Kconfig build settings └── build_webfs.sh — Web filesystem build script
Weiterer technischer Inhalt (Architektur, Modulbeschreibungen, CI/CD) finden Sie in der englischen Version.
Automatisiertes Setup und Build (empfohlen)
Der einfachste Weg, die mz25key-Firmware zu bauen, ist das automatisierte Setup-Skript fuer Ihre Plattform. Jedes Skript ist in sich geschlossen: Kopieren Sie einfach die einzelne Datei fuer Ihre Plattform und fuehren Sie sie aus. Es installiert die ESP-IDF v4.4-Toolchain, klont das Repository (und holt die beiden erforderlichen Komponentenbibliotheken nach
components/) und kann die Firmware bauen — alles interaktiv, mit sinnvollen Standardwerten, die Sie durch Druecken von Enter uebernehmen koennen. Die manuellen nativen, Docker- und menuconfig-Schritte bleiben fuer fortgeschrittene Benutzer und Teil-Builds verfuegbar.
macOS / Linux / WSL — setup_mz25key.sh
chmod +x setup_mz25key.sh
./setup_mz25key.sh
Das Skript erkennt Ihr Betriebssystem automatisch. Es bevorzugt Docker (das offizielle
espressif/idf:v4.4-Image, ein einmaliger Download von ~3 GB) und faellt auf eine native ESP-IDF v4.4-Installation zurueck (Python 3.8–3.11, CMake, Ninja und die anderen Voraussetzungen ueber apt, dnf, pacman oder Homebrew), wenn Docker nicht verfuegbar ist. Unter Linux und WSL kann es Docker Engine fuer Sie installieren.
Windows 10 / 11 — setup_mz25key_windows.ps1 (nativ, kein WSL oder Docker erforderlich)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_mz25key_windows.ps1
Das Windows-Skript verwendet winget, um Git und (falls noch nicht vorhanden) Python 3.10 in einer isolierten virtuellen Umgebung zu installieren, installiert dann Espressifs native ESP-IDF v4.4-Windows-Toolchain und baut die Firmware. Es erfordert den Microsoft App Installer (der
Fragen, die das Setup stellt
winget bereitstellt) — installieren Sie ihn aus dem Microsoft Store, falls winget nicht gefunden wird.
Jede Eingabeaufforderung hat einen sicheren Standardwert in Klammern — der Grossbuchstabe ist der Standard, sodass Druecken von Enter ihn uebernimmt.
macOS / Linux / WSL (setup_mz25key.sh):
| Eingabeaufforderung | Standard | Was zu tun ist |
|---|---|---|
Install Docker Engine now? [Y/n] (Linux / WSL, falls Docker fehlt) |
Ja | Enter, um Docker zu installieren und im Container zu bauen, oder n, um auf eine native ESP-IDF-Installation zurueckzufallen. |
Install now? [Y/n] (OS-Pakete / natives ESP-IDF) |
Ja | Enter — installiert die fehlenden OS-Pakete und ESP-IDF v4.4; fragt evtl. nach sudo. |
Repo URL [https://git.eaw.app/eaw/mz25key.git] |
oeffentliches Repo | Enter fuer das oeffentliche Repo oder eine andere URL einfuegen (z. B. das private Entwicklungs-Repo). |
Install directory [~/mz25key] |
~/mz25key |
Enter fuer ~/mz25key oder einen Pfad eingeben. |
Remove <dir> and re-clone? [y/N] (falls dieses Verzeichnis ein anderes Repo enthaelt) |
Nein | y nur, wenn Sie sicher sind; andernfalls N und ein anderes Verzeichnis waehlen. |
Build the mz25key firmware now? [Y/n] |
Ja | Enter, um sofort zu bauen (verifiziert die Umgebung). |
Windows (setup_mz25key_windows.ps1):
| Eingabeaufforderung | Standard | Was zu tun ist |
|---|---|---|
Repo URL [https://git.eaw.app/eaw/mz25key.git] |
oeffentliches Repo | Enter fuer das oeffentliche Repo oder eine andere URL einfuegen. |
mz25key checkout directory [%USERPROFILE%\mz25key] |
%USERPROFILE%\mz25key |
Enter fuer den Standard oder einen Pfad eingeben. |
Build the mz25key firmware now? [Y/n] |
Ja | Enter, um sofort zu bauen. |
Fuer unbeaufsichtigte (nicht-interaktive) Laeufe respektieren beide Skripte Umgebungsvariablen-Ueberschreibungen:
Ausgabe und Neu-Bauen
MZ25KEY_REPO_URL legt die Repository-URL fest und MZ25KEY_BUILD erzwingt die Build-Methode (docker oder native).
Nach einem erfolgreichen Lauf befindet sich das Firmware-Image unter
build/main.bin und das Web-Dateisystem-Image unter build/filesys.bin — dieselben Artefakte, die der manuelle Build erzeugt. Um spaeter neu zu bauen, ohne das Setup-Skript erneut auszufuehren:
# Docker (macOS / Linux / WSL) docker run --rm -it -v "$PWD":/project -w /project espressif/idf:v4.4 idf.py build # Native ESP-IDF (macOS / Linux / WSL) . ~/esp/esp-idf-v4.4/export.sh && idf.py build # Native ESP-IDF (Windows PowerShell) & "$HOME\esp\esp-idf-v4.4\export.ps1"; idf.py build
Danksagungen
Die Espressif IDF-Entwicklungsumgebung und ESP-32S-Referenzmaterialien wurden verwendet.
Lizenzen
Unter GNU Public Licence v3 lizenziert. Keine kommerzielle Nutzung ohne Genehmigung.
Hinweis zur Funkregulierung
Dieses Geraet enthaelt ein vorzertifiziertes ESP32-S Funkmodul im 2,4 GHz ISM-Band. Verantwortung des Erbauers.