The Atreus is a mechanical keyboard designed primarily to match the
shape of human hands and to be as portable as possible. The case
measures 26x12cm and lacks even a number row, relying heavily upon the
fn
key. There is a circuit board for this design, but it’s also
possible to manually wire the matrix.
I’ve seen a number of existing DIY 40% keyboard designs, but most of them stagger the rows, which I find very annoying now that I’ve gotten used to the columnar layout of the Ergodox. In addition, many of the designs I’ve seen waste a lot of room on the space bar, failing to take into account the fact that the thumb is the strongest and most versatile of the fingers. This design avoids both these problems while taking a more couch-friendly single-piece approach.
See the changelog for the various revisions made to the design since its initial release.
You can buy Atreus kits that have all the parts you need along with detailed assembly instructions from http://atreus.technomancy.us. If you’d rather round up all the parts yourself, that’s possible too since the design is completely open source; see the bill of materials below.
Only a handful of punctuation marks (and no digits) are available unshifted, and all the modifiers are on the bottom row:
q w e r t || y u i o p a s d f g || h j k l ; z x c v b || n m , . / esc tab super shift bksp ctrl || alt space fn - ' enter
The numbers and most of the punctuation are on the fn layer with a numpad-style arrangement under the right hand:
! @ { } | || pgup 7 8 9 * # $ ( ) ` || pgdn 4 5 6 + % ^ [ ] ~ || & 1 2 3 \ L2 insert super shift bksp ctrl || alt space fn . 0 =
The L2
key switches it to the function layer, and tapping L0
here
brings it back to the first layer.
insert home ↑ end pgup || ↑ F7 F8 F9 F10 del ← ↓ → pgdn || ↓ F4 F5 F6 F11 || F1 F2 F3 F12 super shift bksp ctrl || alt space L0 reset
The firmware project includes a number of other options, including colemak, dvorak, and “software dvorak” which sends keycodes assuming the OS will perform the translation into dvorak. Adding new layouts or changing existing ones is easy.
This layout has five modifiers and 37 non-modifiers.
I strongly prefer the feel and sound of tactile Cherry MX blue switches for typing. However, I like having linear Cherry MX black switches switches on the modifier keys (ctrl, alt, super, shift, and fn) because the tactile effect has no benefit for keys that are held down, and giving a different response helps you learn the layout more quickly.
For users that need to operate in sound-sensitive environments like open offices or libraries, Cherry MX Clear switches are a popular choice since they still offer tactility without the noise.
In order to avoid ghosting, each switch needs a diode. The 1N4148 is a readily-available choice, but nearly any signal diode would work.
The circuit board design uses a Pololu A-star micro. Hand-wired boards can also use a Teensy 2 or Arduino Pro Micro.
Be sure to get a microcontroller without headers so it will fit in between the bottom layer and the plate. USB micro is preferred over USB mini for this reason as well.
This DSA-shaped base set (spherical indentations on the key, same profile for each row) from Signature Plastics has 52 1x keys plus a few extras we won’t use. There are two “deep dish” keys in that set which you can place under your index fingers on the home row to help guide your hands to the right spot without looking. However, you only get a single 1.5x keycap, and the middle two thumb keys both use them, so you might want to pick up an extra.
Many keycap sets (not the one linked above) are “sculpted”, meaning that keys that go in different rows have a different shape. While you can use these for an Atreus, it’s unlikely you’ll find a set with the correct number for each row, so it’s more wasteful.
The atreus.rkt
program calculates switch and diode positions based
on row/column counts, spacing, and rotation factors, and emits a
atreus.kicad_pcb
file. The board outline and traces are done by hand
and are stored in the header.rktd
and traces.rktd
files
respectively. The atreus.kicad_pcb
file can be imported into Kicad
which can export Gerber files suitable for fabrication. A copy of the
Kicad PCB file is included in the repository if you don’t want to
recompile it using Racket. Recompiling is only required if you want to
make changes to the procedurally-generated portions of the board.
Unfortunately most PCB fabricators require a minimum order of 10 or so, making this impractical for one-offs. The PCB is not required, so for one-off boards it’s usually more sensible to stick with a hand-wired build instead.
Layered laser-cut wood or acrylic. The mark II case (EPS files in the
case/
directory) features 8 screw holes and a kind of “stair step”
design around the top and bottom of the key clusters; mark I is
pictured below.
The 3mm.eps
file contains the top plate, bottom plate, and switch
plate. These can all be cut on 3mm acrylic or wood. The spacer.eps
file should be cut on something thicker; between 4.5mm and 6mm is
recommended. The spacer needs to be at least as thick as the connector
of the USB cable you’re using.
There is also a programmatically-implemented version of the case written in OpenSCAD; it is more flexible (you can tweak the number of rows/cols, etc and recompile) but it doesn’t match the canonical case exactly; in particular the screw holes are placed differently.
The original case (case-mk-i.svg
) design is also included; it is
slightly less wide and has a minor asymmetry with the screws on the
bottom side.
On a 100W Epilog laser, the 3mm layers cut in about a minute and a half. I did a run with 6mm acrylic of the other layers which took nearly 6 minutes.
Wood cases should be finished with sandpaper and finishing oil/wax.
The custom Atreus firmware is a small C project which
implements matrix scanning and debouncing with user-customizeable
layers and macro functions. Another option is the much more complex
TMK firmware. My fork of the tmk firmware has support for the Atreus
layout. You should be able to change into the keyboard/atreus
directory and run make KEYMAP=atreus
(or whichever variant you want)
to produce a qwerty atreus.hex
file. You will probably want to
create your own layout once you’ve gotten a chance to try it and see
what works for you.
In either case you would use the .hex
file you just produced with
avrdude
or the teensy loader to upload to the microcontroller. make
upload
should do what you need.
Once the firmware is loaded and the keyboard is assembled, activating the hardware reset to upload new versions of the firmware is pretty cumbersome; instead use the “reset” button on the layout, which has the same effect.
- 50 MX Blue switches: $29.00 (mechanicalkeyboards.com)
- 50 diodes: $3.45 (radio shack, should be able to buy in-person)
- Base blank DSA keycap set: $23.00 (signatureplastics.com)
- Teensy 2: $16, $3 shipping (pjrc.com)
- Case materials: ~$16, varies by source
- Case laser cutting: 7.5 minutes on a 100W Epilog laser; varies by source
- USB micro cable: $5, various sources
Recommended but optional:
- 5 MX Red or MX Black switches: $8.50 - $10.00
- additional 1.5x DSA keycap: $1 plus $8 shipping
The base keycap set only has one 1.5x key, which is used for the inner thumb keys. You can use a 1x key for one of them, but it looks kind of tacky, so I recommend getting a second 1.5x keycap separately.
You’ll need a soldering iron, solder, and a wire cutter. A multimeter can come in handy for testing the connections but is optional. You’ll also need eight M3 machine screws with nuts; the length of the screws depends on the thickness of the acrylic you use. You can add rubber feet to the bottom to prevent the board from sliding around when placed on a desk. You’ll also need sandpaper and finishing oil for the wooden cases unless you have bought a kit.
If you are building a hand-wired board you will also need a glue gun, hookup wire, and wire strippers.
See the assembly instructions PDF.
Hand-wired boards will want the previous edition of the assembly instructions.
The LaTeX source to the assembly instructions is in the assembly
directory.
These fine projects all provided inspiration for various aspects of
the Atreus, as well as the folks on the #geekhack
freenode channel.
If you’ve built an Atreus, please add your name to the build logs wiki.
There’s also a mailing list for people who have built or ordered an
Atreus or are interested in doing so. To join, simply email
atreus@librelist.com
with a subject of “join” and reply to the
confirmation.
A new experimental build uses the Teensy 3 microcontroller and ARM Forth-based firmware, but this is not yet suitable for general-purpose use.
Copyright © 2014-2015 Phil Hagelberg and contributors
Released under the GNU GPL version 3