]> git.armaanb.net Git - atreides.git/blob - README.org
Typo fix.
[atreides.git] / README.org
1 * Atreus Keyboard
2
3 The [[http://ergodox.org][Ergodox]] keyboard is an absolutely fantastic design; I use it every
4 day at my office. However, I like to work away from the office
5 frequently, and I thought I might try my hand at designing something a
6 little more portable. The great thing about assembling my Ergodox is
7 that it taught me there's really nothing magical about it; it's just a
8 piece of circuitry with a bunch of switches read by a microcontroller
9 that speaks the USB HID interface.
10
11 The Atreus is meant to be complementary to the Ergodox as something
12 smaller, cheaper, and more travel-friendly. The case measures 25x11cm
13 and lacks even a number row, relying heavily upon the fn key. There is
14 no PCB in this design, requiring [[http://wiki.geekhack.org/index.php?title=Hard-Wiring_How-To.html][a manual matrix wiring approach]].
15 However, given that there are only 4 rows and 11 columns, this isn't
16 as daunting as it could be.
17
18 I've seen a number of existing DIY 40% keyboard designs, but most of
19 them stagger the rows, which I find very annoying now that I've gotten
20 used to the columnar layout of the Ergodox. In addition, many of the
21 designs I've seen waste a lot of room on the space bar, failing to
22 take into account the fact that the thumb is the strongest and most
23 versatile of the fingers. This design avoids both these problems while
24 taking a more couch-friendly single-piece approach.
25
26 [[atreus.jpg]]
27
28 ** Layout
29
30 Only a handful of punctuation marks (and no digits) are available
31 unshifted, and all the modifiers are on the bottom row.
32
33  :    q     w     e     r     t       ||       y     u     i     o    p
34  :    a     s     d     f     g       ||       h     j     k     l    ;
35  :    z     x     c     v     b       ||       n     m     ,     .    /
36  :   esc   tab  super shift bksp ctrl || alt space  fn   enter pgup  pgdn
37
38 The numbers and most punctuation are on the fn layer:
39
40  :    1     2     3     4    5        ||       6     7     8     9    0
41  :    -     +     (     )    =        ||       /     [     ]     {    }
42  :    !     @     #     $    %        ||       ^     &     *     ~    ?
43  :  reset                    `        ||                   _     |    \
44
45 I type in Dvorak but prefer to do the remapping in software rather than
46 hardware so I don't have to change layouts when I switch to my
47 laptop's internal keyboard.
48
49 ** Parts
50
51 *** Switches
52
53 This layout has five modifiers and 37 non-modifiers.
54
55 I strongly prefer the feel and sound of tactile [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=651][Cherry MX blue]]
56 switches for typing. However, I like having linear switches on the
57 modifier keys (ctrl, alt, super, shift, and fn). [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=102][Cherry MX red
58 switches]] are nice and light but are expensive and difficult to
59 find. [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=103][Cherry MX black switches]] are cheaper and easier to source, but
60 may be too heavy, especially for keys under pinky fingers.
61
62 One trick is take the springs from some of your blue switches and
63 trade them with the springs from your black switches. The blacks then
64 become the equivalent of reds, and the blues become MX green switches,
65 which are a heavier variant of blues. These are typically used for
66 space bars on boards that otherwise use blues. They could be suitable
67 for non-modifier thumb keys like backspace, space, and enter.
68
69 *** Diodes
70
71 In order to avoid ghosting, each switch needs a [[https://www.radioshack.com/product/index.jsp?productId=2062587][1N4148 diode]].
72
73 *** Microcontroller
74
75 An [[http://www.digikey.com/product-search/en/programmers-development-systems/evaluation-boards-embedded-mcu-dsp/2621773?k=arduino%20micro][Arduino Micro]] or [[http://www.pjrc.com/teensy/index.html][Teensy 2]] is recommended. Be sure to get one
76 without headers so it will fit in between the bottom layer and the plate.
77
78 *** Keycaps
79
80 This [[http://keyshop.pimpmykeyboard.com/product/dsa-pbt-blank-sets][DSA-shaped base set]] from Signature Plastics has 52 1x keys plus a
81 few extras we won't use. It claims on that page to contain only one
82 deep key, but my shipment contained two, which I put under the index
83 finger keys to help guide your hands without looking. However, it only
84 contained a single 1.5x keycap, and the middle two thumb keys both use
85 them, so you might want to pick up an extra.
86
87 ** Case
88
89 Layered laser-cut acrylic; see [[file:case.svg][case.svg]].
90
91 [[layers.jpg][layers.jpg]]
92
93 The first two shapes in the case file are the top and bottom covers;
94 these should be cut on 3mm acrylic (black in the photo). The third is
95 the spacer that goes under the fourth, which is the plate on which the
96 switches are mounted. These should be cut in 6mm, especially the
97 spacer, which needs to be at least as thick as the micro USB cable you
98 connect to the microcontroller. The switch plate could be thinner.
99
100 On a 100W Epilog laser, the 3mm layers cut in about a minute and a
101 half. I did a run with 6mm acrylic of the other layers which took
102 nearly 6 minutes.
103
104 One thing to watch for is that the screw holes unfortunately are not
105 symmetrical. So before the switches get mounted, it's important to
106 ensure that the switch plate is right-side-up.
107
108 ** Firmware
109
110 My [[https://github.com/technomancy/tmk_keyboard/tree/atreus][fork of the tmk firmware]] has support for the Atreus
111 layout. Currently only supports software-dvorak--the default layer is
112 all qwerty, but the punctuation keys send keycodes assuming that the
113 qwerty->dvorak transformation will be applied to them, so they don't
114 make sense otherwise.
115
116 You should be able to cd into the `keyboard/atreus` directory and run
117 `make KEYMAP=atreus` (or whichever variant you want) to produce a
118 `atreus.hex` file. Use this with the `teensy` or Arduino tools to
119 upload to the microcontroller. The "reset" button on the lower left
120 will ready the Teensy for an upload so you don't have to open the case
121 to hit the onboard reset button.
122
123 ** Recommended Bill of Materials
124
125 - 50 MX Blue switches: $29.00 (mechanicalkeyboards.com)
126 - 50 diodes: $3.45 (radio shack, should be able to buy in-person)
127 - Base keycap set: $18.00 (signatureplastics.com)
128 - Teensy 2: $16 (pjrc.com or mechanicalkeyboards.com)
129 - Acrylic materials: $11
130 - Acrylic laser cutting: 7.5 at $3/min (varies by thickness of acrylic)
131
132 - 5 MX Black switches: $8.50 (optional)
133 - 5 MX Red switches: $10.00 (optional)
134
135 =(+ 29 3.45 18 16 11 (* 3 7.5))= $99.95 plus tax/shipping
136
137 - mechanicalkeyboards.com: free shipping in the US
138 - Signature Plastics (keycaps) shipping: $8.00
139 - PJRC (teensy) shipping: $3.03
140
141 ** Other Tools:
142
143 You'll need a soldering iron, solder, a multimeter, wire, wire
144 strippers, and a USB micro cable. You'll also need seven M3 machine
145 screws with nuts; the length of the screws depends on the thickness of
146 the acrylic you use.
147
148 ** Cost-saving Options
149
150 There are a few ways to lower the cost further.  Using [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=482][Matias]] key
151 switches could save you a fair bit if you go in on a 90-pack with
152 someone else, but they're a little harder to find keycaps for; the MX
153 caps won't work on them. Using wood for the case will reduce both the
154 materials cost as well as the amount of time needed to cut the case.
155
156 Replacing the colored acrylic with transparent might also save a few
157 dollars. You could also use thinner acrylic for the switch plate too;
158 I cut mine in 4.5mm. A thinner spacer is inadvisable; even with 6mm
159 it's pretty tight.
160
161 Another common trick is scavenging keycaps and switches from used
162 keyboards; something with Cherry or Alps switches should work. This
163 can be time-consuming though.
164
165 ** License
166
167 Copyright © 2014 Phil Hagelberg
168
169 Released under the [[https://www.gnu.org/licenses/gpl.html][GNU GPL version 3]]