• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

M0110/A to Lisa Keyboard Adapter

warmech

Well-known member
Welp, this is it - the last major project on my plate to be completed before my wife and I have our first kid in about a month. Born - sorry for the pun - out of my refusal to spend (checks eBay)... a car payment on a second Lisa keyboard, I wanted to make something highly compact that could take what I felt was the aesthetic descendant of the Lisa's keyboard and let me use it with a Lisa. GitHub repo is here.

IMG_4585.jpg

On its face, this project is fairly simple: allow a user to connect an M0110A or M0110 + M0120 (US or international for any/all) to a Lisa. Below the surface, though, I've taken advantage of some prior work by others to make this as straightforward as possible and added some additional features that I think are a decent value-add. First, while the hardware design is original, the implementation of Mac and Lisa keyboard protocol handling is (largely) not. This adapter uses a modified version of RebeccaRGB's LisaKeys libraries to handle two important functions:
  • the Lisa keyboard protocol itself, as well as communicating with the Lisa hardware, and
  • serial communication with the adapter to send keystrokes via terminal to the Lisa.
The first of those functions is self-explanatory; the second, however, might be less so. The unmodified LisaKeys libraries support some things that were unnecessary here, such as USB to Lisa conversion and Lisa to PC/MAC conversion. While these functions have been removed, one that I wanted to keep was the ability to send "keystrokes" to the Lisa via serial console and not just for text input. RebeccaRGB also included the ability to (after putting the Lisa in service mode) enter data directly into memory. A prominent example of this, as provided by RebeccaRGB, is to just be able to load BLU's bootloader straight into RAM and go. This mode can be accessed by connecting the Arduino to your PC via USB, opening either the Arduino IDE serial monitor or the serial console of your choice, and then pressing the MODE button once. After pressing MODE, the words "Serial Communications Mode" will appear in your console; the adapter is now ready to send keystrokes via serial. I should probably put a quick readme together for this function, but you can refer to the instructions on RebeccaRGB's LisaKeys GitHub repo for now.

The M0110 protocol handling uses Jun Wako's M0110/M0120 implementation for the TMK adapter firmware with only a couple of minor modifications (additional functionality for testing Mac keyboards). Also, if using an M0110A, there has been some finagling of number pad keys. Since the ten-key on the M0110A isn't identical to the M0120 and Lisa, the arrow keys on the M0120/Lisa have been mapped to the arrow keys on the M0110A and the A's unique ten-key characters have been mapped to functional equivalients on the Lisa. For example, the plus sign on the A, which is in the same position as the comma on a Lisa or M0120, sends a plus sign scancode and not a comma; the down arrow on the A, however, will type a comma if pressed when the functional context would not otherwise be expected to scroll or move the cursor downward.

Tremendous thanks goes to both of these folks for figuring out what I would otherwise have spent weeks banging my head against a desk to do.

Aside from the basic adapter and serial input functions, this unit will also allow you to connect both Mac and Lisa keyboards (at the same time, if desired) to the adapter and test them for functionality. Just make sure the adapter is connected in the same fashion as for using the serial mode and press the MODE button twice (from powering on - press MODE once if you were already in serial mode). You'll see the words "Keyboard Test Mode" appear in your serial console when you have successfully entered this mode.

The last thing I added, which is entirely ancillary, is the ability to user either original Mac keyboard cables or unmodified, off-the-shelf telephone handset cables. If you've ever tried to use a handset cable with an M0110 and a Mac 128/512/Plus then you know they don't play nice. This is due to the Mac cables being straight-through cables and handset cables being, essentially, crossover cables. Don't have any Mac cables lying around? Just toggle the DPDT switch from MAC to HANDSET and flip DIP switch 3 to ON and you're good to go. Is this largely pointless? Sure! Did I think it was neat? Yep. Will it actually help anyone? Meh.

Aside from the PCB, this is all off-the-shelf and made to be as small and cheap as possible while still having some neat features beyond just being a keyboard adapter. The per-unit cost breaks down as follows, for a total of $17.48:
  • $8.21 for everything but the Arduino Pro Micro and PCB from Mouser
  • $5.40 for the Pro Micro from Micro Center
  • $0.72 per PCB from JLCPCB ($3.87 per PCB if you include shipping)
If I have time this week, I may throw an even more trimmed down version out there that just does adaptation (and nothing else) that is super cost-reduced. I'm also working on an STL for a case for this thing, as I've been meaning to learn how to use my resin printer for months now and finally have an excuse to do so, lol.
 

ScutBoy

Well-known member
Very nice! If you have a chance before baby comes to do a BOM - or make kits! :) - that would be awesome, would buy.
 

warmech

Well-known member
Very nice! If you have a chance before baby comes to do a BOM - or make kits! :) - that would be awesome, would buy.
You bet! I'll throw a Mouser project up on here at lunch. I think I'm going to go ahead and make a trimmed down version and post that as well tonight. And yeah, I'd planned on selling the additional PCBs I received (I only have a need for one of these, after all), so those will go up shortly as well.

Also, I can absolutely make kits - I usually drop by Mouser once a week for will call orders, so I don't have any qualms slapping a kit or assembled version together. At least one PCB is headed to Alex to put through its paces on his various Lisas, so I should have three of these unspoken for. I hadn't really planned on ordering more beyond this but, if there's enough interest, I can order another small batch when I get the PCBs for the trimmed down version.
 

ScutBoy

Well-known member
You bet! I'll throw a Mouser project up on here at lunch. I think I'm going to go ahead and make a trimmed down version and post that as well tonight. And yeah, I'd planned on selling the additional PCBs I received (I only have a need for one of these, after all), so those will go up shortly as well.

Also, I can absolutely make kits - I usually drop by Mouser once a week for will call orders, so I don't have any qualms slapping a kit or assembled version together. At least one PCB is headed to Alex to put through its paces on his various Lisas, so I should have three of these unspoken for. I hadn't really planned on ordering more beyond this but, if there's enough interest, I can order another small batch when I get the PCBs for the trimmed down version.

I would definitely be in for a kit if you put some together! If not, the BOM/Mouser list plus a PCB would do the trick.
 

warmech

Well-known member
This is good stuff! Well done.
Thanks! Hopefully I've got enough time left to wrap up my PSU replacement as well. I tossed out my old design and started a new one, but I doubt I'll have sufficient time to get it knocked out. I may start another thread on that and solicit input on electrical design. PSUs are kind of out of my wheelhouse (most stuff is, lol), so any input is appreciated.

As for the adapter BOM, here is the Mouser project for the larger model above.

When it comes to a much smaller and slightly more cost-reduced version, here's what I call "the gumstick":

gumstick_front.pnggumstick_back.png

I sincerely try to avoid using SMD components, mostly to make sure anyone can assemble what I toss out there regardless of soldering skill, but this time I decided to make a slight compromise. The reset button is an SMD tact switch, but the pads are pretty decently sized and it has a stress-relief pin to keep it in place while soldering; so long as you put that on first, it should be doable for just about anyone. I tried to pick one that both met space constraints and looked easy enough to solder down, so hopefully that turns out okay. The whole PCB is about 75mm x 22mm (~3" x ~7/8") and is pretty much just an MCU, ports, and region jumpers. Approximate per-unit cost is about $2.00 less than the larger one, so it's not a huge savings, but it's super-compact - about as small as one of these can get. Here's the BOM from Mouser if anyone's interested in this ludicrously sized little gizmo, lol. I'm probably not ordering any of these right this second, as I prefer to try to consolidate JLCPCB orders into a single batch due to shipping costs; I should be placing one more order prior to baby showing up, so if anyone is interested, let me know!
 
Last edited:
Top