SharpKey Interfaz Multi-HID Guia de Firmware
Vision general
Un problema importante con los ordenadores Sharp vintage es la falta de teclados. La mayoria de las maquinas MZ-2500/2800/3500/X1/X68000 se venden sin teclado. Sin teclado la maquina es inutilizable.
Desarrolladores japoneses (classicpc.org, Youkan) y Martin han desarrollado interfaces para convertir teclados PS/2 o USB. El MZ-2500 utiliza una matriz de teclado similar al MZ-80B, serializada sobre un bus de 4 bits entre la unidad principal y el teclado.
Protocolo de teclado MZ-2500
La interfaz hardware comprende 7 senales, 5V y GND con conector mini-DIN blindado de 8 pines.

| Senal | Direccion | Estado logico | Descripcion |
|---|---|---|---|
| RTSN Row Strobe |
Main Unit -> Keyboard | HIGH (‘1’) | Direccion de fila transmitida. |
| LOW (‘0’) | El teclado transmite datos. | ||
| KD4 Type Strobe |
Main Unit -> Keyboard | HIGH (‘1’) | Datos matriciales reales. |
| LOW (‘0’) | AND logico de todas las teclas. | ||
| MPX Nibble MUX Strobe |
Main Unit -> Keyboard | HIGH (‘1’) | Nibble superior. |
| LOW (‘0’) | Nibble inferior. | ||
| KD[3:0] Bi-dir bus |
Main Unit -> Keyboard | Numero de fila de 4 bits. | |
| Keyboard -> Main Unit | 4 bits de datos de columna. |
Dos modos: STROBEALL y recuperacion de datos de tecla. Protocolo detallado en la version inglesa.

Protocolo de teclado MZ-2800
El MZ-2800 es el sucesor del MZ-2500 con modo Z80 de 8 bits y modo 80286 de 16 bits. Protocolo similar pero con temporizado diferente y adicion de una fila 14.

ESP-32S AI Thinker
Esquema electrico

Placa de circuito impreso

Interfaz ensamblada

Interfaz MZ-2800 ensamblada

Firmware
El firmware esta escrito bajo el sistema de build Espressif IDF (gcc(++), git, CMake, Ninja) en C/C++.
Instalacion y build automatizados (recomendado)
macOS / Linux / WSL — setup_SharpKey.sh
chmod +x setup_SharpKey.sh
./setup_SharpKey.sh
espressif/idf:v4.4 (descarga unica de ~3 GB), sin cadena de herramientas en el host e identico en todas partes. Si Docker no esta disponible recurre a una instalacion nativa de ESP-IDF v4.4 (Python 3.8-3.11, CMake, Ninja, etc. mediante apt/dnf/pacman o Homebrew en macOS). En Linux/WSL puede instalar Docker Engine por usted.
Windows 10 / 11 — setup_SharpKey_windows.ps1 (nativo, sin WSL, sin Docker). Desde un simbolo de PowerShell (un simbolo de usuario normal es suficiente; winget puede solicitar elevacion):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_SharpKey_windows.ps1
Preguntas que hace el instalador, y que hacer. Cada solicitud tiene un valor por defecto seguro entre corchetes; la letra en mayuscula es el valor por defecto, asi que pulsar Enter lo acepta.
macOS / Linux / WSL (setup_SharpKey.sh):
| Solicitud | Por defecto | Que hacer |
|---|---|---|
Install Docker Engine now? [Y/n] (solo Linux/WSL, si falta Docker) |
Si | Enter para instalar Docker (puede requerir sudo), o n para usar la cadena de herramientas nativa ESP-IDF en su lugar. |
Install now? [Y/n] (para paquetes del SO / ESP-IDF que falten) |
Si | Enter: instala las herramientas que faltan mediante apt/dnf/pacman o Homebrew; puede pedir sudo. |
Repo URL [https://git.eaw.app/eaw/SharpKey.git] |
repo publico | Enter para el repo publico, o pegue otra URL (p. ej. un repo de desarrollo privado). |
Install directory [~/SharpKey] (al clonar) |
~/SharpKey |
Enter para ~/SharpKey, o escriba una ruta. |
Remove <dir> and re-clone? [y/N] (solo si ese directorio contiene un repo distinto o incompleto) |
No | y solo si esta seguro; en caso contrario N y elija otro directorio. |
Build the SharpKey firmware now? [Y/n] |
Si | Enter para compilar de inmediato (verifica el entorno). |
Windows (setup_SharpKey_windows.ps1):
| Solicitud | Por defecto | Que hacer |
|---|---|---|
Repo URL [https://git.eaw.app/eaw/SharpKey.git] |
repo publico | Enter para el repo publico, o pegue otra URL. |
SharpKey checkout directory [%USERPROFILE%\SharpKey] |
%USERPROFILE%\SharpKey |
Enter para el valor por defecto, o escriba una ruta. |
Build the SharpKey firmware now? [Y/n] |
Si | Enter para compilar de inmediato. |
SHARPKEY_REPO_URL para elegir el repositorio sin que se le pregunte, y (macOS/Linux/WSL) defina SHARPKEY_BUILD a docker o native para forzar el metodo de build.
Salida y recompilacion. Un build correcto escribe el firmware en build/main.bin (con una copia versionada en release/ en macOS/Linux). Para recompilar mas tarde sin volver a ejecutar el script de instalacion:
# 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) . "$IDF_PATH/export.sh" && idf.py build # Windows (native ESP-IDF, from a new PowerShell) & "$HOME\esp\esp-idf-v4.4\export.ps1"; idf.py build
Instalacion del firmware
git clone https://git.eaw.app/eaw/mz25key.git
Compilacion del firmware
idf.py menuconfig
idf.py build
idf.py -p /dev/ttyUSB0 build flash monitor
Build con Docker
docker run --rm -v $PWD:/project -w /project espressif/idf:v4.4 idf.py build
Integracion continua (Jenkins)
Uso

| Hot Key | Modo |
|---|---|
| ALT+F1 | Mapa de teclado MZ-2500 |
| ALT+F2 | Mapa de teclado MZ-2000 |
| ALT+F3 | Mapa de teclado MZ-80B |
Precios
Consulte la version inglesa para las tablas de precios.