Showing posts with label Keyboards. Show all posts
Showing posts with label Keyboards. Show all posts

Wednesday, May 12, 2021

Keyboard Photo Dump

Here are various boards I have put together over the last couple years... I think I am pretty much done with mechanical keyboards for now, but may revisit in the future if I want to sell something. Onto other things.













And here is the last scratch built one I made, for my a friend

Sunday, April 18, 2021

another keyboard

 This was the last PCB I had in the fab batch, so I decided to make another. Also a good way to get rid of excess components I have laying around :) This time I decided to solder the microcontroller flush with the PCB without using header pins. It worked well, including the surface mount pads.





Sunday, January 24, 2021

Yet another scratch built keyboard

So far, the largest sink of time in making these is 1) the 3d print and 2) the diodes... I can wipe out the second portion by having the assembly house do those for me. Since they're common diodes, I can probably get away with doing that cheaply.

This time I 3D printed the plate as well, and had great results. I think if you do not have a laser cutter, this works just as well. The whole keyboard feels much more rigid and square. This one turned out well.








Saturday, August 8, 2020

Making a converter for the Apple Macintosh M0110a Keyboard from Hasu's TMK Firmware and an Arduino Pro Micro

Oof haven't posted in awhile. And yet another silly keyboard project. Work has been absurdly busy lately, and really sucking all of my mental (and sometimes emotional) bandwidth. Hopefully I can get back on track with fun projects again soon. It's felt more of a chore lately, which scares me. It's normally such a relaxing thing to be creating and creative.

The Apple Macintosh M0110a keyboard is a classic beauty with Alps SKCC white linear switches. These have a larger required depress force than the Alks SKCC green switches. So far I have noticed they are a little less smooth, but perhaps that is keyboard specific (mine did have some cruft that I unenthusiastically purged for an hour).


I have chosen to use the Arduino Pro Micro which is based off of the ATMega32u4 because they are hella cheap.

You will want to use the following diagram
Jack fig
This is the pinout with respect to the socket on the back of the keyboard case. Buy one of the 4P4C jacks, and strip the wires. Then, with everything plugged in, confirm continuity to make sure you have the right signals. The clock line should hook up to PD1 and data should hook up to PD0. These are the IO ports on the Atmega microcontroller. On the board I linked above, these are pins 2 and 3 respectively (the numbers shown on the silk screen). Then because the wires are long, I have wired up two pull-up resistors from those pins to 5V as well.

Use this command to find the serial port: ls /dev/tty*
Tty comes form the word 'Teletype.' This command basically shows the available terminals, or serial ports, or other ports from my understanding. You can plug and unplug the microcontroller to see which port it belongs to

Clone the git repository, and change directory to the M0110a directory. You can flash the device with this command:

avrdude -p atmega32u4 -P /dev/tty.usbmodem14201 -c avr109 -U flash:w:m0110_usb_rev1.hex


This will load the currently built firmware to the device. If you want to edit and rebuild then use these make commands with the provided make file:
$ make -f Makefile.rev2 clean
$ make -f Makefile.rev2 [KEYMAP={intl|spacefn}]
Also, the TMK firmware generator linked above will generate these files as well for you. You can then edit the keymap with the web interface and use the hex file that generates (a lot easier!).

If you want to re-load firmware, then (with the arduino powered on) ground the reset pin twice until it shows up in ls TTY. This will only appear temporary, as the device will put itself into bootload mode. Make sure to flash quickly :)

Here's what the keyboard looks like after I cleaned it up a fair amount.
During the cleaning process.. you can see the Alps SKCC switches:
The designers left a little window for the intel chipset running this thing. Date code 1980! 
Here it is sitting next to my IBM Pingmaster 4704 terminal keyboard:























Wednesday, March 13, 2019

TeXbrd SN003

I built a third board with DSA White Penumbra caps from Flashquark. I might buy another set of these caps, as they are delightful. I'm super into the whole blue thing.

Sunday, February 24, 2019

TeXbrd: The custom mechanical keyboard with $\LaTeX$ bindings

So I had this ridiculous idea about 6mo ago. I use $\LaTeX$ all the time in my homeworks, research, and writing in general. I even use it for documentation when I am doing work for different companies. Overall, it is an excellent programmatic, scripted documentation language that seems to have infinite degrees of freedom. I always felt that I could do so much more if I had an edge on speed while writing mathematics. The following takes roughly 40 seconds for me to write out (counting sublime auto-fill features):

$$\begin{equation}
J = \sum_{i=0}^{N-1} x_i^TQx_i + u_i^TRu_i
\end{equation}$$

I know that you can just add bindings to an existing keyboard. I know there are simpler solutions to make writing $\LaTeX$ quicker. But I like keyboards, designing PCBs, writing firmware, and ridiculous solutions to simple problems. So I built a keyboard. I dub thee TeXbrd.

For some reason I decided to use a Teensy 3.2 early on, only because I knew it could function as an HID keyboard and had all the support for it. I should have gone with the pro mini with QMK firmware that is already extensible.

I started off (MkI) with a 60% style keyboard style as you see in the foreground here:
I quickly realized that I did not want to be stuck in layer-hell by burying the navigation cluster. Additionally, I would be using double modifiers for all of the $\LaTeX$. There would be a key for Greek AND math. The latter is the part that would be impossible to remember.

Around this time, I also got my vintage IBM SKCC Alps cream pingmaster keyboad which made my fall in love with linear switches and battlestations (keyboards with tons of keys).

MkI also had Cherry MX blues which are a flaming disaster of a keyswitch. I also wanted this to function in an office environment.
SO I moved to Kailh box reds, which are superior in their smooth linear quality as well as being quiet enough so that my office mates don't throttle me (in fact I am making one for a fellow lab-mate).

You can see MkI in the background with my IBM pingmaster in the foreground.

I enjoy the ortholinear look of the number keys and function keys. I also chose to go for a 2U sized escape key, as I find myself using ESC very often. I made sure that all of the keys lined up such that I could but a delete key above backspace.
Below you can see the board layout! The teensy jutting off the side seemed cool, and I was going to make an additional add-on board that clips in via TRRS jack. But too much work; plus higher BOM and PCB cost.

So I ordered the standard 5pcs of this from JLCPCB (totally recommend, unbelievably cheap). I made one with cherry blues, died a little on the inside, and then proceeded to design MkII. This time, I added the extra keys for dedicated math bindings (so tired of writing \frac{}{} +  3x left key hundreds of times). Here is the layout for MKII:













The layout got a little trickier, but still all 2-layer. I also learned some lessons on rollover diode placement with respect to the stabilizers. I made sure to bring the bottom of the PCB up as high as I could, and you can see the spacebar stabs are truncated.

I fabricated these PCBs in white color, and ordered another 5pcs with the full expectation to build all of them (currently doing as I get free time). I wanted a proper case, unlike the layer of neoprene I put under the MkI PCB. I also enjoy having a slightly angled board for my wrists, and elevated to accommodate a future rest if I like. I designed the case to be printed on my Wanhao I3 printer:


I was inspired by an online design on kbdfans of a 5-degree case. So I did my best to keep it cool and polygonal. After a couple printed revisions, I got the design down and made some pretty sweet prototypes.  Oh and I also spent a ton of time laser cutting and debugging a design for a 1.5mm acrylic backplate for all of the switches to lay into:




 They turned out excellently..... They are honestly a joy to type on; and I almost want to just make a wall of them. They look so good!!!!!!

If you want one, I may start selling them for ~$155 each. Contact information: PSL58@cornell.edu