Skip to content
hasu@tmk edited this page Mar 2, 2023 · 32 revisions

NeXT Keyboard Converter

With this converter you can use NeXT keyboard(non-ADB) on modern computer.

You can support this project by buying prebuilt TMK NeXT Keyboard Converter.

TMK NeXT Keyboard Converter does not support mouse at this point.(2023-02)

Souce Code

https://github.com/tmk/tmk_keyboard/tree/master/converter/next_usb

Firmware Build

make -f Makefile.unimap clean
make -f Makefile.unimap
make -f Makefile.unimap dfu

Edit MCU in Makefile for your own DIY converter.

For prebuilt TMK NeXT Keyboard Converter you can use Keymap Editor.

Keymap Editor

You can remap keys with Keymap Editor for prebuilt TMK NeXT Keyboard Converter.

http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?next_usb

Wiring

Connections to ATmega32U2/U4

FROM(Pin3): PD0
TO(Pin2):   PD1
PSW(Pin4):  PD4
GND(Pin5):  GND
VCC(Pin1):  VCC

NeXT Keyboard non-ADB

https://deskthority.net/wiki/NeXT

Pinouts

Socket

        _____
 GND  / 5   4 \  PSW 
FROM | 3     2 | TO
      |     1 |  VCC 
       `-----'
FROM: keyboard to computer
TO:   computer to keyboard
PSW:  Power key

Power key line is normally high and is pulled to ground when pressed.

Cable inside keyboard

+-----+
|Black|\
|Green|-\
|Yello|--\--------  to computer via Mini-Din 5 plug
|Orang|--/--------
|Red  |-/
|Brown|/
+-----+
Black:  FG
Green:  GND
Yellow: PSW(Power key)
Orange: FROM Keyboard
Red:    TO Keyboard
Brown:  VCC

NeXT Keyboard Protocol

Signal timing

57.25us per unit

Keyboard to Host

IDLE

     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
____                   ___                   ______
    \_________________/   \_________________/
              9         2          9

KEY

Keycode event:
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 ____   _______________   _   _______________   ____
     \_/_____________X_\_/ \_/_____________/ \_/
        0 1 2 3 4 5 6 F       a b c d e f g

code: bit0-6 / F: 0(pressed), 1(released)


Modifier event:
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 ____                 _   _   _______________   ____
     \_______________/ \_/ \_/_____________/ \_/
                      F       a b c d e f g


Modifier state: 0(off), 1(on)
    a: Control
    b: L-Shift
    c: R-Shift
    d: L-Command
    e: R-Command
    f: L-Alt
    g: R-Alt

Host to Keyboard

QUERY

     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
____           _       ____
    \_________/ \_____/
         5     1   3

SET_LED

     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
____                   _____   ___               __
    \_________________/     \_/___\_____________/
              9          3   1 L R       7

LED state: 0(off), 1(on)
L: Left LED
R: Right LED

RESET

     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
____   _______   ___________                     __
    \_/       \_/           \___________________/
     1    4    1      6              10   

Keyboard Scan code

,---------------------------------------------------------. ,-----------. ,---------------.
|Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  BS | |VUp|Pwr|BrU| |`  |  =|  /|  *|
|---------------------------------------------------------| |-----------| |---------------|
| Tab |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \| |VDn|   |BrD| |  7|  8|  9|  -|
|---------------------------------------------------------| `---'   `---' |---------------|
| Ctrl |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return|               |  4|  5|  6|  +|
|---------------------------------------------------------|     ,---.     |---------------|
| Shift  |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|  Shift |     |Up |     |  1|  2|  3|   |
|---------------------------------------------------------| ,-----------. |-----------|Ent|
|Alt  |Cmd  |              Space              | Cmd | Alt | |Lef|Dow|Rig| |      0|  .|   |
`---------------------------------------------------------' `-----------' `---------------'

,---------------------------------------------------------. ,-----------. ,---------------.
| 49| 4A| 4B| 4C| 4D| 50| 4F| 4E| 1E| 1F| 20| 1D| 1C|  1B | | 1A|*58| 19| | 26| 27| 28| 25|
|---------------------------------------------------------| |-----------| |---------------|
| 41  | 42| 43| 44| 45| 48| 47| 46| 06| 07| 08| 05| 04| 03| | 02|   | 01| | 21| 22| 23| 24|
|---------------------------------------------------------| `---'   `---' |---------------|
|   57 | 39| 3A| 3B| 3C| 3D| 40| 3F| 3E| 2D| 2C| 2B|  2A  |               | 12| 18| 13| 15|
|---------------------------------------------------------|     ,---.     |---------------|
|   *56  | 31| 32| 33| 34| 35| 37| 36| 2E| 2F| 30|   *55  |     | 16|     | 11| 17| 14|   |
|---------------------------------------------------------| ,-----------. |-----------| 0D|
| *52 | *54 |              38                 | *53 | *51 | | 09| 0F| 10| |    0B | 0C|   |
`---------------------------------------------------------' `-----------' `---------------'
*: pseudo scan code

There are two variants for keyboard layout. Note that Return and \ key are different.

https://www.nextcomputers.org/forums/index.php?topic=4918.msg29168#msg29168

NeXT Mouse non-ADB

Pinouts

Mouse is connected to keyboard and host queries to keyboard for mouse data.

NeXT Keyboard Protocol for Mouse

Host to Keyboard

QUERY

     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
____   _       _       ____
    \_/ \_____/ \_____/
       1   3   1   3

Not confirmed.

Keyboard to Host

MOUSE

Mouse event:
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 ____   _______________   _   _______________   ____
     \_/_X_____________\_/ \_/_X_____________\_/
        B 0 1 2 3 4 5 6       B 0 1 2 3 4 5 6
 B: Button (0: pressed)
 X: X-movement
 B: Button (0: pressed)
 Y: Y-movement

Resources

Keyboard Interface

  • NeXT Computer(N1000) have non-ADB interface on Display(N4000).

  • NeXTcube(N1000A) seems to have non-ADB interface on Display(N4000A).

  • NeXTstation seems to have ADB interface on SoundBox and Display.

  • NeXTstation Turbo(N1100)

  • NeXTstation Turbo Color(N1200)

  • SoundBox(N4004)

  • https://www.okqubit.net/machines/next.html

MegaPixel Display

Clone this wiki locally