Skip to content

tcolar/longhorn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Longhorn keyboard build

What is the longhorn keyboard ?

longhorn

It's a split, sculpted, ortholinear keyboard.

It's a modified version of this keyboard by u/cyanophage : https://www.reddit.com/r/ErgoMechKeyboards/comments/i8e9xv/my_first_split_my_own_design/

Almost all the credits go to him, I ust modified his design, mostly to have a different thumb keys layout (fan out).

Why is it called longhorn?

because: longhorn

Design

I started with the design by u/cyanophage and made some modifications.

  • Removed the existing thumb keys.
  • Replaced with a new circular thumb clusters.
  • Added a caddy for the pro-micro (slightly different than the eliteC )
  • Added a different jack caddy (jack module)

I used OpenScad to tweak the design, in a linux VM as it's not signed to run on OSX.

openscad

See the Design folder for the Scad and STL files

Printing

Here is the STL kb.stl, printed mirrored for the other hand.

I printed with my old Robo3D+ using black PLA filament.

I used Cura for the slicing.

I print via octopi (raspberry pi connected to the printer).

Settings I used:

  • Bed Temp: 50c
  • Extruder temp: 210c
  • Quality : fine (0.2mm)
  • Support: yes, zig-zag. This needs good support and zig zag is fast and easy to remove
  • Adhesion: used a raft, adds almost an hour to the print, but support adhesion to the bed was an issue without it.

Print time: ~ 9 hours per side.

printing

printed

Parts

Tools:

Switches

Install all the switches

switches

Then glue them in place:

glue

Testing pinky/thumb placement :

hand

Install keycaops

You can do this either now or after the wiring, but better know if anything is off ASAP.

caps

Wiring

This is the part that is a ton of work.

My matrix is 6 cols * 5 rows (per hand) The thumb cluster is treated as row5 with keys in cols 2-6.

Rows

First I wired the rows, each key gets a diode to the row to avoid ghosting.

Make a little loop with each diode and solder it to each key.

diodes

Then I take a piece of wire and mark the diode pins location and use a razor knife to expose the wire core. Make surer to use solid wire for this, stranded wire would be a pain.

stripped

Then solder the diodes to the wire, and that's one row : row1

Repeat for all rows rows

Columns

For the columns we don't need any diodes just connect with wire:

cols

Controller

Printed a caddy for the controller and jacks, see micro.stl

jack

Wiring the controller os pretty difficult as it's very tiny and close together.

I used ribbon wire for this as it's less messy.

Here are the pins layout for the pro micro: pins

So first I soldered ribbon wires to the pro micro:

Best is to apply solder to the pro micro pins (little solder bubble), apply a bit of solder to the end of the wire, and then solder them together one by one.

Be careful not to have two pins getting soldered together.

controller

What I have here is:

  • top right : purple(GND) and white(RESET) wires are and going to the reset button.
  • top left : orange(pin3 a.k.a D0), red(VCC) and brown(GND), goes to the TRSS jack connecting the two halves.
  • bottom right : wires going to the 5 columns.
  • bottom left : wires going to the 6 rows.

Wired up, with the TRSS & controller caddies glued:

both

Jacks & Reset button

I glued the jack.stl caddies and wired the jacks.

Note: I messed the jacks up and had to redo them as I initially let some hot glue get inside the jack plug and they were not working.

I had not planned for reset buttons, so I drilled a hole to add them, I highly recommend reset buttons as it makes it so much easier to reflash your firmware as you figure out your keymap.

both

Firmware

Up next is the firmware.

both

I created my 5*6 matrixes and my custom layout and flashed them.

rules.mk

in rules.mk, most important parts:

# config for pro micro :
MCU = atmega32u4
BOOTLOADER = caterina
# Yes, this is a split KB :
SPLIT_KEYBOARD = yes

config.h

First config.h, the most important bits are:

// Specify what micro-controller pins are hoked up to rows and cols:
// Note: the pin names are no what is labelled on the pro-micro, see
// the pin diagram above in this page for reference.
#define MATRIX_ROW_PINS \
    { B6, B2, B3, B1, F7 }
#define MATRIX_COL_PINS \
    { B4, B5, E6, D7, C6, D4 }
// Specify the pin used for serial communicationbetween the halves,
// via the audio cable.
#define SOFT_SERIAL_PIN D0      // pin #3
// Specify our diodes directions, if you set that wrong, keys won't work
#define DIODE_DIRECTION COL2ROW

longhorn.h

longhorn.h defines our key matrix and how keys are laid out on each half.

Note that I wired up my columns "mirrored" (left to right on left hand, right t eft on right hand), so I had to invert the right hand entries in my layout to get the correct mapping, see the file for more info.

keymap.c

Finally keymap.c contains our keyboard layout (with multi layers etc ...)

Just open the file to see my current layout.

Flashing

First I built my firmware with build.sh

qmk compile -kb handwired/longhorn -km default

And then flashed it using QMK Toolbox

It works best to use auto-flash and then press the kb reset button (auto-flash because pro-micro only gives you ~8 seconds to flash after pressing reset).

qmk

End result:

It works great, next up is figuring out some baseplate and tenting, maybe 3D printed, maybe wood.

both

Once I found the spacing and angle I like I made a "plank" for it, and my wife painted our pets on it.

plank

About

A custom split Ortho keyboard I built

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages