"It" inspired picture courtesy of Sean Yin
This is my attempt at a chording keyboard. I got inspired by gBoards' Ginny keyboard but felt like there's some room for improvements. Especially uncomfortable was using mouse with it. Thus I have decided to attach a trackball. Now mouse buttons are part of the keyboard and can also be usen in chords. Trackball can be kept very close to the keyboard eliminating the need for moving your hand like with normal mouse. I have also added rotary encoders to make some of the operations easily accessible. This project wouldn't have been possible without an awesome chording engine by DennyTom. I have extended it a bit to support pointing devices(mouse buttons handling) as well as performing some operations with the ball like scrolling, changing volume etc. Plus some bug fixes(broken leader key handling). I also wanted to make the build process as easy as possible. All parts just clip in and only 2 screws are needed to secure the trackball sensor. Everything is hand wired and there's no need for PCB. No special soldering skills are required either (except for making the ADNS9800 sensor if you opt to make one on your own, I've also included pre-built version in BOM which should work as well). Trackball is optional though. This keyboard is using ASETNIOP.
Item | Count | Example |
---|---|---|
MCP23017 I2C Expander Breakout Board | 2 | Link |
Pro Micro 5V 16MHz | 1 | Link |
TRRS Socket PJ-320A | 4 | Link |
TRRS Cable Male to Male 0.5m | 2 | Link |
4.7k Ohm resistor through hole | 2 | Link |
Enameled copper jumper wire 0.1mm | 1 | Link |
5mm kepton tape | 1 | Link |
12mm rotary encoder with switch | 0-2 | Link |
15x16 knob for 12mm encoder | 0-2 | Link |
EVQ-WGD001 encoder with switch | 0-2 | Link |
Kailh Choc V1 25g switch | 14 | Link |
Choc keycaps 1u | 8 | Link |
Choc keycaps 1.5u | 6 | Link |
6x2 antislip pads | 4 | Link |
Item | Count | Example |
---|---|---|
Soldering iron 80W | 1 | Link |
Tin wire 0.5 to 1mm will do | 1 | Link |
Hot glue gun | 1 | Link |
- You can buy a bundle that is soldering iron + tin wire + some other accessories that you think might come usefull. Buying a bundle with a multimeter is a good idea.
- Better kecaps are MKUltra
- If possible getting switches lighter than 25g should make sense, but since I wasn't able to put my hands on any of these I can't recommend. Choc springs are almost impossible to get.
You will have to get all the items from the 'trackball base' plus the ones from the ball size you're planning to use. Paracord and heatshrink tube are rather optional but using it will result in better hold of the cable in trackball base. As a plus you can match the color of paracord to the TRRS cables.
Item | Count | Example |
---|---|---|
6 core wire | 1m | Link |
Bearing steel rollers M3x8mm | 3 | Link |
ADNS9800 breaktout board | 1 | Link or Pre-assembled |
M2x5mm flat head screw | 2 | Link |
Paracord 4mm | 1m | Link |
Heat shrink tube | 1box | Link |
Item | Count | Example |
---|---|---|
SiO2 bearing 603(3x9x3mm) | 3 | Link |
M570/Ergo 34mm ball | 1 | Link |
Item | Count | Example |
---|---|---|
SiO2 bearing 603(3x9x3mm) | 3 | Link |
44mm Trackman ball | 1 | Link |
Item | Count | Example |
---|---|---|
52mm snooker ball | 1 | Link |
MR63ZZ bearings 3x6x2.5mm | 3 | Link |
- Two types of rotary encoders are supported, vertical and horizontal. In my build I went with horizontal on the right side and vertical on the left, and I would recommend this setup as the right one is meant to act as a mouse roller/scroll. But it's up to you which one you choose. Especially if you're not planning to use the trackball functionality. Pick two as the sockets doesn't support switches there. But encoders are interchangeable.
- Use recommended type of bearing for particular ball. This ensures smooth operation of the ball. Different bearing than specified won't support ball of other size at the correct height from the sensor.
Recommended settings for top part (holding switches etc), bottom not angled and encoder cap:
- Layer height 0.2mm
- Infill 30%
- Use mirroring feature of your slicer to print left half
- Supports not needed
Recommended settings for other parts:
- Layer height 0.3mm (but if you have time 0.2mm will work just fine too)
- Infill 15%
- Use mirroring feature of your slicer to print left half
- Supports not needed
- Print desired trackball module matching your ball size. Bottom part is common for all sizes.
I would suggest printing top with the raised thumb and for the bottom part left side: angled 10 deg, and for the right side: flat with/o tracbkall
Start with attaching kepton tape to the bottom side of ProMicro and top side of I2C expanders(cover the pads). This way you will avoid tin blobs (I didn't do it for I2C expanders and it was a mistake).
Setup the pins on I2C expanders following the diagram.
It should look something like this.
Next you will have to prepare the switches. Put some tin on every switch pin. Then for the pinky you will have to attach 2 long pieces of enameled wire. It's easier this way since pinky is the tallest and it's a bit difficult to solder once it's socketed in place.
Then insert switches. Make sure pins are facing the same way as on the photo/diagram. At this point you can also attach the I2C expander. Use small amount of hot glue to lock it in place. Be sure not to cover any of the pads.
Once this is done follow the below diagram and connect all the GND pins for the switches. For now skip the rotary encoder/audio jack part. These will be done later. Route the enameled wire through the canals. Otherwise it might get clipped when the bottom part is attached.
Wiring should look like this.aa
Now it's time to connect every switch to the respective pin on the I2C expander. Follow the diagram below for proper wiring.
Prepare encoders. From the 12mm vertical one clip mounting legs (thick ones on the sides) and solder some wire to each leg. It will make wiring easier later on. Attach the 3D printed cap which later on should clip into the encoder socket (it fits only one way so try first). Use the screw and a washer that came with the encoder (as per the image). For the horizontal one just solder some wire except for the first pin which is unused.
Push the encoders into the slots and follow below diagram for wiring. Be sure to keep the same pin orientation. Also you might want to use hot glue to hold them in place. Remember to connect GND pins (look at the switch GND diagram)!
Before moving on to assembling audio jacks I would recommend using some hot glue on the switches that are above the audio jack. Otherwise later on it will be impossible to reach the bottom of the switch. First you will have to bend the pins on the audio jack socket and cut the plastic pieces marked in red. There's a special pocket inside the wall for the socket to fit in. Try pushing it so it's at the same level as the bottom of the keyboard.
Follow the diagram below for proper wiring(I have only named proper pins). You can wire GND to the nearest GND, for example to the encoder GND or the one on the nearest switch or even wire.
And final product should look like this (pay attention to the audio socket position and don't mind that I'm lacking the GND connection).
That should be it for assembling keyboard halves. Secure everything with hot glue. Should look more or less like this. Be sure no wire is sticking out, place everything inside the canals and secure with hot glue.
Now it's time for the MCU part. First take a look at assembled part. This will give you a general understanding how it should look like. There are 2 pull up resistors wired from RAW pin to pin 2 (SDA) and pin 3 (SCL). Audio jacks sockets should clip in place. Notice that audio jack pins are bent in the opposite direction (inwards) compared to the keyboard halves. If you're planning to use the trackball I would suggest wiring connecting cable first then wiring audio jack sockets. Refer to the wiring diagram for all of the parts. Reset switch is not necessary. I've only used one because I knew I will be programming it multiple times and shorting pins in a long run is not the best way to enter flashing mode. Besides pressing ASETNIOP keys will enter DFU mode so you can totally skip the reset switch. Also it's a real pain to solder :D
First are the pull up resistors.
Then the trackball if you're using one(you can choose any GND pin).
And audio sockets come last (You can use VCC pin instead of RAW).
For the trackball assembly one picture is worth a thousand words. All pins are described so it's just a matter of soldering.
Check src folder for flashing/layout information.
And that's it. Congratulations!