Author Topic: Zustiur's Custom Keyboards ZusDox  (Read 33002 times)

0 Members and 1 Guest are viewing this topic.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #50 on: Fri, 28 August 2015, 20:12:33 »
If I can motivate myself I'll have another attempt at kicad today. Meanwhile, here's the KLE representation of the hand diagram I mentioned a couple of posts back.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #51 on: Fri, 18 September 2015, 22:16:01 »
I haven't made much progress on this lately. I lost the necessary enthusiasm for learning kicad and my other hobbies took over for a while.
I've had to bring the ZusDox1.0 home from work this weekend as it needs repairs. The left shift key is faulty and needs resoldering. Also I have just updated the firmware to relocate a couple of keys. Mainly underscore and FN-Nav. In both cases it's to put them in more accessible/comfortable locations. Let the relearning commence *sigh*.
To aid in the relearning I've updated my ergodox to use the exact same layout as the ZusDox. This task took far longer than I expected because I forgot about the complication of the I2C controller. Long story short I had to use cub-uanic's branch of tmk firmware to make it. This was necessary because Ben Blazak's firmware (available from MassDrop) doesn't allow for multifunction keys like FN/Space.

Still waiting on my switch tester to arrive. I don't want to order more switches until it gets here, but the time for ordering the initial GB of zeal switches is running out.

Meanwhile I'm also experimenting with having the ZusDox on my lap with the aid of a 'laptop table'. Basically its a small beanbag with a flat plastic top. You place it on your lap and don't have to worry about it slipping off. This may resolve the problem I have with the chair to keyboard height at work.

Offline plg

  • Posts: 2
Re: Zustiur's Custom Keyboards ZusDox
« Reply #52 on: Sat, 19 September 2015, 12:29:11 »
I've enjoyed reading all your posts so far, it's an interesting journey you take. A few annotations:

Like you already found out by yourself, you have too many keys in hard reachable positions. I'd suggest you using more Layers !
One very good example would be the Neo-Layout. It is primarily optimised for german, but you can ignore the alphas and just focus on layers 3-6. That's right, it's using 6 Layers. First two for letters, Caps-lock is both Shift-keys pressed at the same time. Third layer for all special chars like brackets, <>=+-% etc. Just look at the picture and you'll notice how extremly useful that is for programming!! Fourth Layer is a Navigation Cluster with Arrow-Keys and Home, End etc. and a number pad. (Layers 5+6 are greek letters and math symbols, probably not that useful for you).
Since I'm using Neo, I've hardly ever touched the number row again. Dedicated key may for numbers may be fine, but it's faster to press a mod+home row-key. Same could be done for Fn-Keys (or switch the fn-keys to the number row position). That way you could leave out some keys: the number row, dedicated home,end etc, and brackets. Seriously, that brackets on your precious thumb-keys seems a huge waste to me.
I know it doesn't sound like an improvement to lose keys you'd typed for years (or decades), but believe me, it's worth the trouble (and relearning doesn't take that long).

Anther suggestion: pressing the outer Ctrl-Keys with your palm is simply *wrong*. Either consider moving them to a better reachable thumb-position, or, even better: go for true "palm-keys" like the keyboard.io

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #53 on: Mon, 21 September 2015, 06:37:19 »
Hi plg. Welcome to GeekHack! Amazing that someone would make their first post in my little thread...

That Neo-Layout looks freaky to an English speaker, but I do take your point. Logically, using more layers is a good idea. Yet I'm not convinced. Here's why:
I'm having enough trouble with hitting the correct thumb key already. Adding more tasks (layer controls) for my thumbs sounds like a bad idea. I'm already finding that I have to hit two keys with one thumb for certain commands, so I don't want to make that any worse.
I suppose the other FN keys don't have to be thumb keys, but so far my experiment with that hasn't proven to be exciting (caps is FN for mouse keys layer at the moment).

An alternative is to make better use of the layers that I already have. This is something I'm already considering, see the 48% matrix layout I played with on the previous page. As you rightly noted, the bracket keys are basically unusable in their current location. Putting them on the nav layer under <> may be a good solution. On the other hand, I don't like the idea of having to press 3 keys just to achieve { and }. (Shift+FN+<). Also, the nav layer already has page down on the > key. I suppose I could do < and ? but that just seems weird. Also, as I think I noted previously, I occasionally hit the wrong key when I want to move down because my brain seems to switch into keypad arrows mode when I least expect it. Thus I hit FN+< instead of FN+e when I want down arrow. This happens more frequently with mouse keys than arrow keys. No idea why. Regardless it's better having nothing happen (currently) than having random brackets throughout my text  :p

The more I use either 'dox, the more I realize that I don't type symmetrically. That is, my hands don't move in the same way. Keys which I find easy on one hand can be difficult on the other, especially in the number row and the inner most column. This and the above point highlight one of the major pitfalls of keyboard design. There's little point trying to design the best keyboard for the human body, when I'm the sole user and I have ~24 years of typing experience to overcome. There's inertia behind my typing. Changing direction (layout) takes a lot of effort and time. It took over 7 months of using the ErgoDox at home before I was confident enough to try using colemak at work. My accuracy is still awful. Today I was thinking that I've got the thumbs the wrong way around, backspace and del should be on my right hand and enter should be on the left, but I've been using them the opposite way for long enough now that changing sounds awful. I can't remember what my reasoning was now but I think it had something to do with using a left handed mouse at work.

Oh and, I have to reinforce something. When you've got one hand on a mouse, no amount of chording is as nice to use as dedicated keys for your other hand. As far as I'm concerned, minimalist layouts are only for those who have an embedded mouse (trackpoint?) in the keyboard itself and for those who work in command line driven interfaces. As per my discussion with vvp (I think) over in the Ergonomics forum, dedicated F# keys have their place and they truly belong on a workhorse keyboard. I wish my job wasn't so mouse intensive, but these things often can't be helped. (p.s. I hate web apps for a reason)

In other news, my switch tester arrived. FINALLY. I'm much more confident about ordering Zealio switches now that I've actually played with a clear but I'm going to give myself another few days to mull it over and compare spring weights more objectively.

Offline plg

  • Posts: 2
Re: Zustiur's Custom Keyboards ZusDox
« Reply #54 on: Mon, 21 September 2015, 10:58:30 »
Thanks. While waiting for my ErgoDox EZ to arrive, I'm already playing with the thought of building my own variant; and some of geekhack's threads are very inspiring (including yours).
Of course I understand you have to build the keyboard that suits *you* perfectly, and old habits are hard to overcome. Just wanted to give some inspiration of what's possible using multiple layers. (Btw, if somebody want's to try neo, it's not that bad for english either – definitely better than QWERTY ;-)

Re your 48% layout: I see no point in mirroring layers 2 & 3. Why have arrow keys on both hands? Wouldn't it be better to have arrow keys and mouse on the same layer? (eg. arrows right, mouse left).
I also would place the numbers in a grid – that's a lot easier for typing long ID's or such.

What are your thoughts about a palm key?

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #55 on: Wed, 23 September 2015, 00:47:58 »


Re your 48% layout: I see no point in mirroring layers 2 & 3. Why have arrow keys on both hands? Wouldn't it be better to have arrow keys and mouse on the same layer? (eg. arrows right, mouse left).
I also would place the numbers in a grid – that's a lot easier for typing long ID's or such.

What are your thoughts about a palm key?
Ah well there's a number of factors there. First I should point out that the 48% was just a thought experiment not an actual intended design.
The mirroring is for two reasons. 1 I was just copying what I already do on those layers. 2 the usefulness of mirroring depends on keyboard usage. If you only use a right handed mouse, then having arrows only on the left makes sense. I happen to alternate mouse hands according to the desk I happen to be working at. I didn't want to have different layouts so mirroring makes sense.
I did try having numbers in a grid at one stage. It didn't work out at the time because it was a column staggered board and I wasn't used to that at the time. I haven't spent the time to relearn a staggered keypad.

I love the idea of palm keys but haven't figured out where our how to mount one. I wouldn't want to greatly increase the pcb size just for one key.

Keep the ideas and questions coming.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #56 on: Fri, 25 September 2015, 06:18:36 »
Oh boy, switch ordering time.
Making decisions on this has been hard. I definitely want to try out zeal's purple tactile switches. I had to experiment with the switch tester for quite a while. I think ultimately I just don't like tactile non clicky keys but I'm determined to give them a proper try in a full board. Zeal asked that we order in 10s. ZusDox 2 is likely to have 91 switches. However rather than ordering 100, I'll go with 90 and just use a spare white, blue or red on a key somewhere.

Oh that reminds me. Having used the ZusDox 1 for over a month now, I do NOT like having linear switches on the modifiers. Lighter springs might still be a good idea but I'm convinced that the linear keys are contributing to my accidentally hitting Alt all the friggen time. Also I just don't like the feel.

So a summary of my opinions on switch types at this moment:
Red/Black = yuck no.
Brown = feels much like linear to me, I have to concentrate to notice the bump
Blue = Ok/good but I think I still bottom out lots
White = better than blue, possibly my favourite
Green = louder than blue, unsure if I like them more than blue or if they're too heavy.
Clear = I can feel the bump more than I want to when I'm concentrating, but if I relax and just type they seem ok.
Clear with black spring = maybe fractionally better than the clear. CPT BadAss mentioned in his review that Zealios with black springs feel practically identical to Zealio's with 67g springs.

So I've settled on 90 Zealios with 67g springs and placed my order.
I then muttered bitterly about the exchange rate.

Offline SamirD

  • * Esteemed Elder
  • Posts: 1508
  • Location: HSV and SFO
  • on Buckling Springs since '88
    • http://www.huntsvillecarscene.com
Re: Zustiur's Custom Keyboards ZusDox
« Reply #57 on: Fri, 25 September 2015, 12:48:44 »
Lovely project.  Building the keyboard for your hands is definitely the way to go.  Too bad we all can't have custom keyboards for our hands like tailored clothing...

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #58 on: Fri, 25 September 2015, 20:07:47 »
I was about to say that you can all have custom boards because the ZusDox 1 wasn't hard to make, but then I realized the same statement could be applied to making my own clothes - something I doubt I'll ever learn to do. Like so many things, the hardest part about keyboard design and construction is finding time to do it.

I keep wishing I could speed up the re-learning time. Breaking a lifetime of QWERTY habits takes time. Now that I'm using colemak at home and at work, my accuracy is improving, but the little changes in the last firmware update are causing me problems. I still hit FN in its old location on the left when I need key combinations like ctrl+arrow and I frequently hit underscore in its old location ... which means a lot of spaces appearing where there should be underscores because I changed the purpose of that key entirely. Also an oddity. When I'm using spaceFN on the left, I have no problems with holding it long enough, but if I use SpaceFN on the right to use a single arrow key, I often end up with ' e' instead of a single down arrow. I guess I'm not holding the FN long enough, but you'd think my right hand wouldn't be any quicker than my left.

I'm going to have another go at PCB creation this weekend. Wish me luck :P

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #59 on: Wed, 21 October 2015, 07:34:22 »
There hasn't been much to report lately. Kicad has defeated me for now; I simply can't figure out how to use it to get the key placement and rotation that I need.
Meanwhile the caps I ordered... well apparently I never submitted the order. OOPS. That's annoying but not a disaster. I was having buyer's remorse the day after (not) placing the order thinking that I had selected the wrong combination of options on massdrop anyway. I'll continue to make do with basic key cap sets for the moment and worry about the niceties when my layout is more settled.
After discovering that stuff-up I have checked and double checked that my order for Zealios went through, which it did. I haven't heard any update from Zeal, so I assume my order is still a long way down his queue because I placed my order pretty late in the Group Buy. That assumption is backed up by Zeal's thread, so I won't panic yet.

I've been thrilled to notice that my use of layered navigation keys is becoming a completely automatic/unconscious thing. SpaceFN is a huge improvement over my old FN placement, though I am still getting random spaces and letters at times when I'm too quick for FN. Oddly the ErgoDox seems worse for this than the ZusDox. They're running the same firmware so I assume it's just me. I'm pretty sure I've stopped using FN in its old location entirely now, which means I can reclaim that key for some other purpose. Perhaps as FN2 for the keypad or other layers.

Unfortunately I do have bad news. I seem to be developing pressure point pain at the outside corner of my wrists. This part of my wrist is typically in contact with mousepad and keyboard palm rest, so it could pose a problem in future. For now I'm not too concerned but I'm monitoring the situation. It just reinforces two things I was already aware of:
* The keyboard height, and palm rest height relative to the keys are both too high
* The foam material I used for ZusDox 1 is too firm.

It also lends weight to the tented keyboard issue - I still don't think tenting would be suitable at work, but that would definitely alleviate the current issue as it would mean a slightly different part of my palm/wrist would be in contact with the padding.

I mentioned I got a 'stable table' thing for putting the keyboard on. As yet I haven't tried that, and I can't do so this week as I'm not at my usual home. I really need to try it before I build ZusDox 2 as it may result in a significant change in the design, particularly in terms of angles if I stick with a fixed/not split board.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #60 on: Sat, 28 November 2015, 08:09:08 »
Today I completed soldering of ZusDox version 2, and quickly updated the firmware.
I loaded the firmware. Nothing seemed to happen. I waited until Windows had finished 'installing' the USB device. Still nothing... tried a different port. Then everything went haywire.
After rebooting and being careful to open AquaKeyTest before plugging in the keyboard, I was able to see that some keys appeared to get pressed during firmware boot, namely F5, F12, and a few others. Pressing keys mostly resulted in nothing. The few keys that did cause a response didn't give the values that they should.
I'm quite lost right now. I have checked my soldering to ensure there's connections where there should be, and no connections where there should not be etc. It's late and my eyes are getting blurry, so I'm not going to check the row and column pins in the firmware right at the moment.

I have found 1 zealio switch that seems to be permanently pressed. A known issue with these switches. Apparently there is a fix that I'll have to investigate.

Instead, here are the lessons that I've picked up thus far, in no particular order:
* If you decide to rename your firmware, such as by putting 'v2' at the end, remember to update keymap_zusdox.c to be called keymap_zusdoxv2.c
* If you see a seemingly useless #endif in keymap_common.h, it's probably there for a reason. Compare with a file you know works. Don't just delete the line because you think you know what you're doing.
* Read more of the error output from make. It's probably telling you what you did wrong, but the important part may not be on the last line of the error message.
* If handwiring a teensy, do not clip the teensy into helping hands. It's much easier to lay the teensy upside down on your work surface, cut and strip the wire, then bend the wire at 90 degrees and thread it 'up' through the appropriate hole. That way gravity will hold the wire and teensy in place for you.
* If handwiring a teensy, work from row/column to teensy, not the other way around. If you wire up the teensy first, you'll have to guess at lengths, and you'll have a harder time routing all the wires without crossing them over each other.


Pictures will come when I'm in a better mood.

Offline SamirD

  • * Esteemed Elder
  • Posts: 1508
  • Location: HSV and SFO
  • on Buckling Springs since '88
    • http://www.huntsvillecarscene.com
Re: Zustiur's Custom Keyboards ZusDox
« Reply #61 on: Sat, 28 November 2015, 23:04:06 »
Good to hear you're still working on this project. :)  Don't be discouraged by the setbacks.  The night is always the darkest before dawn...

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #62 on: Sun, 29 November 2015, 03:18:44 »
Ok, what I've figured out so far is that the 'haywire' effect was caused by F5, F12, ctrl and shift being permanently held down. I've bypassed that by writing firmware where those keys are bound to 'safe' keys, numbers and letters. Yet, now when I plug in the board, nothing happens at all. Hmm.
Checking the teensy pins against my little excel table, all looks correct.
I found several errors in the matrix.c, particularly in this block:
static matrix_row_t read_cols(void)
{
    return (PINB&(1<<0) ? 0 : (1<<0)) | //Col 0 = Pin
           (PINB&(1<<1) ? 0 : (1<<1)) | //Col 1 = Pin  and so on.
           (PINB&(1<<2) ? 0 : (1<<2)) |
           (PINB&(1<<3) ? 0 : (1<<3)) |
           (PINB&(1<<7) ? 0 : (1<<4)) |
           (PIND&(1<<1) ? 0 : (1<<5)) |
           (PIND&(1<<2) ? 0 : (1<<6)) |
           (PINC&(1<<7) ? 0 : (1<<7)) |
           (PIND&(1<<5) ? 0 : (1<<8)) |   
           (PIND&(1<<4) ? 0 : (1<<9)) |
           (PIND&(1<<7) ? 0 : (1<<10)) |
           (PINB&(1<<4) ? 0 : (1<<11)) |
           (PINB&(1<<5) ? 0 : (1<<12)) |
           (PINB&(1<<6) ? 0 : (1<<13));
}

Which is hardly surprising given how much I confused myself last night when I was editing that section. Here's a tip folks. Be consistent in you row and column naming. The firmware counts from 0, so should you!
I also had the rows in the wrong order in the 'select_row' section.

That would explain a lot really... and come to think of it, I think there was 6 stuck keys, so those were perhaps the first 6 keys to be polled before it hit the 6kro limit? *shrug*.
Recompile. Reload.
Still nothing. Wait... still nothing. No, I lie. Column 13 (14) works... except for in row 6 (7) where column 3 is the only key that works. Weird.
Thinking about that, row 6 is the only one where I had to get tricky with the diodes. I haven't mounted them all backwards have I??? I'm sure they're facing the same way as last time... v1 is at work so I can't physically check. I have photos.
Oh hellfire.
I couldn't really have got them any more wrong. No wonder they seemed to reach the distance more easily this time. Instead of connecting each to its own switch with one continuous wire of connection between them, I've connected them end to end.
This is going to take a HUGE amount of desoldering. Good bye neat work. Hello mess.

As tempting as it is to rush in and start making corrections, I should probably take some time to think this through carefully in case there's a way I can solve it without having to do too much work. I'd be upset, but the bad feeling is being mitigated by the pride of working out what the problem was.

...
Now imagine how frustrating this would be if I'd done a PCB, paid for its production, and had made the same mistake. I'm so glad that I gave up on that when I did.
« Last Edit: Sun, 29 November 2015, 03:25:25 by Zustiur »

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #63 on: Mon, 30 November 2015, 17:46:51 »
The trouble with hindsight is that it is only available after it stops being useful.
If I ever order more zealio switches they will not be from the first batch. These things melt WAY too easily.
Knowing what I know now, I would have been better off cutting the leads rather than desoldering.

I think ready to start soldering again. I just wish I knew for certain that the remaining switches are OK. I destroyed at least one. I'm suspicious about several more.

Offline SamirD

  • * Esteemed Elder
  • Posts: 1508
  • Location: HSV and SFO
  • on Buckling Springs since '88
    • http://www.huntsvillecarscene.com
Re: Zustiur's Custom Keyboards ZusDox
« Reply #64 on: Tue, 01 December 2015, 09:49:10 »
I think ready to start soldering again. I just wish I knew for certain that the remaining switches are OK. I destroyed at least one. I'm suspicious about several more.
You could test each one using a battery or something like that after each solder.  This also benefits the heat diffusion a bit too as the board will cool down a bit as you do the contact test.


Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #65 on: Sat, 05 December 2015, 01:31:30 »
It lives!
This message is brought to you by the ZusDox v2. I dare say I'll still have some testing to do, but it's pretty good so far. I had some trouble initially with column 10 triggering constantly. From its behaviour I thought it was a short, but eventually tracked it down to a firmware error. I also damaged another Zealio to the point where it couldn't be pressed. This I was able to partially fix by re-melting the plactic and pushing the pin in the right direction. It now presses but gets stuck if I hit it too hard. That's okay because it's the Insert key and will have little to no use anyway.

Here's what a melted zealio bottom looks like. It might not be immediately apparent from the photos but the thicker copper leg is actually poking through the side wall of the switch. I haven't been able to salvage this one.


Here is how NOT to connect your diodes.

It's amazing how many warning signs I ignored while building this. I knew I was doing it differently to the previous time. I knew it seemed too easy to have them all reach the next key. I was suspicious when I was unable to show a connection from one end of a row to the other and yet I kept going.

Here's the top view

You can tell which keys I painted labels on and which ones are genuine. No matter, I'm just happy that the cerebral confusion will be gone because I won't be dealing with mislabelled keys anymore. You can also clearly see the gaping hole where I cut the capslock key too aggressively. Both shifts were cut also. As were the corners of the thumb keys for enter and backspace.

And here's the bottom view of the final product.

Readers with good memories will note that I've given in and bought a second colour of wire. I found a different store sells 25m reels, so having a second colour doesn't seem like such a wasteful purchase now. I think ideally 4 colours would be best. That way you can have alternating colours on your rows and on your columns to make it really easy to tell which one you're looking at while joining everything up to the teensy. No matter though.

It's more or less trouble free. The v and 3 keys are triggering without actually getting to the actuation point, so I'll have to fix those somehow. I haven't found any others with that issue yet. Once that's taken care of I can return to thinking about the physical shape of the board. Is the angle correct? How much space do I need at the bottom to build in a palm rest? I cut this out as a rectangle for sheer simplicity but expect to alter it some more.

Offline SamirD

  • * Esteemed Elder
  • Posts: 1508
  • Location: HSV and SFO
  • on Buckling Springs since '88
    • http://www.huntsvillecarscene.com
Re: Zustiur's Custom Keyboards ZusDox
« Reply #66 on: Mon, 14 December 2015, 20:36:54 »
Ah, the hard work that it takes to make your own keyboard.  I'm lucky enough that a standard 101 layout works for me because I would have had to go the same route as you otherwise.  Great to see the progress!

Offline MrRooks

  • * Destiny Supporter
  • Posts: 209
  • Location: The burbs
  • Always be knolling
Re: Zustiur's Custom Keyboards ZusDox
« Reply #67 on: Tue, 15 December 2015, 11:29:40 »
This is looking awesome!

Offline domsch1988

  • Posts: 57
  • Location: Germany
Re: Zustiur's Custom Keyboards ZusDox
« Reply #68 on: Thu, 17 December 2015, 10:45:53 »
i just registered to say a massive thanks to you!
I just read all this thread and have to say: this gave me more insight into what i'll be planing than any other information i've found to date. After looking on custom ergo keyboards for days i just took a step back and thought: how must your V2 look to a "normal" person  :eek: I'm currently using a sculpt ergonomic Keyboard at work and every person using my desk first time looks at it and says: What is that? Your V2 must look like someone took a bag of keys and spilled it all over the table  ;D
Me personally, i really like your V2 concept. It much resembles what i've planned for myself. Plus i really appreciate a ergo keyboard with close to having all keys. I too am a IT Administrator and not having F-Keys (or proper F-Keys like the sculpt) is enough for me to not consider a keyboard.

I'm still in the planing phase and am trying to figure out where to buys keys. Although Cherry is a German company, i've not found any shop that sells cherry switches in germany. Even finding a EU based shop is next to impossible. In fact i've not been able to source any individual keyswitches in Germany no matter what make or type... Maybe i just need to pay the 30$ shipping from mechanicalkeyboards.com

Again, your documentation is helping me a ton and is much appreciated  :thumb:

Offline SamirD

  • * Esteemed Elder
  • Posts: 1508
  • Location: HSV and SFO
  • on Buckling Springs since '88
    • http://www.huntsvillecarscene.com
Re: Zustiur's Custom Keyboards ZusDox
« Reply #69 on: Sun, 20 December 2015, 23:51:07 »
This is why I love this place.  Welcome to GH!

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #70 on: Thu, 31 December 2015, 20:55:25 »
i just registered to say a massive thanks to you!
[snip]

Again, your documentation is helping me a ton and is much appreciated  :thumb:
Yay, welcome! I'm glad my musings are helpful to someone.

Hard to believe I've been using the ZusDox 2 for nearly a month already. It had some teething issues. Fixing the melted zealios involved a few tricks, and I also had to bring the board home from work again because I'd somehow forgotten to solder one of the connections. This was causing LShift, z,x,c,v,b to fail and or double tap on a regular basis.
I won't repeat the full detail of how I fixed some of the zealio switches, just read it here: https://geekhack.org/index.php?topic=74807.msg1956673#msg1956673
The worse ones, I had to desolder again and pull them apart. The sliders and springs are fine, so I chucked those into bottoms I got out of the full MX blue board I've been harvesting.
Harvesting switches is proving to be tricky, the solder they used seems to either have a higher melting point or some sort of protective coating. I was adding solder of my own to make it easier to remove, but I ran out. I'm concerned that the problem may actually be my iron not heating properly (it only seems to heat up enough on one very small point of the tip, and not anywhere else), but I guess I'll find out for sure next time I have something to actually build. Also I bought a solder sucker/desoldering pump when I had to pull apart zusdox v2. It also does not seem to work properly, the plunger should depress and catch, only springing back when you press the release button, but often it fails to catch properly. This is where learning from someone with experience would be extremely helpful.

As far as future improvements go, it will take a number of months to really get to know the 'faults' of V2. So far it's pretty good, but there are some things I'm keeping an eye on:
* I think re-including the -_ key in the number row was a mistake, I now have to stretch too far for =+
* As I use palm rests, I need to extend the bottom section and come up with a nicer foam or gel for the rest
* I'm not certain that I've got the angle of separation right
* Having the teensy hanging out the top is weird and unhelpful for desk clutter. There just wasn't any room allowed for it in the design.
* It's about as flat as I can make it, and that's a good thing. The desk is now the major issue in bad ergonomics, not the keyboard thickness. I may have to learn to work with wood or metal so I can create a keyboard tray or something.
* It still doesn't work through my KVM switch despite not having mouse keys enabled. A new KVM may be required. I wonder what the draw is on a teensy, the issue may simply be a lack of power getting through the switch.
* Something I didn't consider until I started using this, is that once you have a fixed angle of separation, you really have to sit dead center of the keyboard to avoid having it feel wrong.
* The thumb keys may be too close now.
* My typing accuracy has gone down again. I need to spend some more time doing actual typing lessons/practice


V1 is still in use, now at home as a replacement for my ergodox. It is AMAZING how much better this board feels on its risers (as intended!) than it did flat on the desk at work.

No plan for V3 yet, but it may be a single left handed revision of V1 for use in gaming. For now I'm just pushing the right hand away as far as its wires will allow, but that's not really convenient. I'm also tempted to create a minimalist version along the lines of the 48% idea I discussed earlier in the thread (but with column stagger). This could be attached to my home theater machine to replace the huge rubber dome board I use there.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #71 on: Sat, 02 July 2016, 21:30:32 »
Using the ZusDox has eliminated the pain and discomfort in my pinkies, but has resulted in thumb pain. Specifically a burning muscle pain in the fleshy part of my thumbs.
I'm hoping that altering the placement of certain keys in the firmware will at least give me a temporary reprieve.
I have changed some thumb keys around. Boy is this going to take some getting used to.

Enter and Backspace are now where Space/FN used to be. Space is no longer tied to FN. Instead A and O are tied to FN. Relearning the position of these keys is going to suck after so many months of practice but I consider it a necessary evil. Building a V3 to relocate keys into more comfortable spots will take too long. I think that the A/FN part of this change might be the easiest bit to relearn as I was previously using Caps/FN for mousekeys. My brain already understands that holding down my pinky can mean movement.

I do want to start work on ZusDox v3 but at this point in time that may not be wise. I would need to order more keycaps, or pull a board to pieces. I'm not willing to do either right now, mainly because I would be away when the parts are likely to arrive. It will have to wait until I've returned from my holiday to Europe/UK. With time I'll find out if the changes made today resolve the problem and make v3 unnecessary. Fingers crossed I guess.

Offline JGwinner

  • Posts: 2
  • Location: SoCal, USA
Re: Zustiur's Custom Keyboards ZusDox
« Reply #72 on: Wed, 19 December 2018, 13:07:42 »
hey, fantastic thread!

I have a lot of the same design goals, you approached things very scientifically. I'm impressed!

Did you go any further?

== John ==

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #73 on: Thu, 25 April 2019, 09:32:44 »
Hi John. No I haven't gone any further. 3 years on and both boards are still going strong. My hobby focus has shifted too much for any real progress. I do still intend to learn kicad and get a pcb and laser cut plate but there simply hasn't been a need. It's on the back burner until my interests shift again or until something changes enough to warrant my diving back in. A keyboard dying would definitely make me do it. I never really expected my awful hand wiring to survive for this long. I should get on with kicad just in case...

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #74 on: Sat, 11 January 2020, 22:08:05 »
And I'm back… three things are combining to rekindle my own interest.
Both prototypes are beginning to exhibit their age. I've broken and replaced the risers on Zusdox1 multiple times. Zusdox2 occasionally goes haywire and has to be reset (cause unknown). I'm pretty sure I've broken the solder joint on Zusdox1-capslock again but it works if I press on the right angle. I'm amazed that I've been using Zusdox v2 for four years now. The prototypes were never expected to last this long.
My brother has recently rekindled his own interest in electronics, partly through the discovery of EasyEDA, a PCB design tool linked to a factory in China which sells PCBs at an amazingly low cost. Including pick-and-place of certain parts if you so desire.
Additionally, one of the chattier people at work saw my keyboard, made the usual comment about it appearing to be a keyboard that fell to pieces, and has subsequently asked me about it every time he sees me. To the effect of, 'are you still using that prototype?'

In design space, I'm now up to Zusdox 2c. 2a, 2b and 2c are literally just revisions of thumb key placement and angle. Very minor adjustments after a discussion with my chiropractor. I took my keyboard to him and asked for his input based on the thumb pain I was having. The pain has subsequently gone away (stretching is important) but his suggestions are still valid. The placement and angle of the right thumb needs to be different to the left, purely due to my hands. As I think I mentioned previously, symmetry on the keyboard doesn't matter, because the human body is not symmetrical, no matter how much we like to tell ourselves that it is. It's also important to remember that this is personal keyboard, to suit me and me alone. It does not need to meet any mass-market appeal where symmetry would assist in achieving a more 'one size fits all' design.

I've spent multiple days now re-reading, re-learning and making copious notes.  Things I failed to write in my old notes include what applications I was using! The sorts of things you never expect to forget.

So far, EasyEDA has been many times simpler to learn than KiCAD, but KiCAD is more powerful and would be supported by more companies. I still think it's worth learning. Within EasyEDA, I'm using Cherry MX diagrams/footprints by Daily the Noob and the Teensy 2.0 by XIDIE. Whoever they are. Thanks to you if you're reading this!

I'm pleased to say that there are many newer YouTube tutorials on KiCAD now, and I'm finding it much easier to learn than the first time. My main barrier to progress currently is available time and mental capacity to work on this. Learning new things takes brainpower that I don't always have spare after a full day at the office.

I spent the entirety of yesterday trying to map LibreCAD coordinates to KiCAD coordinates. Top Tip: Make your blocks in LibreCAD and your footprints in KiCAD have the same reference point. Mine didn't and that caused no end of headaches. Working wholly within the lower right quadrant of LibreCAD will also save headaches. Having mapped all the coordinates and taken the time to do all the routing in KiCAD, I then printed out the designs and discovered that they don't match. I have a theory about why, but it'll need time to figure out and resolve. Then I'd have to re-do all the routing.

Rather than jump into that today, I've taken 100 steps backwards. I'm building my blocks again, building my own footprints, building my own symbols. It's labour intensive but still conducive to the learning process. I was using Hasu's tmk symbols and techieee's footprints. That actually caused problems that could have easily been avoided had I been more familiar with how this all works. For whatever reason, Hasu labelled the pins 2 and 1 in the symbol for a switch rather than 1 and 2. This meant all my ratnests pointed to the wrong pins in the PCB editor. I had to return to the schema and flip all of Hasu's switch symbols. In future I'll use the standard SW_Push switch that comes with KiCAD. Techieee's footprints are terribly busy for my taste and they come with Alps compatibility which I absolutely do not require.

I'd link to pictures but I see PhotoBucket is being silly about blurring images. I'll have to move do a different hosting service at some point.

One of the things I re-read yesterday was my own posts in the Living PCB thread where I apparently had a corrupted install of KiCAD. No wonder I gave up at the time. I've had no such issues this time around and was wondering why I found it so hard back then so it was good to read that little bit of history.

Anyway, I'm back, and I'm very much looking forward to interacting with GeekHack again. I've missed you guys.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #75 on: Fri, 31 January 2020, 02:17:01 »
Reading The Living PCB Design Thread has been very valuable for learning about many parts of this process. Pages 10 to 12 in particular held a lot of info regarding direct wiring a ATMEGA32U4 rather than using a Teensy or other breakout board.

I've been consciously treating a lot of my recent hours on the project as a learning exercise. Working with the expectation of having to do certain things 3 or 4 times before I'm satisfied that I've done things the right way. This has been very valuable because going through the process of drawing schematics, mapping PCBs and routing tracks for a whole keyboard taught me of things to be aware of that I wouldn't have thought of otherwise.

My brother and I collaborated on a 3x3 keyboard powered by a teensy just to prove our understanding and to see what the output of EasyEDA/JLCPCB would be like. Coming from an electrical engineering background, he was somewhat stunned when we plugged everything in and it worked first time. I was amused because I'd had a great deal more confidence from start to finish than he had. I think he often forgets just how many hours I've put into understanding this stuff. I'd have been quite happy to skip that prototype step altogether, but I saw the value in it as a practice exercise.

Yesterday's unexpected lesson is that KiCAD's default footprints don't necessarily meet KiCAD's default design rule checks. For example, I was planning to use PinHeader_1x05_P1.00mm_Horizontal. This component causes warnings in PCBNew that the pads are too close together. I actually needed pinheaders with 2mm spacing, but hadn't bothered to check!

I've heard two practices regarding routing. One is to keep as much as possible on a single side and use short vias to the opposite side. This keeps lines easier to understand when looking at them visually on the physical board. The other practice is to try to have horizontal lines on one side with vertical on the other. I'm not sure which I favour, but if you're going with the all on one side/short vias method, make sure your vias are long enough that the ground plane can still fit through.

A lot of what I've learned recently revolves around the order of operations. It is actually beneficial to do a lot of steps in what I consider to be reverse order. Logically, I expect Concept > Design > Draw > Source Parts > Order. It's more like Concept > Source Parts > Design > Draw > Order.
There's lots of little steps and they're not all obvious. I'll try to explain for anyone else who's walking down this road in future. This step by step guide assumes you've already done the learning of how to do each of these things.

This is what I currently believe is the most efficient order.
   1. Play with Keyboard Layout Editor. Play a lot. Get a keyboard to look how you want. Make sure you understand what the Raw Code actually means.
   2. Use your printer scaling or a picture editor program to print out the Keyboard Layout Editor image 1:1 scale with real key spacing (19.05 mm/0.75"). Put your hands on it and pretend to type. If it's not right, go back to step 1.
   3. Pick a manufacturer. In my case JLCPCB.
   4. Identify a list of component types you'll require (MX switches, capacitors and so on).
   5. For each component, find SMDs where appropriate. Try to use 'Basic' components rather than 'Extended' (JLCPCB's Basic components don't have an additional set-up cost). Record the part number and other details such as package (0805 for example). Download the datasheets.
   6. Where SMDs aren't available through the manufacturers service, identify a vendor you can order them from. Download the datasheets.
   7. Take your raw KLE data into Excel. Use it to massage things until you have precise coordinates of the top left corner of each key's location. If you have a lot of rotation like I do, you'll need Trigonometry commands such as Sin and Cos. Beware that Excel needs Radians, not Degrees in these commands.
   8. Go to LibreCAD. Draw blocks for each size of key you'll be using. Save each block as a separate file so you can reuse them in later projects. I used plain squares for my switch plate holes because I don't want to open the switches after installation and I'd like to save money by reducing complexity.
   9. Go to KiCAD. Find footprints for each component you'll be using. Where none exist, draw according to the Datasheet specifications. Do not take shortcuts or think 'I'll fix that bit later'. Do it once and do it right the first time. I nearly ordered boards with drill holes too small to accept the switch pins because I thought I'd come back and fix the hole dimensions later.
   10. On your Schematic, place one symbol of each type for each component you'll be using. I prefer to use the built-in symbols. Now edit each symbol so that they have an associated footprint, value and an LCSC field stating the part number you identified earlier. You'll end up with a bunch of unconnected symbols such as Capacitor22pF, Capacitor1uF and so on.
   11. Now draw your schematic by copying those symbols you already set up. This method means you won't have to waste time manually entering those values over and over again for components of the same type.
   12. Annotate the schematic and run the Electrical Rules check.
   13. Generate the Netlist
   14. Dump the parts onto PCB view. Sort them by type. Sort them roughly by placement order (ie switches in numerical order).
   15. Move the parts into their rough locations, rotate etc. Look really closely at your controller chip's pins. Try to identify if you've got all the rows and columns hooked up to the pin that will be easiest to get to. This may involve drawing out a bunch of the traces and then deleting them all.
   16. Return to the schematic and update pin selection on your controller.
   17. Update the PCB again. Now use the coordinates from Excel to precisely place all the switches.
   18. Adjust other components as required then draw edge cuts
   19. Make note of coordinates of LEDs and other components that will need to be visible/touchable such as the reset switch.
   20. Use the coordinates you just recorded and the coordinates for switches in Excel to place blocks onto your LibreCAD drawing. Remember that LibreCAD needs -Y while KiCAD needs +Y.
   21. Draw in the engineering page border/rectangles on your LibreCAD drawing. 10,-10 to 287,-200. 12,-12 to 285,-198. 177,-166 to 285,-198.
   22. Print out the LibreCAD drawing and the PCB drawing. Using the page border to assist in alignment, hold up both pieces of paper against a window so that the light shines through and you can see both images. Verify that everything lines up.
   23. Draw PCB GND zones before you route all your traces. Keep an eye on the GND zones as you do your routing to ensure you're not leaving huge holes without any GND plane.
   24. Move all Silkscreen text to visible locations.
   25. Run all the DRC checks. Review the board in 3d view. You'll be surprised how many mistakes become more visible in that view.
   26. Generate the Gerber files, Bill of Materials, Drill file and Footprint Position file.
   27. Check the files in GerberView
   28. Submit PCB to manufacturer.
   29. Submit parts order for non pick-and-place parts.
   30. Draw any other case elements you require in LibreCAD.
   31. Submit case dxf files to manufacturer(s). May be separate manufacturers if 3d printing a case and having a steel plate cut.
   32. Write the TMK or QMK code while you wait for delivery.
   33. Receive PCB, test all of the routes.
   34. Receive non SMD parts. Solder stuff.
   35. Receive case and plate. Assemble.
   36. Install TMK code.
   37. Test.
   
I think that's it. Phew.

I was all set to place my order today, only to discover that JLCPCB/LCSC are currently out of stock of the ATMEGA32U4-AU. There doesn't seem to be a way to place the order with an instruction to wait for the parts to be available, so I've contacted them to ask for an ETA on availability.

To say I'm frustrated right now would be an understatement, but I also noticed banners on their website indicating they're having issues due to the Corona Virus and that some services may not resume until 10th Feb, so while I'm frustrated at life, I place no blame on them.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #76 on: Fri, 27 March 2020, 05:56:16 »
The long wait is over, JLCPCB finally got back to work and got the parts in stock etc. They sent me my boards... and there's a part missing. I don't know why that happened and will contact them at some point, but as it's only the reset switch, I'm not greatly concerned at the moment. I'm sure they charged me for it, so its absence is very strange.
I encountered several problems with my first PCB.
1) I didn't have a flux pen and soldering on a USB Mini B socket is actually quite hard with the iron I have. This was easy enough to resolve once I had flux.
2) I hadn't actually made a connection in my schematic between the USB voltage line and any of my VCC tracks. A small piece of wire between a USB pin and one of the capacitors was my dodgy solution to this. I doubt I'll ever make THAT mistake again. It happened because the data lines are called D+ and D-. In my head that somehow became voltage+ and voltage-, which of course is not true at all.
3) By the time everything finally arrived, I'd forgotten all about having to disable JTAG programming. This meant that with the pins I'd chosen for rows and columns, only 2 rows worked.  I notice also this critical step is missing from my list of steps in the last post. So insert a new Step 36, for disabling JTAG.

All in all, that's a pretty minor list for such a complex thing to do - in a field I'm unfamiliar with. Electrical engineering is definitely not my area of specialty, and the datasheet for the atmel chip is mostly nonsense to me.

I had hoped to use USB programming for the TMK code, but ended up using SPI programming. The fact I have to use SPI to set the fuse bits anyway rather defeats the objective of not needing to solder in those pins to program it. It's frustrating in that I wanted to have one less thing that needed to be soldered on, but is a very small issue in the grand scheme of a keyboard's life. I'll still look into USB programming (aka DFU programming... Device Firmware Update) as that'll be far more convenient for any future key layout changes.

Many thanks go out to hasu, bpiphany and gipetto for helping me diagnose the problems I was having. I'll try to post pictures soon.

Mission Accomplished... time to review, improve and order my next PCB for the full sized board. Sadly that will have to wait for at least a little while as the whole Covid-19 thing is resulting in my workload exploding. Overtime will be required.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #77 on: Sat, 18 April 2020, 20:51:51 »
Overtime is still going but the end is in sight. Not much progress to report currently. I've ordered some nice box headers for future boards and sent off a few queries about quotes for a plate.

Meanwhile, here are some pictures :)

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #78 on: Sat, 09 May 2020, 04:40:57 »
Once again I find myself in an area I'm not familiar with; ordering custom keycaps. There's been hundreds of group buys for custom sets, so you'd think there'd be stacks of information around on how to do this. Yet I cannot for the life of me find any clear instructions or logs of how someone went about it. If you know of any, please supply links!
   
I was looking at WASDKeyboards first, and they at least have the option for semi-custom sets to fit standard keyboard shapes, including the option for Colemak layout. They also have options for individual custom keycaps, but again, no apparent way to design a wholly custom set. On WASDKeyboards I priced up a combination of their semi-custom sets and some custom text caps and some blank caps on which I'd paint the necessary details. For two complete sets that comes out to $192, which isn't terrible, but I figure I should at least look at the other sites for comparison quotes. I have therefore sent off queries to MechanicalKeyboards.com and PimpMyKeyboard.com to see if they'll fill me in on the process.
   

Meanwhile I'm also struggling to wrap my head around case design. As mentioned earlier  I sent off one quote just for a plate and discovered that the minimum order price was roughly 5 times the cost of the individual plate I wanted to order, so I designed a sandwich case to get cut all at once with the plate.  I'm waiting to get the quote back on that now.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #79 on: Sat, 13 June 2020, 02:22:18 »
Mechanical Keyboards don't do custom sets, PMK ask US$850 for creation of the set. Needless to say, I went with WASD.
   
Since then, those keycaps have arrived, I've submitted the full keyboard PCB design, received it and done all the necessary testing with a bent piece of wire acting as my switches. During the testing/firmware installation I made a series of dumb mistakes which were easy enough to resolve once my brain was functioning. The dumbest mistake being that I didn't see the error message returned by AVRDude when I was applying my firmware, then wondered what was preventing the boards from being detected via USB. The answer being that I'd wiped the bootloader and then not actuaally applied my firmware because I was running AVRDude from the wrong folder - it couldn't find my hex file.
   
I've also submitted and received my first sandwich case for the one hand board from a local laser cutter here in Perth. Sadly I got muddled up there as well and submitted the wrong drawing, so very little lined up. It was enough to prove the concept and diagnose some errors in the right drawing though. I've sent off drawings for a case both for the one-hand and for the full keyboard. There's been a series of irritating delays - email being delayed, files not attached, wrong file attached, vendor not responding and so on. Just yesterday after supplying the quote, they told me there were problems with the drawings that I'll need to diagnose over the weekend.
   
Next up, I'll need to purchase a bunch of switches. AliExpress looks to be the most sensible place to get what I need as the other stores I've looked at don't tend to keep much stock of my favourite switch (Cherry white).
   
Meanwhile, here are some pictures to break up the wall of text :)

OneHand/Gaming keyboard with the hand wiring bodge to fix the VCC oversight.
244852-0
OneHand in use for playing Elite Dangerous
244854-1
Keycaps from WASD
244856-2
ZusDoxV3 PCB
244858-3

Today my brother invited me to visit a place called Artifactory with him. It turned out to be a local MakerSpace less than 10 minutes from my house. How did I not know about that years ago? Argh! I'm sure it will be very useful for future iterations of my keyboards but for the moment, I'm going to stick with the plans already in flight.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #80 on: Sat, 13 June 2020, 10:15:39 »
The temptation was too strong. I couldn't wait for the new parts to arrive, so I bodged this with the plate I got cut earlier which isn't 100% right. Getting the LEDs to fit through holes that didn't line up with the PCB properly was an interesting exercise. There wasn't enough room for the USB between the PCB and plate either. The PCB is bowed to allow the fit and it's really hard to plug in and disconnect.
244873-0
It's so nice to type on!

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #81 on: Mon, 15 June 2020, 06:06:15 »
It's funny how you notice different things in a different environment. I was using that board all Sunday with no complaints, then I took it to work today and almost immediately decided that the 1.5U thumb keys aren't long enough. The difference? At home I was hovering. At work I used a palm rest, so my thumbs were in contact with the key for more of the time.
I think there's enough room to fit a 2U key on the middle thumb keys. The keys closer to the nav cluster may need to be 1.75 to fit, but I don't touch those all the time, so that's okay.

Offline Zustiur

  • Thread Starter
  • Posts: 235
Re: Zustiur's Custom Keyboards ZusDox
« Reply #82 on: Fri, 19 June 2020, 10:10:03 »
My second laser cut order arrived today. I've noticed 5 mistakes already. Nothing I can't fix manually or work around. I'm glad I didn't have this much trouble with the PCBs.

Full plate and the beginnings of my palm rests.
245277-0
Bottom layer of the one-handed keyboard on its risers. Spot the error with the risers!  :-[
245279-1
One-Hand layers.
245281-2
One-hand 'assembled'.
245283-3