Hacker News new | past | comments | ask | show | jobs | submit login
My First Keyboard Build (davecooper.org)
268 points by gurgus on Oct 19, 2014 | hide | past | favorite | 78 comments



If you're interested in soldering together a keyboard, but not having to design everything from scratch, it's worth checking out the Ergodox: http://ergodox.org/ . I built one a month ago, and I'm enjoying it a lot. It's a two-piece keyboard with straight key columns, and six buttons for each thumb. You can order the parts on massdrop, when they start another order: https://www.massdrop.com/buy/ergodox?s=ergodox

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.


Are you familiar with the Kinesis Advantage keyboards? The keys are also separated into two sections but sitting on one keyboard, but no DIY needed.

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.


Yes, I tried that for a while, and didn't like it. Here's why:

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."


Anandtech reviewed both keyboards maybe a year ago and preferred the Kinesis Advantage FWIW. You could checkout their reviews to see why.


I use a Kinesis Freestyle with wrist rests, split, tilted up toward the centre, with an Apple Magic Trackpad elevated and sitting tightly between the two halves. I enjoy this setup very much.


I’m hoping we can get this up for manufacturing as an Ergodox alternative/replacement sometime in the next few months: http://i.imgur.com/puH1Ge4.jpg

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


This is intriguing. Is there a link where I can learn more about this project?


In addition to the Ergodox, Massdrop has another keyboard that requires soldering available right now, which resembles the shape of the HHKB.

https://www.massdrop.com/buy/infinity-keyboard-kit


Hrm, that looks pretty neat, but as someone completely new to mechanical keyboards, I wonder if it would be a good starter.


Probably not, since it requires a bit more work than just a keyboard you can buy. I would say something like the CODE Keyboard, WASD Keyboard, or Ducky Shines are good and reliable keyboards.


I'm not opposed to doing some soldering - I'm mostly interested in the entry price. The lack of arrow keys concerns me a bit (but I suppose I could use their layouts to account for that). I'll give those keyboards a look though, thanks!


I also recently built an ergodox and it is definitely worth checking out. As far as assembly, I didn't bother with a magnifying glass or anything. Just my phone to act as a good bright light source and everything went smoothly.

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.


if anyone doing a hand-wired build has a better/more efficient method of making the cables for the columns, please let me know

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. :-)


Oh wow thanks for the wire tip! That will definitely make life easier :)

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!


Self-fluxing enameled wire is great for more than just a simple keyboard project, too---it scales to microcontroller-scale projects, if you have enough patience: http://elm-chan.org/docs/wire/wiring_e.html

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.


>> 160WPM+

Wow! I am guessing you're not using a QWERTY layout to do that. What layout are you using? Dvorak?


Actually it is a standard QWERTY keyboard, with rubber dome switches but this one happens to have a much lower actuation force and distance than most switches, with a soft, cushion-like springy feel at the bottom. Someone used to "better quality" keyboards such as mechanical ones would probably find the keys too loose and wobbly, but I've found that the loose feeling helps when you just want the keys to go down as quickly as possible, since at those speeds it's more a process of hitting keys without conscious thought and hoping they register rather than trying to sense their feedback.

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.)


That's interesting - I have an outdated notion that QWERTY was a hindrance to speed. This was based on stuff I read in the 80s-- this was way back when the Apple //c came out and offered an option to use either Sholes or Dvorak.

I find your choice of rubber dome very interesting. I learned how to type with an IBM typewriter, and moved on to the Apple Extended Keyboards in the early 90s. I recently thought I wanted a keyboard with Cherry MX Reds (I found the clickier MXes too jarring on my fingers), but after years of getting used to and liking the Apple chiclet keyboards, I found that I just couldn't get used to the feel of a mechanical keyboard again. I ended up getting a dome keyboard instead.


QWERTY was designed so consecutive keystrokes are usually on opposite sides of the keyboard, to prevent jamming on a typewriter. Switching sides often doesn't actually slow down typing.


If I were to build a keyboard I would definitely take a couple of ideas from typematrix.

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 :)


The Truly Ergonomic Keyboard[1] takes those ideas even further. Recommended.

1: https://www.trulyergonomic.com/store/index.php


I recall an AnandTech review pointing out that keycaps on the TECK quickly start to become glossy [1]. Is that still the case? What is your experience (if you own one)?

[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-...)


I sent mine back. I do too much work on laptops and other people's computers: switching back and forth regularly was way too painful.

I didn't notice any such effect in the couple of weeks I had mine. Not that I would have really noticed or cared.


Thanks!

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!


I have one at home that I use as my daily keyboard. It's pretty cool. One very nice thing is how quiet it is, especially with a 'skin' on it.

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.


> and it feels more natural

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.


Staggered keys make less sense because they were designed for the typewriter - not the human. Ergo keyboards are designed specifically with the human hand in mind - to reduce finger and hand movement, and place them in comfortable resting positions.

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.


> Staggered keys make less sense because they were designed for the typewriter - not the human

Even if this is true, it only demonstrates that the original reason for staggered keys is no longer a factor, not that staggered keys are actually worse for humans.

The rest of your post brings up the same questions as the other reply. Even if straight layouts are superior (I'm willing to believe it), by how much, and what about other factors? A typematrix rigidly-square layout is quite different to (for instance) the semi-straight layout of the TECK keyboard marketed as 'truly ergonomic'. In a sense, this layout isn't even different to staggered keys - staggered rows can be relatively straight if your wrists are angled. I suggest this partly in principle - I do agree that the standard angling of a staggered keyboard is not ideal.


The standard staggered keyboard layout not symmetrical. If the layout of the keys were optimal for the left hand for instance, the "u" key should have been slightly to the right of the "j" key in order to have the same experience with the right hand.

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.


This argument is insufficient - even taking it at face value, it's only an argument that an optimal layout will be symmetrical, not that a given symmetrical layout is necessarily superior to a given asymmetrical one.

In the context of straight columns, what seems strange about it is that my wrists are naturally at an angle when typing, because the width of my keyboard is less than the width of my shoulders. Straight columns intuitively seem like they would require more wrist distortion, not less. This might not be the case on a wider keyboard, but I don't think typematrix ones are significantly wider than 'normal' keyboards?

I don't know if this reasoning is accurate or not, and I'm sure it can't be a real issue because typematrix keyboards are clearly popular, but I'm not convinced about it just because they're more symmetrical. Plus, in terms of general typing efficiency, I also don't know if I should believe the symmetry is actually important - it might be negligible compared to (for instance) the inefficiencies of qwerty that most people are using, or even compared to simple posture improvements.


Yes, I'm not saying the TypeMatrix pure grid layout is 100 % ideal, maybe there should be just a little bit of stagger to account for the angle of the wrists - but there should still be symmetry of course. I think the TypeMatrix is far superior to the standard staggered layout though, when it comes to the concerns you raise.

The standard layout is just horrible, reaching "v" and "b" with the left index finger while keeping the rest in home position requires an uncomfortable amount of stretching. Even for the right hand, I think the standard layout errs on the side of too much stagger, which is evident when using the pinky to hit the "/" key. There is certainly a lot more wrist distortion than when using the TypeMatrix - there tends to be less distance between the "a" and "l" keys on a standard keyboard as the TypeMatrix places the Enter and Backspace keys in the middle. I guess the Kinesis Advantage might be more ideal in that regard, though I don't suffer from any significant wrist distortion with the TypeMatrix. My hands tend to look like this when using it: https://ploum.net/images/tmhands.jpg

The small size of the TypeMatrix also makes it a win for me, as I occasionally bring it along with the laptop when I sit in the couch for example.

Qwerty is another inefficiency, and I use Colemak myself. The difference between a standard keyboard and the TypeMatrix is still far from negligible.


Well, this is interesting to hear, thanks for explaining. I also use colemak, but I've been leaning towards using a wide layout (swapping some punctuation from the normal position to the centre of the keyboard) - it's from this perspective that the typematrix looks unappealing, but I'm happy to believe this is just a misleading intuition. I do like the typematrix movement of enter, backspace etc. a lot, that part is undeniably an improvement.


Excellent build quality, but I was surprised by these two statements on things you need:

    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.


> Also, if you live in the EU, leaded solder will be extremely difficult to come by.

Source.

I live in the EU and 60/40 is still the most common solder for hobbyists, and is sold everywhere.


Let me add: another important part of soldering is understanding flux. Most spools of solder are not just lead/tin/etc, they include some chemicals that eat away the oxide layer on metals so that the solder can better adhere. When you solder to a PC board you get a pool of goop around the solder pad; this is the flux.

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.


Leaded solder has better wetting properties, it can be soldered at lower temperature and it's more reliable for joints exposed to any mechanical stress, including from vibrations and thermal stress. Any way you put it, it's superior to lead free solder and it's still widely available everywhere, including in the EU. No reason not to use it for stuff that isn't going to be sold.


Thanks for the tips!

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.


It looks, in the photos, like you were trying to solder together two diode leads in mid-air.

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.


This is quite an inspiring article, thanks!

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!


Has anyone built a DataHand or something else that "reinvents" the keyboard? This is already two decades old.

http://en.m.wikipedia.org/wiki/DataHand


There's an ongoing effort by someone to recreate it: http://geekhack.org/index.php?topic=41422.0


Seems to be going slowly. This would be a great Kickstarter project. I'd buy one. Wonder how to gauge the actual Kickstarter interest before putting in the effort?



OP. Consider using "spindly" or "strength-neglected" instead of "girly" arms when describing your weakness. Plenty of women have strong arms.

You did a decent job of being inclusive except for that spot. Nice work on the keyboard and article.


With a diode matrix, is it possible to distinguish multiple simultaneous key presses? And if not, how do you handle modifier keys? Looking at your photo, it would seem that they're wired into the matrix in the same fashion as the rest of the keys.


Yes, you can detect an arbitrary number of simultaneous keypresses. The only limitation is that you can only scan one of the dimensions in parallel.


Now make a dictaphone :P

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.


Wow those are some crazy keyboards!


I wasn't necessarily expecting the parts for a keyboard build to be cheaper than an already assembled mechanical but that Gons site is selling keyboard kits for $470 !? That seems really high to me. I'm not even sure if that price includes everything you need to build on. I'm wondering how normal that is for this kind of thing or if you're kind of buying support along with the price, which would make it worth it I guess.


Current keyboard designs bug me, to put it mildly.

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.


"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...).


Unfortunately, specifications are great, but in actuality you have to take a look at what is implemented as opposed to what is supposed to be implemented.

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.)


Apparently there are all kinds of interesting bugs out there in the wild that you run into if you actually build a USB keyboard with full n-key rollover - enough that most manufacturers just emulate two keyboards and call it a day.


Elaborating on this, in case anyone wants to know more details (I'd edit the original, but for some reason HN decides you can't edit comments after an annoyingly short time limit.)

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.)


You may be surprised to find that you can get microprocessors with over a hundred general purpose I/O pins if you're willing to solder them all down (the STM32Fx series in the QFP208 comes to mind) that would let you wire every key of a 104 or 107 key keyboard to a pin for monitoring. And you could read them all at close to a megahertz so you could get an effective state of all the keys at a given point in time. (the chip can run at 168Mhz and you're looking at basically 14 I/O ports.)


Welp. I keep forgetting how absurd microprocessors are now. Still... That's got to be a fun soldering job. And those are 1.8v / 3v chips, whereas if you're using USB you've got 5v input.

Does it support interrupts on the pins? Or just polling?

Also, can you give me a specific example of a specific part? Searching "STM32Fx QFP208 package" gets me... a link to your comment. Great to know that HN gets crawled, but still...


http://www.st.com/web/en/catalog/mmc/FM141/SC1169?sc=stm32 has the list. http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN1806... is one chip you could use, though frankly using that much processor for a keyboard firmware is hilariously overkill. (Not that there's any reason not to for a hobby project, really...)


I'm still astounded that you can pick up a chip like that for <15$ (well, ok, not including shipping).

Huh. Something to consider. Thanks for the links!


I'd love that, I sometimes use my keyboard to play synth and the muxing behaviour is very annoying.


Probably one of the first projects I'll make once I get my electronics workspace set up is a small keyboard based on TL1240 switches.

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.


I think that it'd be feasible to "teach" the firmware assignment of pins to rows/columns by pressing the keys in sequence upon first startup. You could probably even get away with pressing every key in any order in the "teaching" step if you installed some precisely chosen diodes in reverse.


I think this pretty cool, but I can't really see why you would be so conventional in a custom keyboard. I would end up remaking the space cadet or something similar I bet. I assume a modern linux install can handle the extra modifier keys


That's a nice hack. Gives me motivation to build a custom Emacs keyboard myself.


Thanks! As I'll tell everyone, just go for it. It takes some time/effort but is such a fun thing to do.


About the column wiring: You can buy ptfe sleeving and single core uninsulated wire. PTFE won't melt. Here's one example, it comes in a bunch of sizes and usually in 5 m lengths.

Really great write-up btw!


I'd extend the insulation remark that the cognitive load should be spread. So a hundred identical simple diodes should have insulation slipped on all of them and then the somewhat more cognitively challenging job of individual column wiring can just be bare wire.

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)


Wow awesome ideas! Also thanks for the bending ideas too - it would definitely help make things much easier on the eye too!


Awesome - I'll definitely be using that for my next build! Thanks man!


A witty and self-deprecating write up of a first dive into hobby hardware - and a great result.

I would also check out plover - steganography for the masses.

Excellent - keep it up!


I think it is actually the opposite to self deprecating. The tone is the equivalent of an "ipsum lorem". He just wants you to focus in the big picture.


Dave Cooper as seen in Se110 and UCP120? Awesome build and write up mate! Very inspiring! :)


nah, it's not curtin dave. It's ECU dave


Reminds me of a beautiful quote: "If you want to make an apple pie from scratch, you have to first build the universe."


Haha, I like it!


Cool.

I also building my own GH60 keyboard.


Nice man. Definitely go for it.

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 :)


'Tis pity. There's really no reason to go to all this effort and expense and not split the spacebar into left and right buttons, not add any other thumbable modifier keys, and worst, include neither a pointing stick nor a thumbable trackpad.


Hah, it's still early days man! This is the first build of many to come. As I stated in the blog post, this build was just to see if I was capable of doing it since most of the skills I didn't possess before starting the build. Now that I know how to do this sort of stuff I'm definitely going to be exploring all the things I can do in the future.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: