The Apple M0110 Today

User avatar
lowpoly

11 Aug 2011, 13:34

Finished my M0110 mod. This is the keyboard that came with the original Macintosh 128k.

Features:
  • NKRO (6KRO right now)
  • Hand wired matrix with diodes
  • Spring switch replacement: 61g --> 40g
  • Mini-USB connection with Teensy controller
  • Case and keys retr0brited.
  • Colemak and Qwerty switchable
  • 2nd Miniguru-like layer*
  • Much quieter because of pcb removal and lighter switch springs
  • MouseKeys
* meaning the cursor keys are on a second Fn-activated layer.

This makes the keyboard fully usable, I'm writing on it right now.

One of the main points of this mod was to establish easy and repeatable hand wiring. The hand wiring mods I've seen so far all had a lot of unordered wires going, which makes hand wiring look more complicated than it actually is. Using 1N4148 diodes makes the wiring more simple because it can be done in an ordered way. It also simplifies the code. The diodes were even cheaper than the wire I had to buy for the columns.

Now the pics, first the "before" state. Both 'boards were defective when I bought them. I retr0brited the upper one, so in case the retr0brite failed, I'd still have the lighter one:
Image

Pcb removed. The switches are much quieter without the pcb:
Image

Made in USA:
Image

The dust bunny's natural enemy:
Image

Old-school Alps:
Image

Replacement springs from a Dell AT. I measured 60grams to fully press the switch before the spring mod, 41grams after. I used the coins I had in my pocket, then put them on a precision scale. Ripster measured 70 something grams. There were different revisions of this keyboard though:
Image

1N4148, as recommended by Dave Dribin:
Image

Testing every switch before assembly. I had 2 bouncing switches in the finished keyboard but this can be solved by pressing them several (thousand) times. I guess this is why Cherry uses gold contacts. I also put some Teflon spray on every switch stem:
Image

Different revisions. I used the top one which was more yellowed and has two drainage channels:
Image

Using diodes for the rows. Only with longer distances between the switches additional wire will be necessary:
Image

Wire for the columns. Finer wire would have done but this here has more resistance to occasional bad handling by me. Note how the columns are soldered to the endpoints of the switch contacts. This puts the columns in another layer avoiding shorts:
Image

Flat ribbon cable soldered to the rows and columns. NKRO matrix finished. Fast and easy.
Image

The one thing that's not good on the Teensy is that it has no mounting holes. I milled a U-shaped socket from a piece of POM. Added two holes for cable binders:
Image

A round piece of POM will press the reset button:
Image

POM doesn't like to be sanded. I'll glue this with double-sided transparent sticky tape to the case:
Image

The complete Teensy assembly:
Image

And this is how it looks in the keyboard:
Image

In the original M0110 the phone jack is held by the pcb. I added a piece of aluminum to replace this holding function, screwed to the plate with the original screws (arrows):
Image

Aluminum part other view:
Image

What's this? Key is fully seated on the stem:
Image

The M0110 has a locking switch for CapsLock which has a shorter stem. It is not even pressed in this pic. I use CapsLock as Control so I had to get rid of the locking switch:
Image

CapsLock key on the left shows compensation for the shorter stem. A little Dremeling takes care of this:
Image

Controller glued into place with isolation layer:
Image

Because the pcb is missing, the plate/switch assembly would be seated 1.5mm too low. While this would be fine for a keyboard that is quite high from the start, I went for the original look here. Rubber washers should add additional dampening:
Image

The original gray feet were in bad condition. I used black rubber with sticky tape. Original feet are smaller but at that size the rubber feet slid around in the foot cavity. Larger feet work better here. Still have to find some gray stuff for this. The black dot on the right is the Teensy reset button:
Image

Retr0briting in 10% Peroxide solution. 6 hours for case and keys, 12 hours for the space bar. I'd stir from time to time and remove the bubbles that build on all surfaces:
Image

Finished:
Image

Another pic:
Image

And another one:
Image

Comparison with the not retr0brited 'board, which initially was the lighter of the two:
Image

Sound sample modded vs. unmodified:
Image

original: http://www.frs635.com/keyboard/m0110/m0110old.mp3
modded: http://www.frs635.com/keyboard/m0110/m0110new.mp3

Programming: Thanks to hasu for help and for making his code available. He's awesome.

