]> git.armaanb.net Git - atreides.git/blobdiff - README.org
Link to Atreus kit selling site in readme.
[atreides.git] / README.org
index d54cc1672ac014d47adb401ea3508fd7e3b144f8..182527b40403fe1b5cb83db91fea65f8ad45a79d 100644 (file)
@@ -11,7 +11,7 @@ that speaks the USB HID interface.
 The Atreus is meant to be complementary to the Ergodox as something
 smaller, cheaper, and more travel-friendly. The case measures 25x11cm
 and lacks even a number row, relying heavily upon the fn key. There is
-no PCB in this design, requiring [[http://wiki.geekhack.org/index.php?title=Hard-Wiring_How-To.html][a manual matrix wiring approach]].
+no PCB in this design, requiring [[http://wiki.geekhack.org/index.php?title=Hard-Wiring_How-To][a manual matrix wiring approach]].
 However, given that there are only 4 rows and 11 columns, this isn't
 as daunting as it could be.
 
@@ -23,28 +23,59 @@ 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.
 
-[[atreus.jpg]]
+[[./atreus.jpg]]
+
+Having so few keys, this board is pretty idiosyncratic. It works very
+well for the kind of work that I do, but it probably wouldn't be a
+good fit for you if you do a lot of numerical data entry or make heavy
+use of function keys, arrows, or home/end. If you primarily use
+[[https://github.com/technomancy/dotfiles/commit/856a638350a26b0cdb0bcc82042ed77a3fa4bdea][programs with good key rebinding functionality]], you're probably in
+good shape. For instance, =enter= and =tab= are in a bit of an awkward
+position, but many programs treat =control-m= and =control-i= as
+=enter= and =tab= respectively.
+
+** Kits
+
+You can buy [[http://atreus.technomancy.us][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; see
+the bill of materials below.
 
 ** Layout
 
 Only a handful of punctuation marks (and no digits) are available
-unshifted, and all the modifiers are on the bottom row.
+unshifted, and all the modifiers are on the bottom row:
+
+ :    '     ,     .     p     y       ||       f     g     c     r    l
+ :    a     o     e     u     i       ||       d     h     t     n    s
+ :    ;     q     j     k     x       ||       b     m     w     v    z
+ :   esc   tab  super shift bksp ctrl || alt space  fn     -     /  enter
 
- :    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 pgup  pgdn
+The numbers and most of the punctuation are on the fn layer with a
+numpad-style arrangement under the right hand:
 
-The numbers and most punctuation are on the fn layer:
+ :    !     @     {     }     |       ||     pgup    7     8     9    *
+ :    #     $     (     )     `       ||     pgdn    4     5     6    +
+ :    %     ^     [     ]     ~       ||       \     1     2     3    ?
+ :  reset paste                       ||     hwdv          .     0    =
+
+An alternate layout has the numbers in a more traditional row across the top:
 
  :    1     2     3     4    5        ||       6     7     8     9    0
- :    -     +     (     )    =        ||       /     [     ]     {    }
+ :    -     +     (     )    =        ||       .     [     ]     {    }
  :    !     @     #     $    %        ||       ^     &     *     ~    ?
- :  reset                    `        ||                   _     |    \
+ :  reset paste              `        ||     hwdv        pgup  pgdn   \
+
+I type in Dvorak but prefer to do the remapping in software rather
+than hardware so I don't have to change layouts when I switch to my
+laptop's internal keyboard. However, the =hwdv= key switches it to
+hardware Dvorak mode, which is useful for attaching to computers that
+may not have software Dvorak set up. The =paste= key sends
+shift+insert, while the =reset= button activates the bootloader,
+allowing easy reprogramming without opening the case.
 
-I type in Dvorak but prefer to do the remapping in software rather than
-hardware so I don't have to change layouts when I switch to my
-laptop's internal keyboard.
+This is all a matter of firmware though; the layout is easy to change
+after the fact.
 
 ** Parts
 
@@ -53,18 +84,11 @@ laptop's internal keyboard.
 This layout has five modifiers and 37 non-modifiers.
 
 I strongly prefer the feel and sound of tactile [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=651][Cherry MX blue]]
-switches for typing. However, I like having linear switches on the
-modifier keys (ctrl, alt, super, shift, and fn). [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=102][Cherry MX red
-switches]] are nice and light but are expensive and difficult to
-find. [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=103][Cherry MX black switches]] are cheaper and easier to source, but
-may be too heavy, especially for keys under pinky fingers.
-
-One trick is take the springs from some of your blue switches and
-trade them with the springs from your black switches. The blacks then
-become the equivalent of reds, and the blues become MX green switches,
-which are a heavier variant of blues. These are typically used for
-space bars on boards that otherwise use blues. They could be suitable
-for non-modifier thumb keys like backspace, space, and enter.
+switches for typing. However, I like having linear [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=103][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.
 
 *** Diodes
 
@@ -72,159 +96,119 @@ In order to avoid ghosting, each switch needs a [[https://www.radioshack.com/pro
 
 *** Microcontroller
 
-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
-without headers so it will fit in between the bottom layer and the plate.
+A [[http://www.pjrc.com/teensy/index.html][Teensy 2]] is recommended. Be sure to get one without headers so it
+will fit in between the bottom layer and the plate.
 
 *** Keycaps
 
 This [[http://keyshop.pimpmykeyboard.com/product/dsa-pbt-blank-sets][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. It claims on that page to contain only one
-deep key, but my shipment contained two, which I put under the index
-finger keys to help guide your hands without looking. However, it only
-contained a single 1.5x keycap, and the middle two thumb keys both use
-them, so you might want to pick up an extra.
+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. (You can buy a single DSA 1.5x
+keycap from [[http://www.keycapsdirect.com/key-capsinventory.php][Signature Plastics]].)
 
 ** Case
 
-Layered laser-cut acrylic; see [[file:case.svg][case.svg]].
+Layered laser-cut wood or acrylic. The original case (=case-mk-i.svg=)
+is slightly less wide and has a minor asymmetry with the screws on the
+bottom side. The [[http://geekhack.org/index.php?topic%3D54759.msg1304117#msg1304117][mark II case]] (in the `case` directory) is implemented
+programmatically in openscad, though dxf files are available as a
+convenience, which can be converted to SVG or EPS for laser cutting
+with Inkscape. Mark II 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.
 
-[[layers.jpg][layers.jpg]]
+[[./layers.jpg]]
 
-The first two shapes in the case file are the top and bottom covers;
-these should be cut on 3mm acrylic (black in the photo). The third is
-the spacer that goes under the fourth, which is the plate on which the
-switches are mounted. These should be cut in 6mm, especially the
-spacer, which needs to be at least as thick as the micro USB cable you
-connect to the microcontroller. The switch plate could be thinner,
-but not under 3mm.
+The bottom and top covers (black in the photo) should be cut in 3mm.
+The switch plate (frosted in the photo) can be cut in 4.5mm or
+3mm. The spacer should be cut in 6mm; it needs to be at least as
+thick as the mini USB cable you connect to the microcontroller. I
+recommend using a mini USB cable with as thin a connector as you can
+find or sanding the connector down to the required thickness.
 
-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.
+TODO: describe finishing process for wood.
 
 ** Firmware
 
-My [[https://github.com/technomancy/tmk_keyboard/tree/atreus][fork of the tmk firmware]] has support for the Atreus
-layout. Currently only supports software-dvorak--the default layer is
-all qwerty, but the punctuation keys send keycodes assuming that the
-qwerty->dvorak transformation will be applied to them, so they don't
-make sense otherwise.
+The [[https://gitlab.com/technomancy/atreus-firmware/blob/master/readme.md][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 [[https://github.com/technomancy/tmk_keyboard/tree/atreus][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.
 
-You should be able to cd into the =keyboard/atreus= directory and run
-=make KEYMAP\=atreus= (or whichever variant you want) to produce a
-=atreus.hex= file. Use this with the [[http://www.pjrc.com/teensy/loader.html][teensy loader]] or Arduino tools to
-upload to the microcontroller.
+In either case you would use the =.hex= file produced with the [[http://www.pjrc.com/teensy/loader.html][teensy loader]] to upload to the microcontroller.
 
 Once the firmware is loaded and the keyboard is assembled, pressing
 the onboard reset button to update new versions of the firmware is
-pretty cumbersome; instead use the "reset" button on the lower left
-of the layout which has the same effect.
+pretty cumbersome; instead use the "reset" button on the layout, which
+has the same effect.
 
-** Recommended Bill of Materials
+** Bill of Materials
 
 - 50 MX Blue switches: $29.00 (mechanicalkeyboards.com)
 - 50 diodes: $3.45 (radio shack, should be able to buy in-person)
-- Base DSA keycap set: $18.00 (signatureplastics.com)
-- Teensy 2: $16 (pjrc.com or mechanicalkeyboards.com)
-- Acrylic materials: $11
-- Acrylic laser cutting: 7.5 at $3/min (varies by thickness of acrylic)
+- Base blank DSA keycap set: $23.00 (signatureplastics.com)
+- Teensy 2: $16, $3 shipping (pjrc.com)
+- Acrylic materials: ~$16, varies by source
+- Acrylic laser cutting: 7.5 minutes on a 100W Epilog laser; varies by source
+- USB Mini-B cable: $5, various sources
 
-- 5 MX Black switches: $8.50 (optional)
-- 5 MX Red switches: $10.00 (optional)
-- additional 1.5x DSA keycap: $1 (optional)
+Recommended but optional:
 
-=(+ 29 3.45 18 16 11 (* 3 7.5))= $99.95 plus tax/shipping
+- 5 MX Black switches: $8.50 OR 5 MX Red switches: $10.00
+- additional 1.5x DSA keycap: $1 plus $8 shipping
 
-- mechanicalkeyboards.com: free shipping in the US
-- Signature Plastics (keycaps) US shipping: $8.00
-- PJRC (teensy) shipping: $3.03
+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.
 
-** Other Tools
+*** Other Tools
 
-You'll need a soldering iron, solder, a glue gun, a multimeter, wire,
-wire strippers, and a USB micro cable. You'll also need seven M3
-machine screws with nuts; the length of the screws depends on the
-thickness of the acrylic you use.
+You'll need a soldering iron, solder, a glue gun, a multimeter, hookup
+wire, and wire strippers. 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.
 
 ** Assembly
 
-Once you have all the parts, the first thing to do is glue the
-switches to the switch plate since there's no PCB to hold them in
-place. Be aware that the screw holes unfortunately are not
-symmetrical, so before inserting the switches it's important to ensure
-that the plate is right-side-up. Use a drop of hot glue on the top and
-bottom of each switch to affix it in place.
-
-[[wires.jpg]]
-
-Once the switches are in place, the matrix must be created. I
-recommend getting red wire for the rows and black for the columns. The
-rows need eight strands of wire with the insulation exposed at
-intervals matching the spacing of the switches; see the above photo for
-details. You could also just use many short stripped segments of wire
-instead of a contiguous piece. Most of the row wires will need four
-segments of insulation, but you'll need two with five for the rows
-with the inner thumb keys. Physically the inner thumb keys look like
-two additional columns, but logically they are treated as if they're
-in the same column with the left one in row 3 and the right one in
-row 4.
-
-[[matrix.jpg]]
-
-The exposed sections of row wire should be connected to the higher of
-the pins on the switch using a diode. Be aware that diodes are
-directional! The band around the diode should point to the top of the
-board. Take care with the upper row that you don't let the wire go too
-high; avoid getting in the way of the spacer layer. Once the
-rows are wired, the remaining (negative) pin of each switch should be
-wired into the negative pin of the switch above and below it. Use
-black wire. This should be slightly easier since no diode is
-necessary. The photo above shows the completed matrix for one side. Test
-each row and column as you go with a multimeter. You should be able to
-get continuity from row to column when the corresponding switch is
-activated.
-
-After the matrix has been wired on both sides, the next step is to
-connect the microcontroller. The TMK firmware has the rows in pins D0,
-D1, D2, and D3 of the microcontroller. You'll need to connect the rows
-from both the left and right sides into the proper pin. There are more
-columns than rows, so I used ribbon cable to bring the column
-connections back to the microcontroller from the outside in. The
-columns go to pins F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, and
-B4. It's important to realize that when you flip over the board
-in order to solder it, you have to flip over the schematic in your
-mind too. If you count your columns from the left, you'll get them
-backwards. (Which I actually did for the first half.)
-
-[[controller.jpg]]
-
-Once you've wired one side of the microcontroller in, it would be a
-good time to test it. You'll need to compile and upload as per the
-"Firmware" section above. At this point you should be reading real
-keycodes from the half of the keyboard that you've wired. Once you've
-confirmed that's working, continue with the other half. Then screw the
-other layers in place and you're all set!
-
-** Cost-saving Options
-
-There are a few ways to lower the cost further.  Using [[http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=482][Matias]] key
-switches could save you a fair bit if you go in on a 90-pack with
-someone else, but they're a little harder to find keycaps for; the MX
-caps won't work on them. Using wood for the case will reduce both the
-materials cost as well as the amount of time needed to cut the case.
-
-Replacing the colored acrylic with transparent might also save a few
-dollars. You could also use thinner acrylic for the switch plate too;
-I cut mine in 4.5mm. A thinner spacer is inadvisable; even with 6mm
-it's pretty tight.
-
-Another common trick is scavenging keycaps and switches from used
-keyboards; something with Cherry or Alps switches should work. This
-can be time-consuming though.
+See the [[http://atreus.technomancy.us/assembly.pdf][assembly instructions]] PDF
+
+** Inspiration
+
+These fine projects all provided inspiration for various aspects of
+the Atreus, as well as the folks on the =#geekhack= freenode channel.
+
+- [[http://ergodox.org][Ergodox]]
+- [[http://deskthority.net/workshop-f7/onehand-20-keyboard-t6617.html][OneHand]]
+- [[http://blog.fsck.com/2013/12/better-and-better-keyboards.html][keyboard.io]]
+- [[http://geekhack.org/index.php?topic=48718][ErgoT]]
+
+** Builds
+
+If you've built an Atreus, please let us know (pull request or
+otherwise) and get your name and link added here:
+
+- [[http://technomancy.us/173][Phil Hagelberg]]
+- [[http://blog.tarn-vedra.de/2014/04/reproducing-keyboard-science_1707.html][Moritz Ulrich]]
+- [[http://geekhack.org/index.php?topic=57007.0][Constantine]]
+- [[http://blog.mattgauger.com/blog/2014/08/19/atreus-my-custom-keyboard/][Matt Gauger]]
+
+** Orestes
+
+A new [[https://www.flickr.com/photos/technomancy/14654421878][experimental build]] uses the [[http://pjrc.com/store/teensy31.html][Teensy 3]] microcontroller and
+[[https://github.com/technomancy/orestes/tree/teensy3][Forth-based]] firmware, but this is not yet suitable for general-purpose use.
 
 ** License
 
-Copyright © 2014 Phil Hagelberg
+Copyright © 2014 Phil Hagelberg and contributors
 
 Released under the [[https://www.gnu.org/licenses/gpl.html][GNU GPL version 3]]