This firmware converts the protocol of Apple Macintosh 128K/512K/Plus Keyboards like M0110, M0110A(with keypad) and M0120(keypad) into USB. The retro keyboard can be revived connecting to mordern compter with this converter.
YOUR HELP NEEDED for International(ISO) keyboard supportTo add international-layout M0110 support some help is needed.
If you have international-layout M0110 read this post.
https://geekhack.org/index.php?topic=24965.msg3152999#msg3152999Supported ModelsM0110

M0110A

More
M0110 + M0120

M0120

README FIRSThttps://github.com/tmk/tmk_keyboard/tree/master/converter/m0110_usband optionally,
https://github.com/tmk/tmk_keyboard/wikihttps://github.com/tmk/tmk_keyboard/labels/NOTEChanges:2012/05/26: M0110A is now supported. Thanks for your contribution,
skagon!
2013/08: Change port for signals PF to PD
2013/09: Change port again, it uses inversely PD0 for data and PD1 for clock line now.
2015/03: Add support for "International"(ISO) keyboard(keymap_intl.c)
2015/07: Update keymap editor(for Rev.1)
2016/01: Updated keymap editor(for Rev.2)
2019/01: Reorgarnized first post a bit. This thread is not dead

2020/09: Add NEED HELP section in this post
TMK M0110 Converter Revisions:Instead of building converter yourself you can get preassembled converter from me.
Preassembled TMK converter is available here! https://geekhack.org/index.php?topic=72052Rev.2.5 Micro USB/ATMega32u2 with detachable cable

Older revisions:
More
Rev.2: Micro USB/ATMega32u2
Rev.1: Mini USB/ATMega32u4

Build Hardware yourselfYou need 4P4C cable and ATMega32U4 or ATMega32U2 dev board. Port of the MCU
PD1 is assigned to
CLOCK line and
PD0 to
DATA by default, you can change pin configuration with editing config.h.
4P4C Plug:You can find 4P4C plug as phone handset cable if you don't have Mac keyboard cable.
http://en.wikipedia.org/wiki/Modular_connector#4P4CNOTE: Original cable used with Mac is straight while phone handset cable is crossover. Close-up pics of handset cable. You can see one end of plug has reverse color codes against the other. Click to enlarge.
More
Socket pinout:
Mac 128k/512k/Plus Keyboard pinout
.---------,
| 1 2 3 4 | 1 GND
| | 2 Clock
| | 3 Data
`---___---' 4 5V
from front of socket on keyboard
This image displays pinouts on Mac side socket but same on keyboard side.
http://www.kbdbabel.org/conn/kbd_connector_macplus.pnghttp://old.pinouts.ru/Inputs/MacKeyboard_pinout.shtmlPull-up resistor:You are strongly recommended to have pull-up resistors on two signal lines though it might work well without them. In particular
when you use long or coiled cable you probably need them.
Keymap EditorYou can use Keymap Editor to define your keymap and download firmware using web browser(Chrome is recommended).
http://www.tmk-kbd.com/tmk_keyboard/editor/
For
preassembled TMK M0110 Converter(ATmega32u2):
- M0110 layout:
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?m0110_usb- M0110A layout:
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?m0110_usb_m0110aFor
DIY converter with ATmega32u4:
- M0110 layout:
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?m0110_usb_rev1- M0110A layout:
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?m0110_usb_rev1_m0110aFlash firmwareRefer this wiki page for how to flash firmware onto the converter.
https://github.com/tmk/tmk_keyboard/wiki#flash-firmwareBuild FrimwareWhen Keyamp Editor is not enough for your need you can build firmware from source codes.
$ git clone git://github.com/tmk/tmk_keyboard.git
$ cd converter/m0110_usb
$ make
and program your controller with compiled firmware.
Firmware Source: https://github.com/tmk/tmk_keyboard/tree/master See also:https://github.com/tmk/tmk_keyboard/tree/master/converter/m0110_usbLocking CapsLock key supportSee this entry. Use keycode '
LCAP' instead of 'CAPS' for the key in short. You can find it as '
Locking Caps Lock' in 'Function and Keypad' tab on Keymap Editor.
https://github.com/tmk/tmk_keyboard/#mechanical-locking-supportTurn locking CapsLock key into normal momentary one physicallyFor M0110 and M0110A(Alps model): You can get descrete SKCC short stem switch for locking switch replacement here.
https://www.aliexpress.com/item/SKCC-BJ0001-keyboard-switch-button-switch-reset-switch-micro-switch/32813803943.htmlFor M0110A(MITSUMI model): You can just remove locking mechanism of the switch easily instead of replacement. It still requires desoldering though.
M0110 Protocol - technical resourceSource code
https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/protocol/m0110.cTechnical Info for 128K/512K and Plus
ftp://ftp.apple.asimov.net/pub/apple_II/documentation/macintosh/Mac%20Hardware%20Info%20-%20Mac%20128K.pdf
ftp://ftp.apple.asimov.net/pub/apple_II/documentation/macintosh/Mac%20Hardware%20Info%20-%20Mac%20Plus.pdf
Protocol:
Page 20 of Tech Info for 128K/512K
http://www.mac.linux-m68k.org/devel/plushw.phpConnector:
Page 20 of Tech Info for 128K/512K
http://www.kbdbabel.org/conn/kbd_connector_macplus.pngSignaling:
http://www.kbdbabel.org/signaling/kbd_signaling_mac.png http://typematic.blog.shinobi.jp/Entry/14/Scan Codes:
Page 22 of Tech Info for 128K/512K
Page 07 of Tech Info for Plus
http://m0115.web.fc2.com/m0110.jpg http://m0115.web.fc2.com/m0110a.jpgTROUBLE WITH YOUR DIY CONVERTER?You are using Pro Micro?Confirm it is a 5V version with 16MHz crystal. Make solder bridge on J1 and use VCC for 5V power, not RAW. MUST check this page also.
I'm never willing to recommend you to use Pro Micro unless you are already familiar to it and have skill to solve problems yourself. Pro Micro is bad choice especially if this is your first time project. Alternatives are PJRC Teensy2.0 and TMK converter, of course!
Please don't ask help for problem specific to Pro Micro here.
Don't ask help before placing pull-up resistors and trying solder on J1!
More
In most cases your wiring is wrong. Check your wiring yourself again and again, one hundred times! And try swapping wires at your own risk, note that your wiring are already wrong at this point probably

It won't break your keyboard unless you are extremely unlucky.
Now you need help? OK. If you are not sure about your wiring,
post pics of your hardware and wriring this really save our time. Don't save your time by omitting this. Shots of controller side and ADB connector/keyboard side would be helpful. If you edit code
post your code. Don't hesitate to show your dirty code! Also
output from hid_listen command would be useful to debug hardware and firmware.
[rant]
Don't take advantage of generosity of kind and helpful members(yes, including me, of course
)! Their time is more precious than your time, use your time to learn and look into your problem first.
[/rant]