SharpKey Interface Multi-HID Guide du Firmware

Presentation


Un probleme majeur avec les ordinateurs Sharp vintage tardifs est les claviers. Pour diverses raisons -- perdus, stockes ou achetes par des collectionneurs -- une grande majorite des machines MZ-2500/2800/3500/X1/X68000 sont maintenant vendues sans clavier. Sans clavier, la machine n'est qu'un presse-papiers. Les vendeurs le savent et ceux qui sont mis en vente peuvent couter GBP100-200 ou plus.

Des developpeurs japonais ingenieux (classicpc.org, ou Youkan) et Martin chez 8bity.cz ont developpe des interfaces pour convertir des claviers PS/2 ou USB courants pour ces machines Sharp sans clavier.

Le MZ-2500 utilise une matrice clavier quasi identique au MZ-80B, mais etendue avec deux rangees et serialisee sur un bus 4 bits entre l'unite principale et le clavier. L'unite principale envoie une rangee en 600nS et le clavier retourne les donnees en 2 nibbles, espaces de 300nS.

La section suivante decrit le materiel et son protocole en detail.

Protocole clavier MZ-2500

L’interface materielle comprend 7 signaux, 5V et GND, utilisant une prise mini-DIN blindee a 8 broches.

KeyboardPinout

Signal Direction Etat logique Description
RTSN
Row Strobe
Main Unit -> Keyboard HIGH (‘1’) Adresse de rangee transmise.
    LOW (‘0’) Le clavier transmet les donnees.
KD4
Type Strobe
Main Unit -> Keyboard HIGH (‘1’) Donnees matricielles reelles.
    LOW (‘0’) AND logique de toutes les touches.
MPX
Nibble MUX Strobe
Main Unit -> Keyboard HIGH (‘1’) Nibble superieur.
    LOW (‘0’) Nibble inferieur.
KD[3:0]
Bi-dir bus
Main Unit -> Keyboard   Numero de rangee sur 4 bits.
  Keyboard -> Main Unit   4 bits des donnees de colonne.

Deux modes principaux : STROBEALL (detection de touche) et recuperation de donnees de touche. Le protocole detaille est identique a la version anglaise avec les temporisations de 660nS/320nS.

MZ2500 Keyboard Protocol 1 MZ2500 Keyboard Protocol 2 MZ2500 Keyboard Protocol 3 MZ2500 Keyboard Protocol 5 MZ2500 Keyboard Protocol 6 MZ2500 Keyboard Protocol 4

KeyboardHardware MainUnitKeyboardHardware

Protocole clavier MZ-2800

Le MZ-2800 est le successeur du MZ-2500 avec un mode Z80 8 bits et un mode 80286 16 bits. Le protocole est similaire mais avec un timing different et l’ajout d’une 14e rangee.

MZ2800 Keyboard Protocol 2 MZ2800 Keyboard Protocol 10 Timing Key Read MZ2800 Keyboard Protocol 9 MZ2800 Keyboard Protocol 1 MZ2800 Keyboard Protocol 7 MZ2800 Keyboard Protocol 6 MZ2800 Keyboard Protocol 4

KeyboardHardware MainUnitKeyboardHardware


ESP-32S AI Thinker

Apres analyse approfondie, la decision a ete prise de baser l'interface sur un SoC ESP-32S double coeur avec FreeRTOS. Un coeur est dedie a l'interface MZ-2500 tandis que l'autre gere les codes PS/2 et construit une matrice virtuelle.

Schema electrique

Schematic

Circuit imprime

PCB PCB Top View PCB Bottom View

Interface assemblee

1 1 1 1 1 1 1 1 1

Interface MZ-2800 assemblee

1 1 2 3 4 5 6 7 8

Firmware

Le firmware est ecrit sous le systeme de build Espressif IDF (gcc(++), git, CMake, Ninja) en C/C++.

Configuration et build automatises (recommande)

La methode recommandee pour compiler le firmware SharpKey est le script de configuration autonome propre a votre plateforme. Il installe la chaine d'outils (ESP-IDF v4.4), clone le depot (avec ses sous-modules) et peut compiler le firmware — le tout de maniere interactive, avec des valeurs par defaut sensees que vous pouvez accepter en appuyant sur Entree. Chaque script est autonome : copiez uniquement le fichier correspondant a votre plateforme et executez-le.

macOS / Linux / WSL — setup_SharpKey.sh

chmod +x setup_SharpKey.sh
./setup_SharpKey.sh
Le script detecte automatiquement le systeme d'exploitation et prefere un build Docker utilisant l'image epinglee espressif/idf:v4.4 (~3 Go de telechargement unique) — aucune chaine d'outils sur l'hote, identique partout. Si Docker n'est pas disponible, il bascule vers une installation ESP-IDF v4.4 native (Python 3.8–3.11, CMake, Ninja, etc. via apt/dnf/pacman ou Homebrew sous macOS). Sous Linux/WSL, il peut installer Docker Engine pour vous.