The M0110 code is based on his Macway code. Because of the diodes I had to rewrite for 5 rows and 14 columns.

The WinAVR environment is very comfortable. Change something, select "Make All" from the menu, select "Program" from the menu and you will be asked to press the Teensy reset button. After pressing it programming will proceed and the Teensy will reboot. Ready for testing.

hasu's code also allows for permanent switching of layers. Per default I have Colemak. I can press Shift+Shift+1 and will have Qwerty. The Fn-layer will still work. Shift+Shift+0 will switch back to Colemak. Shift+Shift+2 will switch to the Fn-layer. Permanently, if you don't have a 0 or 1 on it. :)

Still have to try the Mousekeys feature which wouldn't work immediately. MouseKeys are working on WASD, buttons on Q and E, wheel on R and F.

It's easy to program something that'll make the Teensy crash. In that case the HID keyboard will vanish from the device manager after about 5 seconds.

I didn't activate full NKRO (using multiple devices) in hasu's code. I don't need it and without it there will be no compatibility issues.

No anti-ghosting code necessary because of the diodes.

One idea I had during building was: with plate mounted keys and hand wiring it would actually be possible to bend the plate like on a Model M. This would allow for the same keycap profile on all keys and still have a cylindrical cross section for the rows!
Last edited by lowpoly on 01 Jun 2018, 16:49, edited 8 times in total.

Findecanor

11 Aug 2011, 14:31

:o Awesome mod!

User avatar
CeeSA

11 Aug 2011, 15:14

very clean work, awesome!

Gunny

11 Aug 2011, 15:28

You're insane ! Very good work.

User avatar
webwit
Wild Duck

11 Aug 2011, 17:22

Cleanest hand wiring job I've seen.

User avatar
lal

11 Aug 2011, 18:46

Lowpoly, how is it possible *everything* you do comes out spectacular? Including the presentation. I'm astonished by the amount of handicraft skills and sense of esthetics every time.

xbb

11 Aug 2011, 19:23

awesome! You got skills!

ripster

11 Aug 2011, 19:42

Great mod. Using ribbon cable was clever, haven't seen that trick before.

intealls

11 Aug 2011, 19:59

Awesome mod! Real clever to use only the diodes to connect the rows. Very clean!

User avatar
Jim66

12 Aug 2011, 18:30

Very clean mod! Thanks for sharing.

User avatar
nathanscribe

12 Aug 2011, 19:31

Ye gods, those diodes... how neat is that?

msiegel

12 Aug 2011, 21:57

beautiful simplicity!
good old lowpoly; dremel saves the day :D

User avatar
lowpoly

12 Aug 2011, 22:22

Thanks for the comments.
msiegel wrote:dremel saves the day :D
Actually, I tried to mill that keycap but it wouldn't stay in the vise. So, Dremel FTW! :lol:

User avatar
Minskleip

12 Aug 2011, 23:58

Was the condition very bad before you got them fixed up? I have a set of dampened complicated white alps which are very used and dirty, and the plastic appears to be a bit brittle so I'm not sure if I'll use them.

You have to try the mousekeys, it's very smart. I'm using Hasu's code now on a HHKBified Minitouch.

Very nicely done!

User avatar
nanu

13 Aug 2011, 01:40

Brilliant! The elegant execution of this.. I hope you don't mind terminally lazy modders copying these techniques...

User avatar
gore

15 Aug 2011, 04:38

Nice, just realised this was on hack a day too!

User avatar
lowpoly

15 Aug 2011, 20:08

Minskleip wrote:Was the condition very bad before you got them fixed up? I have a set of dampened complicated white alps which are very used and dirty, and the plastic appears to be a bit brittle so I'm not sure if I'll use them.
I broke the first switch I tried to remove. Don't know why, no problems after that. Overall they were in good condition.
Minskleip wrote:You have to try the mousekeys, it's very smart. I'm using Hasu's code now on a HHKBified Minitouch.
Done. No idea why it wouldn't work before. This time I changed the Product ID, maybe that. Changed it back afterwards, still works. Very nice feature.
nanu wrote:I hope you don't mind terminally lazy modders copying these techniques...
Not at all. :)

I also added sound files to the first post, here they are again:

old: http://www.frs635.com/keyboard/m0110/m0110old.mp3
new: http://www.frs635.com/keyboard/m0110/m0110new.mp3

Edit: and a pic with visuals of the two sounds.
Last edited by lowpoly on 01 Jun 2018, 16:39, edited 1 time in total.

User avatar
jonnymacuser

15 Nov 2011, 21:36

Does this mod add CTRL key capability to the M0110? Is there a way to input the CONTROL command into a classic macintosh?

User avatar
7bit

15 Nov 2011, 22:31

Impressive!

The layout almost looks like HHKB.

Image
I love the aestetics of this. Why do we need a PCB for the Phantom?

ripster

16 Nov 2011, 00:08

7bit wrote:I love the aestetics of this. Why do we need a PCB for the Phantom?
Because there is only one lowpoly is why.

User avatar
hasu

14 Dec 2011, 06:20

lowpoly, this is great mod no doubt!
It made up-to-date full-fledged keyboard from decades old.

I've finally got a M0110 the other day too. This mod is very tempting to me in particular full switch matrix with diodes. But M0110 is very rare here in Japan, I decided to retain taste of the keyboard to the utmost.
In my case it result in a M0110 protocol converter, switch lub and silence mod. Not retr0brite'd, of course:)

Keyboard protocol converter on Teensy. If you are a collector and want to retain the keyboard intact, try this. This converts your M0110 into USB keyboard. https://github.com/tmk/tmk_keyboard/tre ... /m0110_usb
Image

Rubber sheets on both side of PCB and acoustic absorb filling.
Image

User avatar
lowpoly

29 Dec 2011, 02:45

hasu wrote:I've finally got a M0110 the other day too. This mod is very tempting to me in particular full switch matrix with diodes. But M0110 is very rare here in Japan, I decided to retain taste of the keyboard to the utmost.
In my case it result in a M0110 protocol converter, switch lub and silence mod. Not retr0brite'd, of course:)
Sooo good, hasu. Would have saved me a lot of work. :) I should add dampening materials too.

The 'boards I started with were both defective, so no harm done.

I still use this as my regular 'board in the office.

The only thing I need now is a matching M0100 mouse with Magic Mouse technology inside.

Findecanor

29 Dec 2011, 03:45

How hard would it be to make the adapter support M0110A also? It has a numeric keypad and cursor keys, but no right Option key. Is it the same protocol?

User avatar
hasu

30 Dec 2011, 15:08

I think it has the same protocol, but just extended scan codes for its extra keys. Not so hard.

User avatar
gore

01 Jan 2012, 19:42

Where did you get your TAED for retrobriting from?

User avatar
lowpoly

01 Jan 2012, 22:21

It's not TAED, it's H2O2. Got it from a friend.

User avatar
Lustique

01 Jan 2012, 23:32

Has someone here tried something else for retr0briting? Another reducing agent, perhaps? Any chemists here? I just found some old decolouriser (30% sodium dithionite) for clothes as I was searching for some old dental cleaner-like thingies to clean some key caps, and I wonder if this worked as well. After all, H2O2 isn't even a proper reducing agent, it's more like the opposite, isn't it? :geek:

User avatar
lowpoly

02 Jan 2012, 11:42

For underlying theory click here:

http://retr0bright.wikispaces.com/

Then, in the left column, "The Science Bit".

User avatar
Lustique

02 Jan 2012, 12:40

lowpoly wrote:For underlying theory click here:

http://retr0bright.wikispaces.com/

Then, in the left column, "The Science Bit".
Yeah, I already read this (thanks for the link though), but I still don't really get why they didn't use another reducing agent. :?

Oh, as I have just found out, H2O2 is (probably) in fact an oxidizing agent, not a reducing agent, since it is used for oxidative bleaching in the textile industry. (So either I didn't read everything properly or they were a little bit sloppy in their explanations (probably the first bit).)
I then read, that the most effective bleaching effect could be achieved by using both an oxidative and a reductive step ("chemistry of the textiles industry" via google books, page 56, right at the top). Maybe someone should try this for extra whiteness. :mrgreen:

I don't know if anyone is interested in this, but I thought I'd post it anyway. :)

User avatar
Lustique

02 Jan 2012, 12:47

gore wrote:Where did you get your TAED for retrobriting from?
It's in this Oxy laundry booster in the original Retr0bright recipe.

Post Reply

Return to “Workshop”