Files
vt1200/reference/keyboard-mouse/elkay/README.md
T
SDD 3fd1e13b2e docs: keyboard/mouse protocol spec — LK401 (LK201 protocol) + VSXXX-AA mouse, sources, MAME lk201 device
Distils public docs into reference/keyboard-mouse/PROTOCOL.md for the level-1
Keyboard (27) / Mouse (26) device tests:
- keyboard: 4800 8N1 RS-423, self-test via FD -> 01 00 00 00 (errors 3D/3E)
- mouse: 4800 8O1 RS-232, self-test via 'T' -> 4-byte report (errors 3D/3E, >=0x20 fatal)
- separate ports: DUART2 A=keyboard, B=mouse (NOT daisy-chained)
MAME already has an LK201 device (src/mame/dec/lk201.cpp/.h) but no DEC mouse.
2026-10-16 11:38:52 +03:00

59 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# elkay
A USB HID converter for the DEC LK401 keyboard, built so that every key and LED works with
[veetee](https://github.com/issinoho/veetee), the DEC VT emulator, and with any other USB host.
The LK401 speaks DEC's LK201-family serial protocol (4800 baud, RS-423 levels, +12 V supply)
through a 4P4C modular cable. elkay is a small inline box: the keyboard's own cable plugs into
it, and a USB cable comes out. The keyboard itself is not modified.
```
LK401 ──4P4C──▶ ┌──────────────── elkay box ────────────────┐ ──USB──▶ host (veetee)
│ 12 V boost ◀── USB 5 V │
│ level shift/invert ◀─▶ ATmega32U4 UART │
│ ATmega32U4 USB ──▶ HID keyboard + LEDs │
└────────────────────────────────────────────┘
```
## Status
| Phase | What | State |
|-------|------|-------|
| 1 | Characterise the keyboard: pinout, current draw, signal levels ([procedure](docs/phase1-bench.md)) | next |
| 2 | Power and level-shifting circuit on a breadboard ([hardware](hardware/README.md)) | provisional design |
| 3 | Firmware: serial sniffer and command console, record every keycode | written, untested |
| 4 | Firmware: initialisation (LK401 mode, up/down modes, LEDs, click, bell) | console commands in place |
| 5 | Firmware: USB HID keyboard with LED feedback | — |
| 6 | Keymap for veetee ([keymap](docs/keymap.md)); veetee and Linux host side done | proposed |
| 7 | Enclosure, testing, write-up | — |
## Layout
| Path | Contents |
|------|----------|
| `firmware/` | PlatformIO project; Arduino Micro is the main target, Teensy 2.0 the alternative |
| `hardware/` | Interface circuit, bill of materials, wiring notes |
| `docs/protocol.md` | The LK201/LK401 protocol as the firmware uses it |
| `docs/keymap.md` | LK401 keycode → USB HID usage → veetee binding |
| `docs/phase1-bench.md` | Bench procedure for identifying the connector and signals |
| `host/linux/` | xkb option so Linux desktops see F13–F20 ([why](host/linux/README.md)) |
## Building
```sh
cd firmware
pio run # Arduino Micro
pio run -e teensy2 # Teensy 2.0
pio run -t upload # flash the Micro
pio device monitor # console at 115200 baud
```
## References
- *VCB02 Video Subsystem Technical Manual*, EK-104AA-TM-001 (the LK201 protocol, on bitsavers/manx)
- Linux `drivers/input/keyboard/lkkbd.c`, a working LK201/LK401 driver
## Licence
MIT.