geekhack

geekhack Projects => Making Stuff Together! => Topic started by: lowpoly on Thu, 11 August 2011, 06:47:52

Title: The Apple M0110 Today
Post by: lowpoly on Thu, 11 August 2011, 06:47:52
Finished my M0110 mod. This is the keyboard that came with the original Macintosh 128k.

Features:

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:
(http://www.frs635.com/keyboard/m0110/m0110_030.jpg)

Pcb removed. The switches are much quieter without the pcb:
(http://www.frs635.com/keyboard/m0110/m0110_040.jpg)

Made in USA:
(http://www.frs635.com/keyboard/m0110/m0110_050.jpg)

The dust bunny's natural enemy:
(http://www.frs635.com/keyboard/m0110/m0110_060.jpg)

Old-school Alps:
(http://www.frs635.com/keyboard/m0110/m0110_070.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_080.jpg)

1N4148, as recommended by Dave Dribin:
(http://www.frs635.com/keyboard/m0110/m0110_090.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_100.jpg)

Different revisions. I used the top one which was more yellowed and has two drainage channels:
(http://www.frs635.com/keyboard/m0110/m0110_110.jpg)

Using diodes for the rows. Only with longer distances between the switches additional wire will be necessary:
(http://www.frs635.com/keyboard/m0110/m0110_115.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_120.jpg)

Flat ribbon cable soldered to the rows and columns. NKRO matrix finished. Fast and easy.
(http://www.frs635.com/keyboard/m0110/m0110_130.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_140.jpg)

A round piece of POM will press the reset button:
(http://www.frs635.com/keyboard/m0110/m0110_150.jpg)

POM doesn't like to be sanded. I'll glue this with double-sided transparent sticky tape to the case:
(http://www.frs635.com/keyboard/m0110/m0110_160.jpg)

The complete Teensy assembly:
(http://www.frs635.com/keyboard/m0110/m0110_170.jpg)

And this is how it looks in the keyboard:
(http://www.frs635.com/keyboard/m0110/m0110_175.jpg)

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):
(http://www.frs635.com/keyboard/m0110/m0110_180.jpg)

Aluminum part other view:
(http://www.frs635.com/keyboard/m0110/m0110_190.jpg)

What's this? Key is fully seated on the stem:
(http://www.frs635.com/keyboard/m0110/m0110_200.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_210.jpg)

CapsLock key on the left shows compensation for the shorter stem. A little Dremeling takes care of this:
(http://www.frs635.com/keyboard/m0110/m0110_220.jpg)

Controller glued into place with isolation layer:
(http://www.frs635.com/keyboard/m0110/m0110_230.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_240.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_242.jpg)

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:
(http://www.frs635.com/keyboard/m0110/m0110_245.jpg)

Finished:
(http://www.frs635.com/keyboard/m0110/m0110_250.jpg)

Another pic:
(http://www.frs635.com/keyboard/m0110/m0110_260.jpg)

And another one:
(http://www.frs635.com/keyboard/m0110/m0110_270.jpg)

Comparison with the non-retr0brited 'board, which initially was the lighter of the two:
(http://www.frs635.com/keyboard/m0110/m0110_280.jpg)

Sound sample modded vs. unmodified:
(http://www.frs635.com/keyboard/m0110/m0110_290.png)

original: http://www.frs635.com/keyboard/m0110/m0110old.mp3 (http://www.frs635.com/keyboard/m0110/m0110old.mp3)
modded: http://www.frs635.com/keyboard/m0110/m0110new.mp3 (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. :)

Edit: MouseKeys are working now 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!
Title: The Apple M0110 Today
Post by: mr_a500 on Thu, 11 August 2011, 07:04:03
Wow, that's an awesome, professionally done mod.
Title: The Apple M0110 Today
Post by: Half-Saint on Thu, 11 August 2011, 07:06:32
Great job especially the wiring! You are my inspiration, mister!
Title: The Apple M0110 Today
Post by: mtl on Thu, 11 August 2011, 07:09:12
Exceptional keyboard, lowpoly.  The ribbon cable is beautiful.

What are you using as Fn? Enter? Is the teensy recoverable if you permanently switch into a mode (sounds like it would just require reset/reprogramming) or crash it?
Title: The Apple M0110 Today
Post by: kaiserreich on Thu, 11 August 2011, 07:17:59
Awesome mod.

The most remarkable part is probably the very nice Wiring + Diodes that you have done
Title: The Apple M0110 Today
Post by: lowpoly on Thu, 11 August 2011, 13:03:03
Thanks for the comments.

Quote from: mr_a500;396929
but why put all that effort into such an ugly keyboard? The size is cute, but the colours are what get me. (I believe the colour is known as "puce".... very similar to "puke".)

I'd want to at least replace the keycaps with nice doubleshot black ones from a TRS-80 Model III or TI-99/4a. (same switches as M0110)

I like the first Mac since I've seen it in at a computer fair in the early eighties. There were even cool bags for it to make it portable. The keyboard is the HHKB of the eighties, just compare the (physical) layout. So this had to be done. :) It must look original for this.
 
Quote from: mtl;396932
What are you using as Fn? Enter? Is the teensy recoverable if you permanently switch into a mode (sounds like it would just require reset/reprogramming) or crash it?

Fn is the (Apple ?) key left to space. I use the left thumb for Fn, right thumb for Space. You can do the permanent switch as often as you want. First time I (permanently) switched to the Fn layer I found that I couldn't switch back because there wasn't a 0 or 1 in the Fn layer (number keys are F keys here). I put a 0 on \ and can switch back to Colemak now. Reset would do as well.

I never had to reset the Teensy from a crash. The software would either run or not. If it doesn't run the Teensy can't be found in the device manager and no reset is necessary to reprogram it. Kind of counter-intuitive but that's how it is.
Title: The Apple M0110 Today
Post by: Wibox on Thu, 11 August 2011, 13:11:10
Wow that's sick.
Title: The Apple M0110 Today
Post by: xwhatsit on Fri, 12 August 2011, 03:36:03
Wow, great job. What an interesting way of wiring a matrix! Very impressed with the attention to detail.
Title: The Apple M0110 Today
Post by: hasu on Fri, 12 August 2011, 05:44:21
damn nice!

mmm, beautiful and skillful soldering work...

(http://www.lowpoly.com/keyboard/m0110/m0110_130.jpg)
Title: The Apple M0110 Today
Post by: czarek on Fri, 12 August 2011, 12:56:58
Truly amazing stuff!
Title: The Apple M0110 Today
Post by: elbowglue on Sat, 13 August 2011, 02:15:19
Hot.
Title: The Apple M0110 Today
Post by: noxiq on Mon, 15 August 2011, 04:08:12
Looks really clean. Nice mod!
Title: The Apple M0110 Today
Post by: hyperq on Mon, 15 August 2011, 04:19:04
Outstanding!  Any plans to make it wireless?
Title: The Apple M0110 Today
Post by: lowpoly on Mon, 15 August 2011, 13:13:10
:)

Quote from: hyperq;399159
Outstanding!  Any plans to make it wireless?
Not for now. But there's still a lot of space in the case.

MouseKeys do work now. I just changed the Product ID. Changed it back afterwards, MouseKeys still work.

Added sound files to the first post:

old:  http://www.lowpoly.com/keyboard/m0110/m0110old.mp3
new: http://www.lowpoly.com/keyboard/m0110/m0110new.mp3
Title: The Apple M0110 Today
Post by: microsoft windows on Wed, 17 August 2011, 09:05:30
Looks like a nice keyboard!
Title: The Apple M0110 Today
Post by: wcass on Sat, 17 September 2011, 14:28:58
i have only seen hasu's code as an adapter - used between the original controller and a USB cable. you use it as a controller connected directly to the matrix. would you mind posting a reference link - i was thinking of building an Aikon, but i already have a teensy. and i want mouse keys which the Aikon does not do.

Thanks
Title: The Apple M0110 Today
Post by: wcass on Sat, 17 September 2011, 18:18:49
i answered my own question - i just had to search harder.

http://geekhack.org/showwiki.php?title=Island:11930
http://geekhack.org/showwiki.php?title=Island:12047

and exactly this:
https://github.com/tmk/tmk_keyboard/blob/master/README

Thanks
Title: Re: The Apple M0110 Today
Post by: E TwentyNine on Mon, 13 October 2014, 13:39:40
Saw this linked from a recent thread, just had to comment what a well done mod and excellent write up this is.
Title: Re: The Apple M0110 Today
Post by: dorkvader on Mon, 13 October 2014, 19:36:13
Yes, this is the standard. It set a high bar, and I use it as a reference and as a resource.
Title: Re: The Apple M0110 Today
Post by: henz on Tue, 07 April 2015, 05:01:22
Question, did you ever try sticking newer alp switches into the plate? im considering buying a m0110 but im not sure about the skcc switches.
Title: Re: The Apple M0110 Today
Post by: U47 on Thu, 23 April 2015, 23:36:23
Question, did you ever try sticking newer alp switches into the plate? im considering buying a m0110 but im not sure about the skcc switches.

The keycaps only fit on the SKCC stems, so other Alps switches would need their own keycaps, and the Helvetica Bold legends on the M0110 keycaps are worth keeping the switches.

In my case, I've now collected 5 M0110s to mix and match any switches that are broken. The same SKCC is popular on Apple IIE keyboards (non-platinum, I believe) so you can source spares from many places. I even have spares if you're interested.

I really like the feel of the SKCCs. Linear, fairly stiff, but a solid feel to them. Lots of people think they're too stiff, and you can mod the switch springs if that's the case (as Lowpoly did).
Title: Re: The Apple M0110 Today
Post by: cribbit on Fri, 28 October 2016, 03:27:07
I know it's an old thread, but this is linked as a handwiring guide and seeing the ribbon used makes this super relevant.

This thing (http://www.digikey.com/product-detail/en/cw-industries/C2PXS-2406G/C2PXS-2406G-ND/1122829) perfectly fits a teensy.

I found this while doing my own custom build (https://geekhack.org/index.php?topic=85176.msg2286469#msg2286469), which has some pictures of the cable in use.

Saves a lot of effort and adds some prettiness on the connection of the ribbon to the teensy. Ribbon is definitely the way to go when connecting your switch wiring to your teensy.
Title: Re: The Apple M0110 Today
Post by: ideus on Fri, 28 October 2016, 07:31:27
I always think that the Apple M0110 is one of the best designed keyboards ever and resurrecting this thread is not a bad thing.
Title: Re: The Apple M0110 Today
Post by: menuhin on Fri, 28 October 2016, 08:25:26
Artfully restored.  :thumb:

Nice necro this time!

I and some other members have been waiting for another project (Miniguru) of the OP to complete in the future.  :cool: