It's not perfect, mind you: the thumb islands are three buttons wide, and my thumb rests on the innermost button. And I have hands larger than average; I don't know how someone with smaller hands would find the board. Also, because of the layout changes, some keys (the square braces, enter, - and =) have to be moved somewhere else; the buttons you're used to pressing just aren't there.
There are some tiny parts; if you buy it, get a head-mounted magnifier with a light, like this one: http://www.amazon.com/SE-MH1047L-Illuminated-Multipower-Magn... . I don't know how I would've been able to surface-mount the tiny diodes without it.
Obviously, the downside to having a keyboard with radically different placements of buttons is that going to other keyboards becomes difficult again. I haven't solved this problem, but might end up buying a second one for work.
I just started using one recently, but never used ErgoDox before, and wanted to see if anyone has any experience with using both of them.
1. It has Cherry MX Browns. I like more clickiness.
2. I found the curved alignment of the keys annoying. The thumb keys also felt off, but I don't recall how.
3. The remapping support for Kinesis is far inferior to Ergodox's. When I talked to tech support, they recommended using macros rather than remapping keys. This is because switching from Qwerty to Dvorak wipes any key remappings. Certainly I don't want to risk losing my keyboard layout, so macros are the way to go. But there's a maximum of 48 macros that can be stored, so you could only remap 48 keys. That's probably an acceptable limit if you don't need a bunch of extra macros. However, having a lot of macros means you might lose keystrokes^1. Compare this to the Ergodox, which lets you place any key anywhere with no downside other than your memory and ergonomics. You can also have multiple key layouts, and switch between them easily.
4. I was trying to switch to the Kinesis while at work, making it more frustrating when I was slow. I switched to the Ergodox at home, so I had more time. I also got the Ergodox after I tried the Kinesis, so some of the muscle memory was already entrenched when I got the Ergodox.
5. I borrowed the Kinesis, but bought and assembled the Ergodox. This means I was more invested in liking the Ergodox, whether or not it was actually better.
[1] http://www.kinesis-ergo.com/support/technical-support/faqs-a... , the section "How do I switch between the macro memory configurations of 24, 36, or 48 macros?" states "Fast typists will often lose keystrokes from certain common words with the 48 macro setting, and very fast typists may even lose keystrokes using the 36 macro setting."
It’s the middle version here (background outlines show comparison with the standard Ergodox): http://i.imgur.com/l0REgJh.png
In practice, the increased stagger on the finger columns means that the most comfortable hand orientation is slightly straighter compared to the ergodox, so this is probably a better comparison drawing: http://i.imgur.com/OqSwVJo.png
I would recommend extra care with the diodes as I lost a few opening the packaging and had to get extras to finish the build.
First of all, staggered keys make absolutely no sense(unles it's actually a typewriter). It takes a week to get used to a straight layout, and it feels more natural. It's not a problem to switch between staggered and matrix layouts either.
Second thing I would copy is having enter and backspace between the two halves of the keyboard. If you touch type this area is unused, and it's less strain on your pinky finger.
But anyway, this was really a great project, and a nice writeup :)
[1]: "the keys come with a slightly textured finish. This in itself isn’t particularly noteworthy, but after just one month of typing I’ve found that many of the keys are starting to get a glossy sheen" (http://www.anandtech.com/show/6819/truly-ergonomic-computer-...)
A guy at my work has the typematrix keyboard - I like the idea but wasn't daring enough to go balls-to-the-wall and actually take that layout. He seems to like it, though!
One thing I really don't like about it is the lack of utilisation of the thumbs. I've been getting pain in (especially) my left thumb joint. I believe it's due to having to curl my thumb in to get to the meta / alt / windows keys.
This was really bad on my work Microsoft keyboard, but isn't great on my typematrix either.
I just got a second hand Kinesis Advantage keyboard for work, and really really like the thumb sections, and also the remapping support. In less than a week my thumb pain has cleared up quite a lot.
I also really wish that the two sections on the typematrix were angled a bit outwards. It seems to work OK, since it's in rows it's a lot better than normal keyboards, but I feel that being able to spread my hands apart would be a good thing.
I really really like the remapping support on the Kinesis advantage.
I'm using the workman keyboard layout ( http://workmanlayout.com/ ) which seems to work very well for me. The biggest downside is the lack of native support for it. On the Advantage, I remapped it in about 45 seconds total, and now that keyboard works anywhere I plug it in, without needing any setup.
Otherwise, though, I'm pretty happy with my typematrix. My wrist angles are waaay better than they ever were on a normal staggered qwerty keyboard. And it's so quiet I can type while my wife and baby are asleep on the couch right next to me without disturbing them. That certainly wasn't the case with my MS keyboards.
I also really like how little desktop space it takes up - the mouse is now a lot closer and doesn't need a huge reach over to the side to pick up.
I've always wondered about this - I don't disbelieve that some people feel this way, but is it really a general consensus? And is there a reason we should expect it, I don't see why staggered keys make fundamentally less sense.
I would say it is a consensus among people who have used non-staggered layouts for a sustained period - the benefits are definitely noticeable to someone with RSI too.
People are satisfied with their keyboard layout because it's good enough for them, and they've not experienced using other layouts enough to compare the benefits. It's very much like PGs "blub paradox", in which the a typist becomes familiar enough with his keyboard that other, allegedly better keyboards seem like only minor improvements - not worth the effort to switch. For most people, this is probably the case - it's only if you're typing for several hours a day that there will be tangible benefits to hand-optimized layouts.
A good way to see if a keyboard actually tries to be ergonomic is to see if the left and right hand layouts are relatively symmetrical.
Put a mux on each group of switches, have the microcontroller rapidly scan the muxes to determine which switches are down.
And now all of a sudden you have a keyboard that you can actually press down as many keys as you need and it still works. Except it won't. Because USB keyboards don't support arbitrary numbers of keys being pressed at once.
There is actually nothing in the USB or HID specifications preventing USB keyboards from supporting n-key rollover (when using the report protocol -- keyboards using the boot protocol are limited to a 6-key rollover). The reason most don't is simply to reduce cost and complexity. A sufficiently motivated person could build a USB-compliant keyboard that supported an arbitrary number of simultaneoue keypresses, and some do (e.g. http://www.maxkeyboard.com/max-keyboard-nighthawk-x9-red-bac...).
In particular, if you try to go over 6-key rollover, good luck. You end up having to, and I'm not making this up, emulate a USB hub connected to multiple keyboards. It's absurd. And all because of the following:
"However, the compatibility version of HID that all present systems implement limits USB keyboards to reporting a mere six regular keys together with four modifiers. Additional keys pressed beyond the limit will generally cause some of the other keys to be dropped." [http://deskthority.net/wiki/Rollover,_blocking_and_ghosting#...]
"non-working n-key rollover with a USB connection is a side effect of the data packet." [http://geekhack.org/index.php?topic=5572.msg85020#msg85020]
(Effectively, instead of doing make:key / break:key packets, the compatibility version of HID does current_keys_pressed:[array of 6 keys]. Why they didn't stick with the make/break of the PS/2 protocol is beyond me.)
Say you have N free pins on your controller, and you want to read K keys. Find the smallest integer number of columns such that log2(k/c) + k/c <= n - so, for example, with 108 keys and 20 pins, you can have 7 columns, with 16 rows (keys/column). This means a 3-bit mux, which is relatively easy to find.
Tie each row via diodes to 1 key in each column. Then tie each row to a pin on the controller.
Tie each column to an output of the mux, and tie the input of the mux to Vcc. You'll also probably want to tie each column to a grounding resister as well. Maybe a small cap. (Or just use the chip that does this directly, I can never remember the name. Output selector? Something along that line. "An IC that outputs Vcc on the selected pin and ground on all others".).
Then connect the selector of the mux to the remaining pins on the controller.
To operate, just loop through all valid outputs on the mux repeatedly - probably with gray code, as that way you don't need to make as many pin transitions. Each time you change the output of the mux, read the values of those keys. You'll probably need a mapping of row/column -> key, as well as the previous values of keys. Any time the value of a key changes, output the appropriate packet. (Note: most of the time most keys don't change. As such it may be faster to do a quick check that "old column values == new column values" before checking bits one by one.)
As long as your scan rate is sufficiently high, you shouldn't miss keypresses. (And if you want to get fancy, you can actually borrow a technique from dRAM. Have each key connected from ground to a cap (per-key) to a diode to Vcc. Potentially with a resistor, although the diode might be enough. Then do the above row/column, but tied to the caps / diodes as opposed to the keys themselves. This way you'll be able to read that there is voltage on the cap even if your scan missed when it was down. It also provides a certain amount of debouncing. The disadvantage is that there's a whole lot more per-key.)
A decent soldering iron. You will thank yourself later. Also note: you will burn yourself many times throughout the build. Might as well do it with a fancy iron!
LEADED SOLDER – I started the build without leaded solder and oh dear…
If you have a "decent soldering iron", then lead-free solder shouldn't be a problem. Also, if you live in the EU, leaded solder will be extremely difficult to come by.Well, even with a really crappy iron, as long as the tip is fresh, you shouldn't have a problem. Most people's problems with soldering come from not having the tip wet enough and not using enough solder, thereby not making enough contact with the wire and not putting heat into it fast enough to get that specific location hot before the heat conducts away into the rest of the wire.
Remember, the entire reason we're using the wire is because it's an excellent conductor. For that reason, thicker gauge wire is also going to be more difficult to work. And the only reason to use larger gauges of wire is to support more current. Keyboards run on extremely little current already. You probably could have done this with magnet wire and been fine (though I wouldn't recommend it, magnet wire is difficult to work for different reasons).
So crank up the heat. Get it into the wire as fast as possible. Lead-free solder generally needs higher heat than leaded solder anyway. Apply the solder, apply the wire, then wait a second before removing the iron, because you also have to heat the wire you're pushing in. Soldering is a chemical bond, the metals physically mix, and you need to get them up to the right heat to do that.
And keep it steady, any movement while it is cooling will create microfractures in the solder joint.
Source.
I live in the EU and 60/40 is still the most common solder for hobbyists, and is sold everywhere.
When soldering in the air, it is harder for the flux to go where it needs to go. When soldering wires/leads to each other, it helps to apply flux beforehand, say with a flux pen.
I found it very difficult to do the soldering due to an extremely unsteady hand and not a whole lot of experience. I 100% agree with everything you're saying though - I just ran with what I thought worked.
The trick to soldering when you have unsteady hands is to set things up so if you press harder the two things being soldered make better contact, instead of being pushed apart. That way you can rest the tip of the iron on the workpiece.
Soldering leads together in the air can be a right pain, because you can't press on hard without them moving apart. You can usually find tricks to avoid it though - like putting an old PCB and some packing material below the joint, so you have something to push against, and twisting the leads together so they can't move apart as easily.
Use self-fluxing enameled wire. It's insulated with an enamel that melts/converts into flux at soldering temperatures, so all you need to do is wrap a turn around the post of each switch contact for a column, then add solder to complete the connection. Some are sold in a convenient pencil-shaped dispenser (http://en.wikipedia.org/wiki/Wiring_pencil ).
I've always wanted to build a keyboard for fast typing, with ultra-light low-travel leaf-spring switches that have a more "bouncy" feel. When trying to type at 160WPM+ it matters far less what kind of sound or tactile feel the keys produce as you care more about the key actuating immediately when hit and providing some spring action to help the finger back up afterward. A leaf-mounted keycap has essentially no sliding friction, which means very little difference in force required between hitting it obliquely or perpendicularly.
Isn't buying a premade MCU board for a "keyboard from scratch" cheating a little? I'd go with a deadbugged 8749 in a DIP-40 package, the classic MCU for a keyboard controller. :-)
As I say to everyone questioning whether to do a keyboard build (or any DIY project) - go for it! Let me know how you go :)
edit: Didn't see your comments about the cheating bit. You are right, it probably was cheating a touch - it didn't quite occur to me until you said it. I'll see how I go with my next build and work out how to cheat a bit less, haha!
It's a good solution if you have some reason (money or time restrictions) that you can't order a PCB. The biggest downside of free-wiring like this though is that you don't have a whole lot of structural rigidity, but the steel that OP uses more than makes up for this.
Wow! I am guessing you're not using a QWERTY layout to do that. What layout are you using? Dvorak?
I have tried mechanical keyboards, and for the longest time I used a clicky one with blue ALPS switches, which has a nice tactile response to the keys, but was not able to exceed ~130WPM with it - the clicking was actually distracting and I felt like I was waiting to feel the key switches actuate before moving on...
(Many of the fastest typists on TypeRacer and one of the well-known, Sean Wrona, use QWERTY so I don't think it's a big disadvantage in terms of speed.)
Really great write-up btw!
Another suggestion is I've never built a keyboard but I've done weird LED arrays and one trick to pre bend all the leads the same way, involves a chunk of scrap wood and a bunch of nails (and maybe multiple forming steps/bending jigs). Much like a sheet metal worker, you'll rapidly discover the leads will spring back a little and you'll have to bend them to 100 degrees if you want a right angle. Its just scrap wood and nails, so play around a bit. You can do it by hand but a bunch of nails in a block of wood works better and is faster overall.
You were worried a bit about getting the diode polarity backwards. You have the source and you'd basically be inverting the bits you're polling with, see the gh60/matrix.c code. The system depends on the internal pull ups so you'd want to not enable the internal pull ups and solder in a couple external pull downs like 1K or so. Just saying it would be survivable and more fun than redoing all those diodes not that its necessarily a good idea.
(edited to add, on your next build, if you want to try something really strange, wire up all the "rows" with 500 or so ohm resistors making a massive resistor divider such that the pin in the middle is at 2.5 volts and 0 and 5 volts at the ends, and then wire up the other pins in parallel. So you hit the 1st of 10 and get an analog voltage of 0.5 volts, hit the 5th of 10 and the analogy voltage of 2.5 volts (for 5V anyway) and have the stereotypical onboard A/D microcontroller input sample it. Some MC are not very high res or stable. I imagine this would be an interesting key debouncing challenge involving painful latency, but it would be cool in an insane way)
For real though, here's another guy who makes keyboards:
http://mykeyboard.co.uk/microswitch/
They're a bit weirder and with very light switches.
I would also check out plover - steganography for the masses.
Excellent - keep it up!
I also building my own GH60 keyboard.
It took a fair amount of effort to build mine, but it was (and still is) such a rewarding feeling to have finished a project like this. If you have any questions or just want to bounce some ideas please feel free to give me a buzz. I'm always interested in other peoples DIY projects :)
Your photography could be improved if you got a white sheet of paper or maybe some posterboard (eg: http://www.dickblick.com/products/blick-economy-white-poster...). Put that under and behind whatever you are taking a picture of and it will make a more neutral, less busy background. If you want to get more complicated, get a tripod.
A good guide for taking your kind of photos is here: https://www.ifixit.com/Guide/How+To+Take+Amazing+Photos/718
Lastly, make sure to have a link to higher resolution pictures :-)
Cheers!
You did a decent job of being inclusive except for that spot. Nice work on the keyboard and article.
Like OP, I have found the state of free CAD software bit disappointing, moreso for libre ones. So far my favorite has been the free 2D version of SolidEdge, but it has its quirks and like the name implies it doesn't do 3D at all.