Monday, December 30, 2019


4 Squares

I was going to use two sets of 3 Nori PCB's to rebuild the 96 key Ti-Pro keypad. Instead I created 5 tetromino shaped PCB's that can be arranged to fit just about any rectangular shape with a number of switches divisible by 4.

There are five designs. They use the same any direction switch pads that I used on the Polyandry. Individual PCB's can be placed in any orientation.

I arranged the PCB's into a 8x12 grid. I used some steel rulers to hold the pieces tightly together.

Blue painter's tape holds all the pieces in place.

Flipped over, ready for the solder bridges to be soldered.

All pieces held together with solder bridges. Tape removed.

Close up of the solder bridges. Lots of solder.

Test fit in the Ti-Pro. It can be placed either side up, or rotated 180. I had previously de-soldered the original Ti-Pro PCB. These boards have no places for supports. They would only work well with a solid plate to support the switches. The Ti-Pro has a heavy steel plate.

Diodes and jumpers installed. All vertically aligned pads are diodes. Cathode goes to the Square pad, which is sometimes on the top or on the bottom. All horizontal pads are jumpers. These jumpers are 0 ohm resistors. Pieces of wire could be used too, but the resistors were easier to work with.

Close up of the diodes and jumpers. The jumpers are for the Columns, and the diodes are the Rows. This is for a COL2ROW matrix.

PCB installed and switches soldered. A 30awg wire is soldered to each row and column. I mounted the PCB with the diodes hidden on the other side.

I used a wire wrap tool to connect the wires to header pins on the Arduino Micro clone.

Close up of the Arduino Micro clone.

I cut down some color paper and inserted them in the relegendable keycapes. It mimics the colors of the PCB's.

Gerber files on git.

Wednesday, November 20, 2019


A board for the left over keycaps that I don't use

Few of my keyboards use all of the keys in a typical keyset. I have many left over Shift, Enter, Backspace, etc... keycaps. This is somewhat related to the I-S-hOle.

Mostly the larger than 1u keycaps. They fit nicely in a 5x5 size square grid. 95mm square. Gerber files on git.

PCB mount switches and PCB mount 2u Cherry stabilizers.

The matrix is 4x5, 4 columns and 5 rows. There is a JSON file for use with

Cols F4 F5 F6 F7
Rows D4 C6 D7 E6 B4

Powered by a Pro Micro. The USB connector comes out the side of the board. There was no way to position it coming out the top due to the odd spacing of the switches. The unused pins are broken out to pads. There are pads for a 5.2mm surface mount tactile switch connected to RESET.

There are also pads for a TRRS jack. I have not built it, but this should work as a split keyboard.

 Like the Gherkin I use a second PCB as the bottom. M2 spacers and screws hold the two together.

Wednesday, October 30, 2019


Pumpkin Keycap

My only novelty keycap. These can be ordered on Shapeways.

It is sitting on the FLIRC case with the MX switch mod. The LED is controlled by the CPU usage of the Raspberry Pi. The switch powers the Pi on or off.

Monday, October 28, 2019

PB Gherkin

Gherkin that can mount switches in any direction

Like the Polyandry this version of the Gherkin can mount the switches facing up/down/left/right. The trade off is that there are no in switch LEDs. The matrix is the same as the original Gherkin, and it will run the same firmware.

Externally it looks the same as a regular Gherkin. The new top plate has notches for switch top removal on all 4 sides. Gerber files on git.

The PCB can be assembled either side up, which will place the Pro Micro right side up or upside down. There are pads for a 5.2mm tactile surface mount reset switch on both sides of the board.

Flipped the other way, the Pro Micro is mounted the same was as on the original Gherkin. Extra care has to be taken as the switch pins are more likely to make contact with the USB connector on the Pro Micro in certain orientations.

The square pad indicates Pin 1 on the Pro Micro. For the diodes the cathodes connect to the square pad.

There are double rows of pads for the Pro Micro. These can be used to connect to the unused pins. They can also allow for use of some of the odd sized Pro Micros as on the Nein.

Bottom plate. Is pretty much the same as the old plate. The size of the PB Gherkin is identical to the original Gherkin. The holes are in the same locations.

First generation of the PB Gherkin had smaller holes instead of the large oval. These are too small for some types of switches with built in sockets.

Monday, September 16, 2019

Flirc 1 button

Power button for the Raspberry Pi

Created a custom top plate for the Flirc 3B case. The original top was made of black plastic and had little tabs that snapped into cut outs in the top of the aluminum case. The top I made is just a flat piece of PCB material with black soldermask. The PCB has a 14mm square hole to fit a Cherry MX style switch.

I use 3M VHB tape to hold it in place. The VHB tape is 0.8mm thick. This creates a gap between the case and plate that the thin 30AWG wire can fit through. The wires pass through one of the cutouts to the Raspberry PI GPIO pins inside the case.

The PCB is about 1mm smaller then the recessed area. I manually centered it, 0.5mm gap on each edge. This also fits the Flirc Pi 4B case, except that the recessed area is larger and there is a larger gap on the top/bottom edges.

I used small pieces of the 3M tape. It is very strong and would be difficult to remove if needed. Thin kapton tape is used to keep the wires from moving around.

A 2x3x4mm size LED fits inside the Gateron clear top switches. Zealio switches have the same design.

A current limiting resistor connects the cathode of the LED to one of the switch pins. This shares the ground connection back to the GPIO header (black wire). The anode of the LED is connected to the red wire which connects to GPIO4. The other pin of the switch is connected to GPIO3 with the blue wire.

The wires pass though one of the cutouts and I used a wirewrap tool to connect them to the GPIO pins.

Another angle view of the connection to the GPIO pins. Ground. GPIO3 used for the power switch. GPIO4 used for the activity LED.

Info on the power button and how to set it up can be found here:

Info on the activity LED here:

Gerber files on git. The board is less than 100mm square, and can be manufactured at a discount at many PCB fabrication houses.

Video of the activity LED. This is starting from a shutdown state. Shorting GPIO3 to ground will restart the Raspberry from this state. The activity LED is using the CPU trigger. There is a short delay on startup and before complete shutdown where the Raspberry Pi's original activity LED is in use instead of the GPIO LED.

Saturday, August 31, 2019

piz pad

3 key phat for the Raspberry Pi Zero

Simple board for 3 PCB mount MX style switches. They are connected to GPIO 22, 23, 24. Closing the switch connects the GPIO pin to ground.

This works with either the Pi Zero or Pi Zero W. There are many tutorials online about using switches with the GPIO pins to control actions. You can also use USB gadget mode to use the Pi Zero as a USB HID keyboard device.

Gerber files on git.

Mounting holes in standard locations. 2x20 header to connect to the Pi Zero.

The switch pads can mount PCB mount switches in any orientation.

M2.5 spacers and screws hold it in place on the Raspberry Pi Zero.

The standard header height leaves a lot of space under the board. I am looking at some lower profile sockets, but they may break compatibility with the standard male headers.

Tuesday, July 16, 2019


Tiniest keyboard

Recently received my Tomu from crowdsupply. The Tomu is an opensource hardware/software project by Sutajio Ko-Usagi. The entire circuit board fits inside the USB connector. The only part that sticks out are the two touch sensitive contacts and a pair of LEDs.

The are several different firmware examples including a U2F security key. There is sample code that emulates a HID keyboard.

The Tomu comes with a clear plastic housing. The board is so thin that it would not stay securely in a USB port without the case.

The bottom of the board has all the circuitry. There isn't much more than the ARM chip and a few resistors/capacitors. There is one red and one green LED.

Next to a U2F Zero.

Very little of it sticks out of the port.

There is also the Fomu, which is a FPGA development board the same size as the Tomu.

The Somu is a Tomu size FIDO2 key from the maker of the U2F Zero, and Solokey.

Thursday, July 11, 2019

2 iota

Fixed the iota PCB

Finally got around to fixing and testing the 16mm iota pcb. More information can be found in the original post.

Gerber files on git. Firmware on git.

Gateron PCB mount switches.

M2 spacers and a second PCB used as a bottom.

Diodes are installed inside the switches.

Used some keyboard stickers to relabel the randoms keycaps I cut down.


4 way switch orientation with multiple controllers

The Polyandry can mount switches in any orientation. It also has a pinout that can work with several different micro controllers.

3x4 keypad. There are no diodes. Each switch is connected to it's own data pin. Between the many controllers there was not a common pin location for Ground, so an additional data pin is used as a ground pin. The pins used for the switches are marked on the board. The matrix is logically 1 row x 12 columns.

For each switch footprint the diagonally opposite pads are connected together. Each adjacent pair of pads are the two unique electrical connections for each switch.

To mount the controller upside down the PCB can be flipped over. Most of the controllers have a built in Reset button that would be inaccessible if mounted upside down.

The switch footprint allows the switches to be inserted in any direction. The top plate also has cut outs for switch top removal with the switch in any orientation.

Bottom of the plate with switches inserted.

You can see the pins aligned with the different pairs of PCB pads.

Some of the controllers that should work with this PCB:
  • Adafruit ItsyBitsy ATmega32U4
  • Adafruit ItsyBitsy M0
  • Adafruit ItsyBitsy M4
  • PJRC Teensy 3.5/3.6
  • PJRC Teensy 2.0
  • PJRC Teensy LC
  • PJRC Teensy 3.2
  • Pro Micro
The pin definition is different for each controller, only the physical locations are the same. High res PDF of chart here.

4 different processors tested so far. Adafruit ItsyBitsy ATmega32U4, PJRC Teensy 3.5, Pro Micro, Teensy 2.0. I made Arduino sketches for each on git.

Side views. M2 spacers and screws. Can be assembled without a plate if PCB mount switches are used.

Several revisions of the PCB were made. The first version could only have the switch in one orientation. The second has holes that are too small for some switches. The final has the large oval pads that fit any MX style switch.

The second outer row of pins act as a breakout board for connecting to the other unused pins.

The bottom of plate, the other side is blank.

All of the PCB's are under 100mm square. Very inexpensive to have made. Gerber files are on git.