Skip to content
forked from kbjunky/Chordie

A chording keyboard you shouldn't be scared of

License

Notifications You must be signed in to change notification settings

gorbkeller/Chordie

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chordie

A chording keyboard you shouldn't be scared of

"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.

BOM - base

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

Tools

Item Count Example
Soldering iron 80W 1 Link
Tin wire 0.5 to 1mm will do 1 Link
Hot glue gun 1 Link

Remarks

  • 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.

[Optional] Additional items for trackball module

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.

BOM - trackball base

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

BOM - 34mm trackball

Item Count Example
SiO2 bearing 603(3x9x3mm) 3 Link
M570/Ergo 34mm ball 1 Link

BOM - 44mm trackball

Item Count Example
SiO2 bearing 603(3x9x3mm) 3 Link
44mm Trackman ball 1 Link

BOM - 52mm trackball

Item Count Example
52mm snooker ball 1 Link
MR63ZZ bearings 3x6x2.5mm 3 Link

Remarks

  • 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.

Build guide

3D printing

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

Wiring

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!

About

A chording keyboard you shouldn't be scared of

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 69.8%
  • Python 16.3%
  • Roff 12.8%
  • Other 1.1%