Windows 10 / 11 — setup_SharpKey_windows.ps1 (natif — sans WSL, sans Docker). Depuis une invite PowerShell (une invite utilisateur normale suffit ; winget peut demander une elevation) :

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_SharpKey_windows.ps1
Le script Windows utilise winget pour installer Git et — si votre Python par defaut est en 3.12+ ou absent — Python 3.10 dans un venv isole (votre propre Python n'est pas touche). Il clone puis installe la chaine d'outils Windows ESP-IDF v4.4 native d'Espressif et compile le firmware. Necessite le Microsoft App Installer (qui fournit winget).

Questions posees par la configuration, et que faire. Chaque invite a une valeur par defaut securisee entre crochets — la lettre majuscule est la valeur par defaut, donc appuyer sur Entree l’accepte.

macOS / Linux / WSL (setup_SharpKey.sh) :

Invite Defaut Que faire
Install Docker Engine now? [Y/n] (Linux/WSL uniquement, si Docker est absent) Oui Entree pour installer Docker (peut necessiter sudo), ou n pour utiliser la chaine d’outils ESP-IDF native.
Install now? [Y/n] (pour les paquets OS / ESP-IDF manquants) Oui Entree — installe les outils manquants via apt/dnf/pacman ou Homebrew ; peut demander sudo.
Repo URL [https://git.eaw.app/eaw/SharpKey.git] depot public Entree pour le depot public, ou collez une autre URL (par ex. un depot de dev prive).
Install directory [~/SharpKey] (lors du clonage) ~/SharpKey Entree pour ~/SharpKey, ou saisissez un chemin.
Remove <dir> and re-clone? [y/N] (uniquement si ce repertoire contient un depot different ou incomplet) Non y uniquement si vous etes sur ; sinon N et choisissez un autre repertoire.
Build the SharpKey firmware now? [Y/n] Oui Entree pour compiler immediatement (verifie l’environnement).

Windows (setup_SharpKey_windows.ps1) :

Invite Defaut Que faire
Repo URL [https://git.eaw.app/eaw/SharpKey.git] depot public Entree pour le depot public, ou collez une autre URL.
SharpKey checkout directory [%USERPROFILE%\SharpKey] %USERPROFILE%\SharpKey Entree pour le defaut, ou saisissez un chemin.
Build the SharpKey firmware now? [Y/n] Oui Entree pour compiler immediatement.
Pour les executions sans surveillance, les deux scripts respectent des surcharges d'environnement : definissez SHARPKEY_REPO_URL pour choisir le depot sans invite, et (macOS/Linux/WSL) definissez SHARPKEY_BUILD a docker ou native pour forcer la methode de build.

Sortie et recompilation. Un build reussi ecrit le firmware dans build/main.bin (avec une copie versionnee sous release/ sous macOS/Linux). Pour recompiler ensuite sans relancer le script de configuration :

# Docker (macOS / Linux / WSL)
docker run --rm -it -v "$PWD":/project -w /project espressif/idf:v4.4 idf.py build

# ESP-IDF natif (macOS / Linux)
. "$IDF_PATH/export.sh" && idf.py build

# Windows (ESP-IDF natif, depuis un nouveau PowerShell)
& "$HOME\esp\esp-idf-v4.4\export.ps1"; idf.py build

2 13

Build avec Docker

git clone https://git.eaw.app/eaw/SharpKey.git
cd SharpKey
git submodule update --init --recursive
chmod +x build_webfs.sh && ./build_webfs.sh
docker run --rm -v $PWD:/project -w /project espressif/idf:v4.4 idf.py build

Integration continue (Jenkins)

Le projet SharpKey utilise Jenkins pour construire automatiquement le firmware a chaque push sur la branche master. Voir le Guide du Developpeur FusionX.

Utilisation

MZ-2500 Keyboard MZ-2800 Keyboard Wyse KB-3926 Keyboard

Hot Key Mode
ALT+F1 Correspondance clavier MZ-2500
ALT+F2 Correspondance clavier MZ-2000
ALT+F3 Correspondance clavier MZ-80B

Prix

Voir la version anglaise pour les tableaux de prix detailles.


Remerciements

L'environnement de developpement Espressif IDF et les materiaux de reference ESP-32S ont ete utilises.

Licences

Ce design est sous licence GNU Public Licence v3. Aucune utilisation commerciale sans autorisation.

Avis de reglementation sans fil

Ce dispositif incorpore un module ESP32-S pre-certifie dans la bande ISM 2,4 GHz. Il est de la responsabilite du constructeur d'assurer la conformite aux reglementations applicables.