geekhack

geekhack Projects => Making Stuff Together! => Topic started by: Zustiur on Thu, 14 May 2015, 04:46:29

Title: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Thu, 14 May 2015, 04:46:29
I expect this thread to be a written record of the research, design process and construction process of a board I'm calling the ZusDox.
Zus, short for my screenname, and Dox short for ErgoDox, from which I'm taking much of the existing design.
As you'll see below, the main design is an expanded ErgoDox - expanded with Fkeys and a redesigned thumb section. Exactly how ergonomic it will be depends mostly upon the size of your hands, I have fairly small hands (for a male at least) with what I believe are extra short pinkies (who knows, maybe everyone's pinkies are that short...)
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150514_164534.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150514_164534.jpg.html)
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150514_164545.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150514_164545.jpg.html)

One of the key driving forces behind this project is that my hands hurt. I want to replace all desktop keyboards with ergonomic keyboards sooner rather than later to curb any damage I'm doing to myself by continuing to work in the IT industry whilst also maintaining a significant interest in personal computing. That is, I use computers all day at work then all evening at home as well. I've already switched to an ErgoDox at home which has helped, partly because I've also switched to colemak layout at home.

The cause of the pain is not fully determined. I've always referred to it as Repetitive Strain Injury (RSI) but it could easily be arthritis or a combination of both. Just this last couple of weeks as we move into (Australian) winter, I've noticed that being cold makes things worse. That points towards arthritis I think?
These are the points that hurt most consistently:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/Pain%20points.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/Pain%20points.png.html)
Red indicating the worst pain, green indicating pain that only shows up rarely, and purple indicating pain that I only notice if I use rubber dome keyboards for a few hours. I think the ring finger on my right hand is a better candidate for RSI as is feels a little more like muscle/tendon pain, whereas the pinky on my left hand feels like the pain is very much in the joint. Various exercises and stretches do help but the relief seems to come after days of stretching, there's no immediate 'fix'.

This issue combined with my interest in keyboards has reached the point where I'm now looking at custom designs that match my hand as best as possible. The ergodox is an excellent starting point, but as many have noted, it's not perfect. I doubt my design will represent perfection for anyone other than myself, but that's pretty much a truth of ergonomics.

I'll talk more about my design in later posts and reserve the rest of this one for status updates and useful links etc.

Useful links
  GeekHack resource list

https://geekhack.org/index.php?topic=69582.0
  HASU's TMK Git Repository
https://github.com/tmk/tmk_keyboard/commit/b9fe36f237635db8e37fc94413a7bb7c381070fc
  Track Point
https://geekhack.org/index.php?topic=55960.0
https://geekhack.org/index.php?topic=8971.0
https://geekhack.org/index.php?topic=50176.0
  Keycap sellers
https://geekhack.org/index.php?topic=45672.0
  Key profiles
http://keycapsdirect.com/key-caps.php
  Teensy sellers
http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=568
  Ergodox board sellers
http://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=537
  Switch sellers
http://mechanicalkeyboards.com/shop/index.php?l=product_list&c=43

  Background info on how to
http://deskthority.net/workshop-f7/brownfox-step-by-step-t6050.html
https://geekhack.org/index.php?topic=71191.0https://geekhack.org/index.php?topic=71191.0

Things I've yet to figure out

Decisions made


Status
First prototype has been built and is in use at my workplace.
More keycaps have been ordered in preparation for version 2 and 3
Now reexamining the entire design.

Zustiur
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Thu, 14 May 2015, 05:32:17
For my work, I'll need more than one keyboard. I won't bore you with the details other than to say: 4 computers. 2 desks. Many client networks.

Keyboard 1 - the daily driver
This keyboard gets over 90% of my daily use at work. I type a lot. I'm currently using a full size Leopold MX Blue. The Blues are good, but the other base kb ergonomic issues are becoming a problem. Use of the keypad is rare, and happens mainly when I am putting in my SecurID passcode and have only one hand spare (because for some reason I always end up holding the token in one hand). In other words, I could lose the tenkey and not care 99% of the time. If it becomes a problem I could get a separate tenkey or put it on a function layer (my Ergodox at home has it on function layer 2).

Requirements:
Ergonomics in the form of:
   • Split
   • Column staggered more than the Ergodox
   • Thumb Keys
   • Colemak (i.e. programmable)
   • Mild tilt
   • Palm rest
Equivalent of tenkeyless/80% (I use too many Fkeys to go without dedicated ones)
Programmable key layout with function layers
Functions through a KVM switch which monitors keyboard input for 'scroll lock scroll lock' in order to switch between the 2 connected PCs
Scroll lock key (to interact with the KVM)

Wants:
Programmable/recordable macro keys ala Logitech G15 (A tool I used prior to going mechanical. It saved me 1000s of keystrokes over the years)
Included mouse of some-sort (See discussion below)
Non TRRS cable for the join (because so many people have had problems with them)

Nice to Have:
LEDs for caps lock and scroll lock

Do not want/care for:
Backlighting
Numlock
LCD display
Separate halves that slide around (a problem I have with the ErgoDox)


Why a built in mouse?
My job involves a ridiculous amount of tasks for which there are no keyboard shortcuts, or for which the 'shortcut' involves hitting tab 10+ times. A mouse gets around this, and typically needs a 1 second movement and a single click before I'm back to typing. Being able to mouse short distances and click once without leaving the home row would be amazing. However, having a touchpad or trackball between the split halves of the board would be an alternative worth trying if a trackpoint cannot be incorporated.
For times where more mousing is needed I'll continue to use my left handed Evoluent V4.
I considered having a separate controller for the 'mouse' but  I don’t have spare ports on the KVM.

What I've considered so far:
An ErgoDox would be a good starting point, but the more I use my one at home, the more I feel there would be issues at work. For instance, I use F2; a lot. I may still end up building another Ergodox for work to tide me over until I can build something more specific.

Keyboard 2 - the supplemental
This keyboard is used to control a laptop while being at least vaguely ergonomic in regards to where I can put the keyboard. I think 'where' equals, on my lap, so thinness is desirable so that it will slide under my desk while on my lap. There is VERY little room, so that may be the first feature to ignore. I use this keyboard for less than 100 words on a typical day, so lack of keys such as Fkeys is a very minor thing. I do want dedicated arrow keys and Context Menu key but could live without those if a mouse of some variety is included in the board itself.

Requirements:
Small
Wireless
60%ish
Good battery life

Wants:
Thin
Programmable/Colemak layout
Dedicated arrows + menu key or built in mouse

Nice to Have:
Mechanical
No slippy bottom surface (I can fix this myself by gluing something to the bottom if I have to)

What I've considered so far:
It occurs to me that my old HTPC keyboard made by Shintaro  (http://www.shintaro.com.au/products/06_keyboards_mice/keyboards/SH-KEYRF/) would fit the bill quite nicely, if it wasn't broken. I did open it up once, but I'm not savvy enough to see where the electrical fault is...
KVM switches: I already use one on this desk. To use it on the laptop as well would backfire as I need to switch keyboards without switching monitors (this would take a long time to explain, just trust me when I say it won't work).
My brother suggested beating the KVM problem by incorporating 2 USB outs into the keyboard and essentially building a KM (no V) switch into the primary keyboard above. That's an idea I need to examine further.



Design
I'm leaving keyboard 2 aside for now, that's likely to be worked on after the primary keyboard has gone through several prototypes.
Here is the layout that I think I want (bonus points to the first person who spots the 'deliberate' mistake).
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/ZusDox%20layout%20v1.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/ZusDox%20layout%20v1.png.html)
This design differs from the ergodox in the following ways:
This image was produced with http://www.keyboard-layout-editor.com/ (http://www.keyboard-layout-editor.com/). Sadly I seem to have hit some sort of limit in that tool as it doesn't like saving my design or allowing me to copy the full Permalink path.
I plugged the resulting 'raw data' into swill's plate builder tool http://builder.swillkb.com/ (http://builder.swillkb.com/) but A) it doesn't handle angled key placement, and B ) It seems to suffer from the same issue that stops me saving my design in the Keyboard Layout Editor.

Have you spotted the mistake yet? No, it's not the lack of a space bar. My space bars are actually the keys labelled Fn. I intend to use Hasu's TMK firmware to dual purpose those keys. A tap = space. Holding the key down = Fn. Also I realize the correct term in keyboard firmware is 'App' not 'Menu' but I think of that as the 'context menu' key so that's what I wrote.

I still have one key unassigned at the moment. That's probably going to be used to fix my mistake (CLUE!).

The reason for increasing the column stagger is fairly simple:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150514_164646.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150514_164646.jpg.html)
That's what my fingers do if I sit on the home row of a typical keyboard. Notice how my pinky is almost straight just to reach the home row?
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150510_102255.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150510_102255.jpg.html)
As you can see in this picture, if I let my fingers curl naturally, then place them on the ergodox with my middle finger exactly on D (S on colemak) this is where the others fall. Ring finger is good, that sits on S (R). Pinky falls on the gap between keys, and the index finger sits on the bottom edge of F (T).
My thumb falls naturally right into the gap between the main keys and the thumb cluster.

I may change my mind in future about the necessity of dedicated F keys, but for now I'm going to assume that over-riding my muscle memory patterns at work would be a bad idea. At home where I don't use F2, F5 and F4 constantly, pressing Fn+2 is just fine. But at work... I don't want to reduce productivity if I can avoid doing so.



In case anyone is curious, here's my current ErgoDox layout:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/ErgoDox%20layout.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/ErgoDox%20layout.png.html)
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Evo_Spec on Thu, 14 May 2015, 05:56:14
Interesting, looking forward to seeing how this turns out
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 16 May 2015, 01:08:42
I planned to make progress in the form of ordering parts today. This is not going according to plan however. I don't have the experience or existing collection that some other members of GeekHack have. Here's where I'm stuck:
Key Caps
I touch type, but my accuracy on Colemak is still low enough that I don't want to be typing client passwords without being able to check what I'm typing. That means I want labelled keys.
Labelled keysets all seem to come with row profiles which would only be appropriate if I was using QWERTY. If I can't find a supplies that will give me row profiles suitable for colemak (or better yet, with custom printed keys) then I'll have to make do with all keys being the same profile. I'm fine with that, but am still having trouble locating a suitable set. I'd also like to try out PBT or ... drat I've forgotten again. Is it DSA that's in the middle between PBT and ABS? I think that's it.
Then of course there's the issue of needing 14 1.5x keys. Signature Plastics sells a 12 key set. Different key sellers have different profiles don't they? So buying that set would lock me into SP and they don't appear to do labelled keys that match colemak.
I seem to be going around in circles.
I heard about the grab bag/crap bag thing. That would help me a lot but they're not available at the moment.

Key Switches
I want MX Clears. Mechanical keyboards shows those are out of stock, which I believe is a near-constant problem. I thought about Gateron, but they don't appear to make a comparable switch (which seems like a business oversight!). So my options appear to be:
Find another store
Buy blues instead (I'm using blues at work currently, no-one has complained. Yet)
Wait an unknown period to purchase MX Clears.

I've tried browns and didn't like them. I bottom out enough with blues, so I want equal or heavier switches. I suppose I could try greens. Hmm. I did want to try those when I first heard about them. This IS a prototype ... (unless the prototype turns out to be perfection. HAH!)
It doesn't appear that they're about to run out of stock, so I'll consider that for a day or two.

Quantity
For one keyboard I'll require 88 key switches. Mechanical Keyboards.com sells packs of 5, 50, 100, 110. I'm going to build two keyboards eventually but the second one isn't even drawn yet, let alone a stable design. I'll go with the 100 pack I guess. Then again, I was talking about making some keys red.
Looks like there's only 8 that I'd want as red, so yes.
The current plan is to buy:
100 MX Green
10 MX Red
But I'll look a bit more for MX Clear before I commit to an order.
The other thing to consider in regards to quantity is am I planning for one keyboard or two or three (curse that 2 desks at work issue!)? I think at present the only sensible option is to plan for 1, otherwise it will become a game of 'how long is a piece of string' with regards to number of prototypes and number of completed keyboards etc. Money isn't too much of a concern here because I'm paying for quality + hobby time + my health, but I'd still like to avoid multiple rounds of postage and so forth.

Any advice on this from experienced hackers on these 3 topics would be appreciated.



Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 16 May 2015, 02:05:35
If I can't make practical progress, perhaps I should do some more theory.
Getting back to the main issue, I have the following set up currently:

1x full KB MX Blue
1x full KB rubber domed awfulness, on a desk shared with other people
1x full KB rubber domed awfulness, used almost entirely for setting passwords a few times a day
In order they're probably used about 78%, 20%, 2%. However, that's in order of keypresses. In frequency of use by day, it's more like 99%, 5%, 50%, because there are many days where I don't have to work on the other desk, but not many days where I can avoid setting someone's PW, and I'm only ever a full day away from my primary board under extreme circumstances.

That shared desk is an issue. The person I shared it with hunts and pecks, so colemak and blank keys are out of the question and there isn't enough room on the desk for multiple keyboards. My current plan is to replace my primary keyboard with the ZusDox, and shift my full MX Blue (or a tenkelyess that I have spare at home) to the shared desk.
That just leaves the password board.

As mentioned earlier, because of what I use it for, it could almost be a 40% board. Hmm, Google image to the rescue. No, not 40%; 60%.
Split halves would be detrimental as I have to move it around a lot and sometimes rest it on my lap. However, a split in the placement of keys on a single solid board isn't a bad thing, especially with a mouse pointer or mousepad in the middle.
Let's think a little more about what keys I need. I use them in this order from most frequent to least.
Alphas
Numerics
Arrows
App/Menu key
Enter
Tab
Del
Backspace
Space   (Yes really, it's this far down the list!)
Alt
Ctrl
F4
Winkey
F2

I don't think I use anything else on it. Certainly not the other F keys nor nav keys. I don't even use () [] or <>. Heck I don't even really use " or .

Are there any existing 60% boards that can switch to colemak? And are there any with mouse pointers already? If not, and I build this myself, that's 60 more keys to think about buying.

From above, 100 Green +10 red, -88 keys used leaves me with 22 keys. 5-packs do not represent value for money, so... 100 green +50 red = 150-88 leaves 62. Can I bear the thought of using keys with no sense of activation for typing passwords?

No
No I can't.

Let's approach this the other way then.
ZusDox requires 80 tactile and 8 soft keys. Zus60 (for want of a better name) requires ... back to google images...
Yikes. There really is no standard here.
ZusMini requires 36 tactile, + 24 other, up to 8 of which should be soft.
80+36 = 116. or 80+36+24-8 = 132.

This isn't really helping to find a match for the order options. Perhaps I'll order:
100+50 tactile (clear or green or blue)
5+5+5 soft (red)

That still leaves the question of creating multiple prototypes. Is it worth just forgetting about 'waste' and ordering 500 switches? Who knows!

Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: rsac on Sat, 16 May 2015, 10:06:16
Quote
Is it DSA that's in the middle between PBT and ABS? I think that's it.
DSA is a key profile, PBT and ABS are types of plastic.

Quote
Keyboard 2 - the supplemental
This keyboard is used to control a laptop while being at least vaguely ergonomic in regards to where I can put the keyboard. I think 'where' equals, on my lap, so thinness is desirable so that it will slide under my desk while on my lap.
Have you seen the Rose keyboard: https://geekhack.org/index.php?topic=71831.0 ?
It seems to use the technique that sypl described in that other thread: https://geekhack.org/index.php?topic=70079.0

That seems as thin as you can go using cherry MX switches.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: neverused on Sat, 16 May 2015, 10:59:56
Look on Rose's thread about 1.5 mm plates, I posted an image of how I partially wired my board. I see no reason why you couldn't make a keyboard that is <7mm high under the switch if using mx cherry switches.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 16 May 2015, 23:06:28
Yes, I'd already spotted Rose's Eagle KB. It's very nice and I'd be sorely tempted to build one if I hadn't already decided upon doing my own designs. Also Rose doesn't appear to have make his designs publicly available. I've just begun mining his posts for useful information.

Today's finds:
'Magnet wire' is a type of wire that you can use without having to use wire strippers. You just burn the insulation away with your soldering iron. That's likely to reduce my build time significantly!
Rose's inkscape tutorial https://geekhack.org/index.php?topic=71863.0

Oh. He doesn't have that many posts, so I've finished already. That's not what I was expecting.

Today's theory:
Teensy 2.0 has 21 pins available. (I think)
ZusDox currently has 14 columns by 6 rows. Plus the thumb clusters. Columns 7 and 8 only have 3 keys, so the spares can be put in the thumb clusters. By my count that leaves 4 extra keys to take care of, or 2/3 of a column.
So let's count that as 15 columns, with the middle one being split across the thumb cluster.
15+6 = 21 pins.
That would leave me with no option for LEDs at all (scroll lock being of particular interest).
So an IO expander may well be necessary, and make the join between halves look less messy.


Quote from: rsac
DSA is a key profile, PBT and ABS are types of plastic.
Hmm. Ok. I could have sworn there were three types of plastic to choose from. Google... OH. I was getting PBT mixed up with POM.
Ultimately I don't think it matters which I choose as yellowing and shine don't bother me sufficiently to matter so PBT will remain on the 'nice to have' list. Availability will be the deciding factor as per yesterday's update.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: rsac on Sat, 16 May 2015, 23:46:33
Today's finds:
'Magnet wire' is a type of wire that you can use without having to use wire strippers. You just burn the insulation away with your soldering iron. That's likely to reduce my build time significantly!
If you read Rose's build log, his experience with magnetic wires wasn't the best. YMMV.

Today's theory:
Teensy 2.0 has 21 pins available. (I think)
ZusDox currently has 14 columns by 6 rows. Plus the thumb clusters. Columns 7 and 8 only have 3 keys, so the spares can be put in the thumb clusters. By my count that leaves 4 extra keys to take care of, or 2/3 of a column.
So let's count that as 15 columns, with the middle one being split across the thumb cluster.
15+6 = 21 pins.
That would leave me with no option for LEDs at all (scroll lock being of particular interest).
So an IO expander may well be necessary, and make the join between halves look less messy.
Teensy 2.0 has 25 available GPIO pins, so you don't need to do any gymnastics with your matrix if you don't want to. But there was some talk about wiring a keyboard with a minimum amount of pins in the CHIP thread if you are still interested (to use more LEDs, for example): https://geekhack.org/index.php?topic=71758.0
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: blawb on Sun, 17 May 2015, 02:20:35
This thread is not only interesting, but has a ton of actually useful information and references. I like it.  :thumb:
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Mon, 18 May 2015, 07:29:01
Very glad to hear it blawb. I was worried that I was being verbose and boring, when my intention is to be detailed and informative. Hopefully it will become useful to others as I accumulate more information and document my experience.

While I may not have made any practical progress yet, starting this thread (and thereby mentally committing to the project) is already being beneficial. It has made me more observant.
As a result, today when I noticed my right hand ring finger hurting, I also noticed what I was doing exactly. It seems that the pain trigger of that RSI(*) is reaching for the enter key with my pinky, or for backspace with ring finger or pinky. This explains why I haven't noticed the same problem at home on my ergodox - no keys cause that movement.

rsac, really? 25 GPIO pins? Hmm. I referenced a diagram when I counted the pins... I've just counted again. Apparently I cannot count :P
It was this one which Rose posted in the simple questions simple answers thread
(https://geekhack.org/index.php?action=dlattach;topic=40501.0;attach=99835;image)
If I've counted correctly this time, there are 24 purple pins. Which is the 25th? No, don't answer that. I should be looking things like that up for myself. The datasheet here must surely have the answer https://www.pjrc.com/teensy/atmega32u4.pdf
Annnd it looks like PD6 is the answer, though I'd need more reading time to be sure (I just don't have the spare time tonight that I want).
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: berserkfan on Mon, 18 May 2015, 09:14:10
Hi, my friend, I don't have time to address so many of the things in your posts now, but I am VERY ENTHUSIASTIC to support you.

I also have small hands and was unable to use the normal ergodox.

Right now I am using this pair of boards with the layouts
 
123456                   7890-=
TABqgfpw                lujy;BACKSPACE
BACKSPACE rastd     hneio'
SHIFTzxvck              bm,./ SHIFT
CTRL pageup pagedown alt num space       space pluskey alt pagedown pageup CTRL

I am using 1u keys, including shift and space and return. It's very comfortable. The main problem I have is with the ' key which I am using a regular keycap on, but which is too low for my pinky.

Didn't have enough time to read all your posts, but I recommend a fully split layout ie two separate parts. That way your keyboard-s match your shoulder width.

Go for teensy 2+. Otherwise you struggle with too many limitations. You can barely do 100+ keys even on a difficult to design 10x10 matrix with room left over for lock lights and LED controls. And I'm guessing you, like me, need a lot of functionality not just typing regular alphas. Do you really want to use 3 layers which requires more memorizing or more labelling? Also if you use 2 teensies, you will be able to do one handed layout usage, you will have spare pins to do more detailed LED control eg program LEDs by rows, etc.

Really hoping that your project will succeed. If it is promising enough I will join your PCB and casing group buy!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Tue, 19 May 2015, 04:27:18
Hi berserktan, welcome to the thread.
I'm a long way from PCBs and cases yet, but hopefully I'll get there before too many months go by. You raised an idea that I had myself last night after going to bed. "If 1.5x keys are such a problem, why not just use 1x for everything?"
That is my current plan for prototype one. I'll have to redraw the layout before looking at case cutting anyway, so there's no rework required. Hopefully this change will make it possible to order parts with out any more fussing around and agonizing over the decisions.
Can't make any progress tonight - it's my dad's birthday.


 
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Fri, 22 May 2015, 20:35:25
My teensies arrived yesterday. One less excuse to delay other purchases.

Getting back to berserktan's suggestions: While I do want a 'fully featured board', I am willing to be practical about it. And to be honest, I'm not losing that many keys anyway. Let's evaluate:
Standard kb is 104 keys.
Tenkeyless boards have 17 less at 87. I've used a tenkeyless before and have no sense of loss of functionality.
I'm building a board with a target of 88 keys.

I could just take a tenkeyless layout and shuffle things around into an ergonomic pattern, but that would leave many keys in hard to use places or result in illogical scattering of arrow keys. Instead some things will be shifted into layers. By doing this I free up some of those 88 keys to perform repeated roles. For instance, if you're mousing with your right hand, you might want to hit enter with your left, so it's useful to have an enter key on the left hand.

A semi-random idea just struck me though: The keypad/tenkey could be shifted to the middle of a split keyboard to make your basic board more ergonomic (separating the alphas to accommodate your shoulders better). It's probably been done somewhere but I don't think I've seen it.

I've been playing with the http://www.keyboard-layout-editor.com/ again. I seem to have hit the same problem as last time where it won't let me save or permalink after a certain point. Possibly that point is a quantity of information, or possibly it's a number of alterations.
I'm also convinced that Swill's plate builder isn't correctly handling 1.5x keys when I put them in. It doesn't appear to treat the center of the key as the spot for the cutout/stem.
Looking at the raw code, I can see that KLE has gone a bit screwy. Thankfully the code is easy enough to understand, so I rewrote each line. This took quite a while and I was learning as I went. Here are the rules that weren't immediately apparent:
Each line of raw code moves the keys down 1 position. If you want staggered keys you need to move them back up with a negative y coordinate
However a 'line' isn't necessarily where you have a carriage return in the code. it's where you have the square brackets and the comma that separates them.
If you ever end up with a line that includes y:-1  then you should take that key and re-write it into the previous line
Key rotation does crazy things to your code if you're not careful. Do those keys last.

I can see why the code works the way it does (by the way, I'm a bit of a progammer, so that helps) but for column stagger, I'm sure there'd be a friendlier way of doing things.

I redid the finger keys this way, then chucked it into the plate builder for confirmation. MUCH better results.
I then added in the thumbs and tried to permalink again. That still doesn't like me. Oh well, here's the raw code; you can see it for yourself this way. BTW 90 keys now :)
Code: [Select]
[{x:2.25},"F2","F3","F4",{x:9},"F9","F10","F11"],
[{y:-0.75,x:5.5},"F5","F6",{x:4.5},"F7","F8"],
[{y:-0.5},"Esc",{x:0.25},"F1",{x:15},"F12",{x:0.25},"Print\n\n\n\n\n\nScreen"],
[{y:-0.5,x:3.5},"#\n3",{x:10.5},"*\n8"],
[{y:-0.75,x:2.5},"@\n2",{x:12.5},"(\n9"],
[{y:-0.75,x:4.5},"$\n4",{x:8.5},"&\n7"],
[{y:-0.75,x:5.5},"%\n5","^\n6",{x:4.5},"_\n-","^\n6"],
[{y:-0.75,w:1.5},"~\n`","!\n1",{x:1},"F\n\n\n\nUp",{x:10.5},"U\n8\n\n\nUp",{x:1},")\n0",{w:1.5},"+\n="],
[{y:-0.75,x:2.5},"W",{x:12.5},"Y\n9\n\n\nPgUp"],
[{y:-0.75,x:4.5},"P",{x:8.5},"L\n7\n\n\nHome"],
[{y:-0.75,x:5.5},"G",{h:1.5},"L+1",{x:4.5,h:1.5},"BkSpc","J"],
[{y:-0.75,w:1.5},"Tab","Q",{x:1},"S\n\n\n\nDn",{x:10.5},"E\n5\n\n\nDn",{x:1},":\n;",{w:1.5},"|\n\\"],
[{y:-0.75,x:2.5},"R\n\n\n\nLf",{x:12.5},"I\n6\n\n\nRt"],
[{y:-0.75,x:4.5},"T\n\n\n\nRt",{x:8.5},"N\n4\n\n\nLf"],
[{y:-0.75,x:5.5},"D",{x:6.5},"H\n0\n\n\nHome"],
[{y:-0.75,w:1.5},"Caps","A",{x:1},"C",{x:10.5},"<\n2\n\n\n\n\n,",{x:1},"O\n\n\n\nEnd",{w:1.5},"\"\n'"],
[{y:-0.75,x:2.5},"X",{x:3,h:1.5},"Enter",{x:4.5,h:1.5},"Del",{x:3},">\n3\n\n\nPgDn\n\n."],
[{y:-0.75,x:4.5},"V",{x:8.5},"M\n1\n\n\nEnd"],
[{y:-0.75,x:5.5},"B",{x:6.5},"K"],
[{y:-0.75,w:1.5},"L Shift","Z",{x:1},"L Alt",{x:10.5},"R Alt",{x:1},"?\n/",{w:1.5},"R Shift"],
[{y:-0.75,x:2.5},"\nFn 2",{x:12.5},"Menu"],
[{y:-0.75,x:4.5},"\nFn",{x:8.5},"\nFn"],
[{y:-0.5,w:1.5},"L Ctrl","Win",{x:14.5},"Win",{w:1.5},"R Ctrl"],
[{r:30,rx:6.125,ry:4.25,y:1,x:1.75},"","Ctrl\n\n\n\n\n\nF4"],
[{x:0.75,h:2},"BSpc",{h:2},"Del","{\n["],
[{x:2.75},"}\n]"],
[{r:-30,rx:13.35,y:1,x:-3.75},"Alt\n\n\n\n\n\nF4",""],
[{x:-3.75},"Insert",{h:2},"Insert",{h:2},"Enter"],
[{x:-3.75},""]

I think I mentioned it previously, but Swill's plate builder has a limitation at the moment - it simple doesn't handle rotated keys. That's fair enough and there are ways around the problem.
All told, that re-creation of my layout took about an hour and a half. That's not too bad when you consider that it's taken me from utter confusion to a plate file that would actually work if sent to a laser cutter.

The next step will be opening up the file in CAD (I'll be trying Inkscape) and rotating the thumb keys myself. That however will have to wait for a few hours while life gets in the way.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: berserkfan on Fri, 22 May 2015, 21:22:44
Here's some shameless self promotion (preparing the ground for June keyboard of the month)

https://geekhack.org/index.php?topic=72100.0

https://geekhack.org/index.php?action=dlattach;topic=72100.0;attach=101319;image (https://geekhack.org/index.php?action=dlattach;topic=72100.0;attach=101319;image)
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 23 May 2015, 01:22:20
Did I say the next step was CAD? I lied.
The next step was ordering switches and caps. I went to a lot of different pages (all listed here https://geekhack.org/index.php?topic=45672.0) and ended up picking http://mechanicalkeyboards.com/?cc=1 for several reasons.
1 they sell caps AND switches (thus saving me from paying 2 lots of postage)
2 they weren't a difficult website to navigate
3 many of the other sites I looked at didn't have a basic white on black printed key set, or if they did, it was out of stock
4 all the colour options might look nice, but I have to allow for putting them on a keyboard that requires 88 or 90 keys, in what is still roughly an ergodox layout.

I dare say I could have found cheaper or more efficient options if I looked long and hard enough, but time is more precious than money. As a result, I have ordered:
108 Keycaps
110 Cherry MX White switches (plate mounted greens were out of stock, along with all the clears)
50 Cherry MX Red switches


Also, in answer to my questions from an earlier post:
Given that I want printed keys, and colemak layout, DSA is the only suitable profile option (without doing a custom order...)
There's no point in buying PBT keys until I figure out how to resolve the 14 1.5x key requirement issue.

My temporary solution to that will be to put 1x keys from the keypad onto 1.5x positions until such time as I get a better solution. That better solution may well involve cutting larger caps down to size.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: naz on Sat, 23 May 2015, 08:27:17
I understand that DSA keycaps are exclusive to Signature Plastic, so you can't get them anywhere else.

by the way what kind of teensy did you choose?? 2.0, 2.0++, with pins, without pins???

Regards

Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 06 June 2015, 05:43:56
I'm finally fiddling with LibreCAD (Which is free by the way). Man this is unintuitive.
I'm very slowly getting the hang of how to do things but I'm sure there are more efficient ways...
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 13 June 2015, 05:00:49
I have too many hobbies, I keep getting distracted from this project. I kept expecting to be inspired when my switches turned up, but that has not happened yet. I've just fired off an email to confirm that they've been shipped...

I was playing around with LibreCAD last weekend and quickly got frustrated. One thing I now realize is that, other than as a learning exercise, there's not too much point working out how to rotate thumb sections etc until I've settled some important questions. If I do it in the wrong order, I'll just end up having to do the diagram modifications all over again.

So:
1) I intend for this to be two separate hand pieces, thus putting both hands into the plate builder is actually detrimental.
2) I'll be using an ergodox style sandwich of acrylic, as that's probably the cheapest and most available substance.
3) I need to decide between the layers of my ergodox (Litster's design, figures below) or using a 1.5 mm layer for the switches so that they clip in properly. I'm leaning towards Litsters because of familiarity and to avoid potential plate snapping. However, As I'm not planning to use a PCB yet, that might be a bad idea.
4) Since I won't be using stabilizers, I'm better off selecting the costar stabilizer option in swill's plate builder as that will be easier to clean up in CAD.
5) I need to source screws before I commit to a hole size. Also the choice of sandwich options above would affect screw size. Another reason for wanting to stick with the 'known' design.
6) Until I settle on a laser cutter, I won't know what kerf value to use.
7) The plate builder (understandably) isn't leaving room for the teensy. I need to allow for that in CAD, and also ensure that I have the necessary cutouts for the USB plug and any holes I need to join the halves.

I tried to d/l and open litster's case design, but the files seem to be blank. I'm very confused. I was hoping to copy the size of the teensy slots from that so that I'm not guessing at requirements.


Here's a bit of a step by step for those of you following along:
My version 2 design with the 2 extra keys.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/ZusDox%20layout%20v2.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/ZusDox%20layout%20v2.png.html)

Un-rotate the thumb and delete one half.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/Step1.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/Step1.png.html)

Take it to plate builder
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/Step2.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/Step2.png.html)

Rotate the thumb section and move it to the right spot, allow for teensy and connection to other half.  Note that these extra holes are only shown here as a guide for the moment, I haven't settled on their placement or size.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/Step3a.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/Step3a.png.html)

This leaves the bottom edge a long way back, but that might be okay since I'm going for a 'full hand' design anyway. I've got decades of being a 'palm rester', and see no reason to break the habit. Only when I'm typing a significant quantity of text on a qwerty board to my wrists float above the keyboard. On a colemak/dox my hand's don't need to move enough to warrant it. Or that could just be in my head...   I might just not be lifting my palms because I'm still insufficiently familiar with colemak.
Getting back to the point, the bottom edge may actually need to be extended slightly. This sounds easy, but I think I need to spend several hours with a LibreCAD tutorial as I'm still finding it near impossible to do things that sound easy in concept. Surely there is a way to move a line by a set amount, not just guessing at the right spot with a mouse.

Continuing my trend of not understanding how to use the plate builder properly, I was wondering where the extra layers got to. Then I scrolled down the web page.
Oh.
DUH.

Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 13 June 2015, 08:42:33
Okay, I found a tutorial by TheReimber that is helping a lot.
https://www.youtube.com/playlist?list=PLB9CB29692D89976A
I preferred this series to the one that was the first result in youtube (by GaryFox). However it's worth watching both as GaryFox covers a lot of other useful topics.

I still say LibreCAD is unintuitive but at least I'm getting somewhere. I've now been able to make the changes I knew were necessary and then print the plate to scale on paper. This is a very important step because I then called on my hobby skills and tools (Warhammer 40,000 in this instance) and cut some of the switch holes out and start TESTING my layout.
First test, are the holes the right size for a switch to click in? Yep.
Second test, are the columns staggered by the right amount for me? Yes, though I suspect I may want to shift the middle finger column by about 0.1x in a later revision. I was sticking with 0.25 increments in the layout editor to keep things simple. I conducted this test both by placing my fingertips in the holes and by actually slotting switches in. The latter option is what I need to be sure of the column shift requirement, but paper simply isn't rigid enough to make it a sufficiently accurate test.
Third test, is the thumb section in the right location? No, not quite. The first angled key is rubbing the nearest straight key. This brings me back to CAD. I've simply eyeballed the placement of that section in CAD. I'll need to find a more accurate way of moving it into the position that I chose in layout editor. I think I can do that now that I understand how to use grid snap and Snap on Endpoints. Not knowing those two things was causing a huge problem before because I could not actually place things precisely.

I first have to conquer my lack of understanding of rotated key placement.
I understand these sorts of lines:
[{y:-0.75,x:5.5},"B",{x:6.5},""],
but not yet these ones:
[{r:30,rx:6.125,ry:4.25,y:1,x:1.75},"",""],
r: is rotation by degrees clockwise (amusing since rotating objects in LibreCAD goes ANTIclockwise)
rx: had me confused, but acts just the same as x:. I'm not sure why it was necessary to call it rx instead.
ry: is more difficult because y isn't measured from a fixed point, it's measured from the previous row.
The corner point of the first key needs to be at X 6.125, Y 4.25. But which corner? Is it the corner of the KEY or the corner of the switch? I believe it's the corner of the key. That makes things awkward because the keys aren't in CAD, only the switch holes. Am I over complicating this? X is X right? It doesn't matter what the measurement is, the important thing is to use the same ratio.
Urgh. I can feel my brain fogging up. I'll have to sleep on it. Part of my brain knows how to do this but it's failing to communicate with my consciousness properly. Too many late nights/bad sleeps lately.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sun, 14 June 2015, 04:09:41
x is 19.5. That's not going to change. It doesn't matter which object I'm looking at.
19.5 by 19.5 is the space that a keycap and its switch sit in the center of.
I fiddled around with LibreCAD all day today. One of the features I want doesn't exist in this tool (at least according to the tutorials). I can't copy data from one layer of the diagram onto another. It might be possible to work around the limitation by making a block of the object and then adding that block to the new layer, but I'll abstain from that for now. Other free tools may solve the problem too (freecad?) but I haven't decided to try them yet.
Also I couldn't see how to import multiple dxf files into a single file as separate layers.

I tried another printout using what I thought would help me line up the thumb cluster perfectly, but it caused two different keys to rub instead. I was still working from KLE to Swill to CAD but I ended up redrawing the entire diagram in CAD. There is a way to script data entry (at least in some CADs), that might have been a better option, and it's something I'll look into if I need to adjust for the Kerf value later.
In the mean time, I knew that to do the above I'd need a very clean set of coordinates in terms of X measurement (that's X as in 19.5, not x as in the horizontal axis). This took me back to KLE and forcing it to draw each keyboard row as a complete staggered row, instead of treating the keyboard as 26 separate rows all with weird modifiers.

This is the raw code I started with:
More
[{x:2.25},"F2","F3","F4",{x:9},"F9","F10","F11"],
[{y:-0.75,x:5.5},"F5","F6",{x:4.5},"F7","F8"],
[{y:-0.5},"Esc",{x:0.25},"F1",{x:15},"F12",{x:0.25},"Print\n\n\n\n\n\nScreen"],
[{y:-0.5,x:3.5},"#\n3",{x:10.5},"*\n8"],
[{y:-0.75,x:2.5},"@\n2",{x:12.5},"(\n9"],
[{y:-0.75,x:4.5},"$\n4",{x:8.5},"&\n7"],
[{y:-0.75,x:5.5},"%\n5","^\n6",{x:4.5},"_\n-","^\n6"],
[{y:-0.75,w:1.5},"~\n`","!\n1",{x:1},"F\n\n\n\nUp",{x:10.5},"U\n8\n\n\nUp",{x:1},")\n0",{w:1.5},"+\n="],
[{y:-0.75,x:2.5},"W",{x:12.5},"Y\n9\n\n\nPgUp"],
[{y:-0.75,x:4.5},"P",{x:8.5},"L\n7\n\n\nHome"],
[{y:-0.75,x:5.5},"G",{h:1.5},"L+1",{x:4.5,h:1.5},"BkSpc","J"],
[{y:-0.75,w:1.5},"Tab","Q",{x:1},"S\n\n\n\nDn",{x:10.5},"E\n5\n\n\nDn",{x:1},":\n;",{w:1.5},"|\n\\"],
[{y:-0.75,x:2.5},"R\n\n\n\nLf",{x:12.5},"I\n6\n\n\nRt"],
[{y:-0.75,x:4.5},"T\n\n\n\nRt",{x:8.5},"N\n4\n\n\nLf"],
[{y:-0.75,x:5.5},"D",{x:6.5},"H\n0\n\n\nHome"],
[{y:-0.75,w:1.5},"Caps","A",{x:1},"C",{x:10.5},"<\n2\n\n\n\n\n,",{x:1},"O\n\n\n\nEnd",{w:1.5},"\"\n'"],
[{y:-0.75,x:2.5},"X",{x:3,h:1.5},"Enter",{x:4.5,h:1.5},"Del",{x:3},">\n3\n\n\nPgDn\n\n."],
[{y:-0.75,x:4.5},"V",{x:8.5},"M\n1\n\n\nEnd"],
[{y:-0.75,x:5.5},"B",{x:6.5},"K"],
[{y:-0.75,w:1.5},"L Shift","Z",{x:1},"L Alt",{x:10.5},"R Alt",{x:1},"?\n/",{w:1.5},"R Shift"],
[{y:-0.75,x:2.5},"\nFn 2",{x:12.5},"Menu"],
[{y:-0.75,x:4.5},"\nFn",{x:8.5},"\nFn"],
[{y:-0.5,w:1.5},"L Ctrl","Win",{x:14.5},"Win",{w:1.5},"R Ctrl"],
[{r:30,rx:6.125,ry:4.25,y:1,x:1.75},"","Ctrl\n\n\n\n\n\nF4"],
[{x:0.75,h:2},"BSpc",{h:2},"Del","{\n["],
[{x:2.75},"}\n]"],
[{r:-30,rx:13.35,y:1,x:-3.75},"Alt\n\n\n\n\n\nF4","Scroll/n/n/n/n/n/nLock"],
[{x:-3.75},"Insert",{h:2},"Insert",{h:2},"Enter"],
[{x:-3.75},""]

I've now cleaned that up to fit in 6 rows +3 for thumbs:
More
[{y:0.75},"Esc",{x:0.25},"F1",{y:-0.75},"F2","F3","F4",{x:0.25,y:0.25},"F5","F6",{y:-0.25}],
[{y:1.25,w:1.5},"~\n`","!\n1",{y:-0.75},"@\n2",{y:-0.25},"#\n3",{y:0.5},"$\n4",{y:0.25},"%\n5","^\n6",{y:0.25}],
[{w:1.5},"Tab","Q",{y:-0.75},"W",{y:-0.25},"F\n\n\n\nUp",{y:0.5},"P",{y:0.25},"G",{h:1.5},"L+1",{y:0.25}],
[{w:1.5},"Caps","A",{y:-0.75},"R\n\n\n\nLf",{y:-0.25},"S\n\n\n\nDn",{y:0.5},"T\n\n\n\nRt",{y:0.25},"D",{h:1.5,y:0.5},"Enter",{y:-0.25}],
[{w:1.5},"L Shift","Z",{y:-0.75},"X",{y:-0.25},"C",{y:0.5},"V",{y:0.25},"B",{y:0.25}],
[{w:1.5},"L Ctrl","Win",{y:-0.75},"\nFn 2",{y:-0.25},"L Alt",{y:0.5},"\nFn",{y:0.25}],
[{r:30,rx:7.125,ry:6},"","Ctrl\n\n\n\n\n\nF4"],
[{x:-1,h:2},"BSpc",{h:2},"Del","{\n["],
[{x:1},"}\n]"]

And that might make more sense to readers without the key labels in it:
More
[{y:0.75},"",{x:0.25},"",{y:-0.75},"","","",{x:0.25,y:0.25},"","",{y:-0.25}],
[{y:1.25,w:1.5},"`","",{y:-0.75},"",{y:-0.25},"",{y:0.5},"",{y:0.25},"","",{y:0.25}],
[{w:1.5},"","",{y:-0.75},"",{y:-0.25},"",{y:0.5},"",{y:0.25},"",{h:1.5},"",{y:0.25}],
[{w:1.5},"","",{y:-0.75},"",{y:-0.25},"",{y:0.5},"",{y:0.25},"",{h:1.5,y:0.5},"",{y:-0.25}],
[{w:1.5},"","",{y:-0.75},"",{y:-0.25},"",{y:0.5},"",{y:0.25},"",{y:0.25}],
[{w:1.5},"","",{y:-0.75},"",{y:-0.25},"",{y:0.5},"",{y:0.25}],
[{r:30,rx:7.125,ry:6},"",""],
[{x:-1,h:2},"",{h:2},"",""],
[{x:1},""]

The reason that I put in that effort is that I could then take those 6+3 rows, chuck them into Excel and split them out into X and Y coordinates for each key. Trying to do that with 26 separate 'rows' was melting my brain. Also, in this process I've managed to fix the thumb clusters to only use rx and ry instead of also using x and y for placement of the 1st key. As far as I can tell, rx and ry are 'rotated block start point', which can be thought of as 'absolute point' rather than being relative to the previous row.

That gave me an idea. One of the things that makes the translation confusing is the 'next row' numbers are assumed automatically by KLE and I was having to put them back in manually in excel. If I use absolute references for each row, that won't be a problem. However, before I went down that path, I tested how they work in the builder. I chucked my simplified row code into Swill's tool and it came out in straight rows instead of being staggered. This might explain some odd behaviour I'd seen previously. I think his tool is only looking for x and y values at the start of the line, then ignoring all remaining changes - because it is expecting row stagger, not column stagger. I know he's rebuilding the tool at present, so hopefully that will be fixed/improved in time to others from having to repeat my manual efforts.

On the plus side, I no longer feel that I'm relying upon his tool to do the whole drawing task for me. I have at least some of the necessary skills now. That could come in handy later on down the line when I consider PCBs. In fact the only thing I'm uncomfortable with CADwise at this point is allowing for the kerf value.

The next point of confusion was that KLE uses Y upside down. Positive numbers move down the page and negative numbers go up. I therefore needed to flip the numbers around to save myself some confusion and to stick to the positive quadrant of the grid in CAD.

Here's the result:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/Manual%20drawing.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/Manual%20drawing.png.html)
The thumb keys fit now - Going to the trouble of drawing it all out in CAD meant that I could move the thumb section with the outlines of keys visible. Actually I used sqaures of 19.5 to do this bit, virtually the same thing anyway. Once I finished the drawing and fixed errors I printed and tested the key placement again. All good. In fact I could potentially bring the thumb keys another mm in, but I'll skip that for now. The flaw with this placement is that there doesn't appear to be enough material left in the triangular gap between certain keys to make the cut without it snapping the top layer during the cutting process. If I'm right I'll deliberately shift the cuts a bit and have that middle piece as something I can glue in after assembly. Otherwise there'll just be a hole there to catch dirt etc.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 20 June 2015, 03:50:24
I'm some-what at a loss today. I'm not sure what I need to work on next. My switches and caps still haven't arrived, and I've received nothing from Mechanical Keyboards to indicate if they've been shipped or not. I just double-checked, the payment has definitely gone through. I've had issues in the past with international shipping, so I hope this is just a case of my order being held up in Australian customs. It's happened before, so fingers crossed. If my order doesn't turn up in the next business day or two I'll email them again, this time directly to their email address instead of using the 'contact us' form.

I've spent some time revising and checking my diagram for accuracy.
I did a couple of extra layers last weekend that I haven't shown off yet:

Wiring diagram (ugly isn't it? :P)
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/Wiring%20diagram1.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/Wiring%20diagram1.png.html)

Riser plates to tilt the halves at 15 or 25 degrees.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/risers1.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/risers1.png.html)

I'm also looking again at plate thickness and screw options.
According to my notes, the ergodox I own consist of 5 plates. 2x 3mm and 3x 5mm. That adds up to 21 mm of plates once you stack them. Yet 20 mm screws hold them together. Something must be wrong with those measurements!
I'm not seeing where I've made any errors with measurements etc, so I'm going to give in and simply ask this time:
https://geekhack.org/index.php?topic=22780.3630

Measuring my existing ergodox indicates a total thickness of 16 mm, but I can't measure the plates themselves easily enough to work out their individual properties. It looks like
2, 3.5, 5, 3.5, 2 which would total 16mm. Calipers and an unassembled board would solve this... I have neither and I'm not willing to pull this apart right now.

I guess the total is more important right now than the individual layers.
If I can source M3x20 screws and screw caps (which is turning out to be way harder than it sounds...) then I should just work with 16 mm total and go from there.
I'm not yet using a PCB in my design so the switch plate should be 1.5 or 1.6 mm to ensure the switches clip in properly.
I'll work with 1.5 for the moment.
I want plenty of room for hand routing wires, so the middle layers need to be fairly thick, with thin outer layers.
Let's say Bottom = 1.5, wiring and component plates = 5, switch = 1.5, top = 1.5.
2x5+3x1.5 = 14.5
I know there's a bit of wiggle room in either direction with the screws and caps that I have on the Dox, so 14.5 may be okay, but could be a little bit too shallow.
Switching to 1.5 mm plates gives me 14.8.
Switching to 2mm for the top and bottom and 1.6 for the switch plate gives me 15.6.
I'll aim for that.

I found what appears to be a one-man one-machine laser cutting business in Perth. That should be ideal for my initial prototyping runs as he/they're not likely to over charge for a small batch. I've fired off an email asking a few questions. If I get favourable answers I'll be sending the diagrams and asking for a quote.

Another thing I tried today was cutting a nice 14mm hole in some scrap foamcore. This confirmed that the switches would wriggle too much if I tried to use that rather than acrylic sheets. Still, if I get unlucky with laser cutters, it's a partial solution as the other layers could easily be made from foamcore instead of acrylic. Thick card could theoretically serve as the switch plate. It's only a backup plan though.

I've also contacted hoggy, and started browsing his posts in search of knowledge regarding keyboard roll angle.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Fri, 10 July 2015, 20:32:06
Fliberty-Gibbet!
My order from MK.com has finally arrived (the delay seems to have been MK losing my order!), but the key caps have row profiles! I swear I picked an option that wouldn't have that.
GRRRRRRRRRRRRRRRRRRRR.

It's not a total disaster, I can swap keys from my existing full board, but damn that's frustrating.

In other frustrating news, the laser cutter I mentioned in the last post only works on Thursdays and Fridays, and has stopped responding to my emails.

Those issues aside, I did make some progress while GH was down. I now have most of the components that I need. Though I'm still missing wire and plates.
I'll contact some more laser cutters today, and experiment some more with foamcore while I wait for responses. It'll be tedious cutting, but at least I can test the layout in foamcore, it won't matter if the keys wobble.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 11 July 2015, 20:19:04
Wow. I seriously underestimated how useful making a prototype in foamcore was going to be. I decided to 'allow for the kerf of my knife' by cutting all of the switch holes too small. This seems to have eliminated the wobble problem to the point where I am now considering wiring this up without bothering with acrylic at all!
I also wildly overestimated how many 1.5X keys were in a standard 104 key board :P. This isn't a problem, and its given me some ideas of how to resolve my earlier problem with sourcing 1.5x key caps. Why not just use 1.25 x key caps in some spots? Sure, it will make the board look a bit ragged, but I don't mind that if it means key sets are easier to obtain.
I also stumbled across this interest check last night: https://geekhack.org/index.php?topic=72241.0 I had no idea that interest checks sometimes happened in vendor forums instead of the interest check forum! That's valuable information.

About 1 hour of cutting:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150711_141044.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150711_141044.jpg.html)

Stabbed myself many times on the pins while inserting these. I'll have to find a better way next time.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150711_141915.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150711_141915.jpg.html)

With mostly the right caps in place
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150711_144309.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150711_144309.jpg.html)

Palm rest
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150711_191024.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150711_191024.jpg.html)

The pins were being a problem because I couldn't just put it down anywhere without risk to the pins and to the surface I placed it on, so I cut another layer for where the wiring/pcb would go.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150711_191034.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150711_191034.jpg.html)

The layers are simply glued together with pva/white glue.

I then used the offcut to help ensure I had all the necessary caps for the other side, and to test out a theory re cap sizes.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/250f61e3-1b63-4e42-81f1-42e68d01a53c.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/250f61e3-1b63-4e42-81f1-42e68d01a53c.jpg.html)

Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: VoteForDavid on Sat, 11 July 2015, 22:06:45
Keep it up!  I don't have much to add besides encouragement, really I'm just replying so I'll see new replies  :thumb:
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Mon, 13 July 2015, 05:35:31
I just had a moment of utter confusion. I was tying on my new board (which isn't wired up) just to experiment with the feel of it. Then, because I actually needed to do something on the computer I put my hands on the ErgoDox and wondered why the dox felt uncomfortable. WOW. That adjusted column stagger makes a huge difference. Every time that I drop my hands on the ZusDox the columns just feel right.

Sunday involved building the right hand in foamcore, then figuring out github basics (a task which was made way harder than it needed to be, thanks to a ridiculous bug in the version I downloaded ages ago. Then I had a look at the TMK firmware and decided I was well past the point of thinking coherently enough to deal with a new programming language.

Firmware and soldering are the next two major steps. I have to figure out how keyboard matrices are read, as I have a horrible feeling that I've got my logic upside down... This will affect how columns and rows need to be wired up.

Thanks for the encouragement VfDavid, it thrills me every time I see that someone other than myself has posted in this thread.

I'm in no fit state for learning C right now (work has been very draining lately), so I'm just amusing myself with Keyboard Layout Editor right now.

Even THIS is probably an improvement over your basic 104 keyboard.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/silly%20ergo.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/silly%20ergo.png.html)
Yuck.

Here's a pic of both hands of the ZusDox 1.0. Anyone guess what I made the palm rest out of?
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20150712_150909.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20150712_150909.jpg.html)
Yes, that's right, I cut up the foam tray which the Ducky keycaps were supplied in. It feels a little dodgy under my right palm, but *shrug*. It'll do on a board made out of bleeping foamcore. hahah. I have some much nicer foam to use when I get a proper case.

Speaking of proper cases, I just remembered to check my email. One of the laser cutting companies has responded with very positive results. I've just sent them a copy of my drawing to base a quote on.

Of course, that leaves me in a slight quandary. Should I finish building the foamcore version, or wait until I've got acrylic? I'll see how things pan out, and try to focus on firmware while I get quotes etc.

Either way, the foamcore version has been extremely useful in identifying potential issues. With my limited supply of keycaps, there are a lot of unexpected gaps. Most of these were caused by the 1.5 X key issue. This has been compounded by my ignorance as I thought many keys on a regular board were 1.5 when in fact they're. 1.25. I should have checked!!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: VoteForDavid on Mon, 13 July 2015, 21:30:04
I'm a little shocked I had never seen a tenkey in the middle of a board before.  Tilt it for use with the right hand, and that might actually be a good location.  Good to use . . . not so much for looking at!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: VinnyCordeiro on Mon, 13 July 2015, 21:46:07
matt3o made a very good tutorial about how to build your own firmware using TMK (http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html). If it seems too complicated, you can also use Soarer's firmware (https://geekhack.org/index.php?topic=50437.0).
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sun, 19 July 2015, 04:49:15
I'm a little shocked I had never seen a tenkey in the middle of a board before.  Tilt it for use with the right hand, and that might actually be a good location.  Good to use . . . not so much for looking at!
Hah, actually I envisioned it as being a flat bridge between two tilted 'halves'. In much the same way as Kurplop has a 'flat' section for the trackball between the halves of his board.

matt3o made a very good tutorial about how to build your own firmware using TMK (http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html). If it seems too complicated, you can also use Soarer's firmware (https://geekhack.org/index.php?topic=50437.0).

Extremely helpful. See folks, this is why I love the GeekHack community. I was planning to just sit down and read the code over and over until it made sense, but now I don't have to.

Status Update
I was starting to wonder if I should forget hand wiring and go straight to PCB. Looking at the code has made it a very simple decision. This WILL be hand wired. I need to get more familiar with how to set up a matrix without trapping myself before I worry about PCBs and their permanently fixed traces. I have a feeling I'm going to be wiring and rewiring (at least in a diagram, if not in reality) many times before I'll have a satisfactory solution to a flippable PCB like the Ergodox. I'm beginning to see why the additional chip was required there.

I got quotes back from one of the laser cutters. When they initially said their minimum order quantity was $88 AUD, I began hoping that this would be a cheaper exercise than I had imagined. Then the first quote came back at $139.90 AUD. PER HAND. Ouch. It took me several minutes to spot that there was an error in the quote itself - they had the plate thicknesses wrong. A corrected quote still comes out to $113.34 AUD per hand. Not cheap, but still much more palatable than the original quote. I've mulled it over for a few days now and about 90% decided to skip acrylic for now. I plan to wire up the prototype on foamcore while I figure out some of the more troublesome parts of the design. That decision has been holding me up because I didn't want to wire it up and then have to unwire everything again to re-mount the switches into acrylic.

I'm still puzzling over how to join the halves and still keep track of the wires. I have some spare cat 5 ethernet cable lying around, That may well become my bridge. I'll cut a length off, strip about 2 inches of insulation off, then use the strands to connect to the teensy or rows as required. That'll give me 8 colour coded wires to work with, and I can easily use a second length of cat 5 to cover the fact I require more than 8 wires to go across.

The other thing keeping me from getting acrylic cut is I'm not sure how to mount the Teensy without having to break-out the USB header the same way that the ErgoDox does. I'm strongly against doing that because I found that to be the hardest part of building my 'Dox by far. Just stripping the cable back to get at the bare metal took hours. Eesh. Also, it seems like such an expensive waste to buy a whole cable just for the end and about an inch of 4 wires.

Speaking of the ErgoDox, there are two resistors on there, but I don't know what they're for. I'd better figure that out before I fry something. I have a feeling it was for LEDs, but I need to check.


With the prompting from VinnyCordeiro, I have now read matt3o's guide. It could use some improvement but it's still been very helpful.
The first stumbling block was:
Quote
Open Makefile file and check the following globals:
He doesn't say what to open the file with, and doesn't make any mention of a suitable program in his Development Environment section. I ended up downloading 'Programmer's Notepad'. That solved this issue.
I then had to read the columns and rows sections several times before it clicked. So glad I've had training both in progamming and computers in general. This would have been very confusing otherwise.
Oh, working through the code made me realize I'd drawn my wiring diagram with a wire going to D6, which is the pin that controls the LED on the teensy. Oops. Fixed. I'd also somehow labelled one of the pins C8. They're only numbered from 0-7, and I wrote 8 multiple times before I said "wait a minute, where did 8 come from?????"  Fixed...

I've now created my matrix and my layers and sorted out all the pins that each row and column is attached to. I'm not certain that I've got the layer switching keys right. I was expecting something more familiar to the 'push/pop' terminology that was used on MassDrop's site for the ergodox configurator. Not being able to load and test the firmware is becoming a problem now so that'll spur me on to get soldering.

That's enough hours for one day. I'll leave compiling to another day. Possible after wiring is done.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 25 July 2015, 04:39:33
I was all set to start soldering my diodes today. Then I realized that I don't know which way they should go.
I couldn't find an explicit answer to my question, "Which way do the diodes need to go for Hasu's firmware?", but I did find enough threads and pictures all showing the same thing to make me comfortable. Also, firmware can be altered if I get things backwards.
So the answer I'll work with: Diodes run across the rows of the keyboard, with the cathodes on the right hand side. That is, there's effectively a line of wire running the length of the board, and the diode sits between the switch and this wire, preventing current from going into the switch.
I'm about 2/3 through soldering the left hand board (not counting the teensy, which looks scarey). Learned several lessons. Looks like I need to revise my plate design to allow more room for wires to travel under the bottom keys. A PCB wouldn't need the extra space of course...
It's much easier to solder the diodes onto the switch pins if you wrap one or more loops into the anode leg first, then slide it down over the pin. That way it holds itself more or less in place and gives the solder a circle to pool in not unlike the way it pools in a hole of PCB.
The wire strippers I bought rock. Definitely go for the trigger style, don't waste time with the ones that look like scissors.
I'm sure there has to be a better way of doing the column wires. I've been cutting a length of wire long enough to cover all the pins in a column, then carefully cutting lengths of the insulation and dragging them along the wires to line up the gaps with the pins. Then soldering the edge of the wire to the pin (Not easy). This looks like examples I've seen on GH and DT, but I'm still convinced there is an easier way.
I only bought 4 m of wire, thinking that was a lot more than I required. I'm going through it pretty fast! Probably should have bought more...
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sun, 26 July 2015, 05:18:10
Soldering is definitely something you get better at with practice.
I finished the columns on the left hand and done all the columns on the right hand in about the same time that it took me to do half of the left hand columns yesterday.
Yesterday the diodes took me most of the morning. Today they've taken only a couple of hours.
Doing the column wires first works much better for me than doing the diodes first. I now work as follows for a column:
1) cut short bits of wire for each of the connections (about 4 cm each, but each one is just an estimate)
2) strip ~9mm from both ends
3) using fingers, twist ends to 'braid' them
4) still using fingers create a hook in one end, making sure to work with whatever curve is in the wire currently so that they'll lie flat
5) place the hook over the 'top' pin, turn until it's almost but not quite pointing straight down to the next switch
6) using needle nose tweezers squeeze the hook until it completely circles and grips the pin
7) repeat until entire column has one wire on each pin
8 ) solder these 'top' connections in place
9) again using tweezers wrap the other end of wire around the next switch on top of the wire already on that pin.
10) solder these connections
(http://i135.photobucket.com/albums/q128/Zustiur/20150726_164550.jpg) (http://s135.photobucket.com/user/Zustiur/media/20150726_164550.jpg.html)

For diodes, it's a similar process:
1) use scissors to cut between each leg on the red side of the paper
2) pull enough diodes out of the white side to do a row
3) put a loop into the white led side, cut off the excess
4) pull off the red tag
5) slide loop down over pin, double checking that you haven't messed up the rows
6) repeat until the row is in place
7) solder the diodes to their looped pins
8 ) using tweezers as an anchor point, bend each cathode leg towards the next cathode leg in the row. They won't all reach, but most will
9) tin each leg where the joins will happen
10) reheat the solder while holding one leg with tweezers, hold in place till the solder dries
11) use offcuts to join the legs that weren't long enough
(http://i135.photobucket.com/albums/q128/Zustiur/20150726_164417.jpg) (http://s135.photobucket.com/user/Zustiur/media/20150726_164417.jpg.html)

Notes for future revision:
* I haven't had the same problem with the cut out shape on the right hand because when I was cutting it out I got lazy and cut a straight line from Ctrl across to the thumb section. This is SO MUCH EASIER.
* For some unknown reason in my wiring diagram (which I am sticking to carefully) the thumb sections have columns 0,1,2,4,5,6. This would have been easier with 1-6 instead. i.e. connect 3 but don't connect 0.
* 4m is enough wire to join up all the switches but not enough to then connect to the teensy.
* for the process of hand wiring, diodes on the columns and wires on the rows would work better/be easier

Two days well spent. (?) Note this is upside down, so the left hand is on the right.
(http://i135.photobucket.com/albums/q128/Zustiur/20150726_173258.jpg) (http://s135.photobucket.com/user/Zustiur/media/20150726_173258.jpg.html)

I've checked with my cheapo multimeter and fixed one short. Couldn't find any more.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Tue, 28 July 2015, 03:41:24
Yesterday's lessons:
1) Ethernet cable is NOT a substitute for hook up wire. The insulation on each wire is very thin. this makes it nigh impossible to strip, even with awesome wire strippers. Also because it is so thin, it melts very easily. I managed to fuse two wires together before I gave up and desoldered it from the teensy.
2) If you end up with a pin hole full of solder, it is possible to salvage the situation by heating with one hand and inserting a wire with the other (not easy, but possible!)
3) When installing wires in a teensy, it is best to work throught the pins in order (right to left in my case, being left handed), rather than to try to do them in order of your columns or rows
4) 100m of wire costs $15 AUD. I was too stubborn to buy multiple reels of 100m, so I'm now stuck with one colour. This will get confusing. It's funny when you compare it to how much I expect to spend otherwise, why does another $15 bother me so much? I guess it's the thought of having so much unused wire left afterwards.
5) Helping hands aren't just awesome, they make the impossible possible. If I find myself having to repeat the soldering of a teensy excercise, I may invest in a second set as the positioning of the two alligator clips is too wide for working on a teensy
6) Don't solder too late in the day (9 PM) as your coordination and concentration will both be impaired
7) Thinking about keyboards makes it hard to sleep/hard to get back to sleep if you wake up at 4 AM


I have joined the teensy up to the Left Hand. Every step of the way I've had a feeling that I've misunderstood how energising the rows and reading the columns works (or is it the other way around?). Now we put that to the test.
Step one, check for shorts... I don't even know where to begin because I've lost confidence in my knowledge of where the energy should go.
Step two, make sure I haven't fried the teensy. It still blinks. Seems good.
Step three, put the teensy where I want it to be and see if the light is visible. Yes, but not really. I'll have to cut/drill another hole in the foamcore to make it visible. Possibly at an angle.
Step four, compile the firmware... umm. Back to research!

Also, at this exact point, I have/had no idea if the code would even work with only one hand. I think it will, but I really don't understand well enough yet.

First thing I notice when re-reading Matt3o's guide? I misread the first instruction. That does not bode well.
Better check all the other instructions. Wait. Where has my matrix gone????
Somehow I got confused and saved several files in the wrong directory. Finding them didn't take long. Just look for the most recently updated files.
This is why we double check things before trying to run or compile new code.

Ok, I think all my files are good enough to compile now. Matt3o says 'Exit. Open the terminal'. Umm. 'The terminal'? I'm going to assume that's a linux term for command prompt. Indeed, going to the right directory and typing 'make' gives me a suitable message. Unfortunately 'make -f makefile' gives an error message:
make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4217b3)
A little research and test of 'make clean' suggests this is because I installed the make software in "Progam Files (x86)" (yes I typo'd when installing) and the tool doesn't like having brackets in the path.
Chucking "SHELL=C:/Windows/System32/cmd.exe" as the first line of makefile got past this problem.
I ran make clean and got a screen full of garbage I don't understand. Worryingly the first two lines were "The system cannot find the path specified."
I proceeded on the assumption that it couldn't find the files [to delete] because I'd not made them yet.
Sadly no.
Quote
D:\Programming\Shared Projects\tmk_keyboard\keyboard\ZusDox>make -f makefile
The system cannot find the path specified.
The system cannot find the path specified.
ECHO is off.
-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

-f was unexpected at this time.
make: *** [sizebefore] Error 255

The comments Hasu has in the top of makefile don't list 'make -f makefile' as an option.

More research and fiddling.
My makefile still referred to keymap_common.c instead of keymap_zusdox.c, but that wasn't causing the issue. In fact there appears to be an IF statement to catch that very thing.
I get the same error when compiling someone else's code (hhkb), so I don't think this is actually an error with my edits.

I tried downloading MHV AVR but that gives me the same error.

Google is failing me and I haven't been able to locate the answer on GH either. I'm stuck!


Today's other lessons:
1) My wiring plan for the teensy was insane for hand wiring. I might actually be better off mounting the teensy upside down and pressing reset from underneath. Except then the LED would not ever be visible.
2) It's hard to concentrate and be productive when your feet are freezing. Comfort is important in any work situation.
3) Sometimes you have to stop trawling Google and just ask for help.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Tue, 28 July 2015, 13:56:54
I use enameled Ψ 0.2 or 0.15 mm copper wire (some call it magnet wire). It is easy to use and you just burn through the insulation where soldering (no need to strip insulation). If you want to try this sometimes then there are few things to remember:
I played with ergodox firmware few years ago. At that time the firmware would not initialize I2C (and would not boot) if the left hand side was not connected. If this was not improved then one side will not work alone. Though, you can just comment out the I2C initialization for tests.

Make process should not be catching any exceptions. Looks like some problem with your installation.
GNU make know -f option (i.e. your command line looks ok), microsoft nmake knows /f option option instead. Though the firmware probably excepts GNU make.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Tue, 28 July 2015, 23:09:49
At the suggestion of VinnyCordeiro, I installed cygwin and tried make from there (Note you only need to type 'make' if you're in the right directory. It looks for makefile by default).
New error! yay, that's helpful because it means I'm no longer having issues with the compiler itself. I won't paste it all but there was a lot of this:
keymap_zusdox.c:35: error: 'ESC' undeclared here (not in a function)
keymap_zusdox.c:35: error: 'F1' undeclared here (not in a function)
I fixed these first by checking keymap_zusdox.c and putting in a line that was missing 'KEYMAP_ANSI('

I was also getting 5 of these:
keymap_zusdox.c:22:76: error: macro "KEYMAP_ANSI" passed 90 arguments, but takes just 61
Which means exactly what it says, I've defined 90 keys, but told it to look for 61. It took me a while to figure thes out but it's because in keymap_zusdox.c I'm referring to keymap_ansi, but in keymap_common.h I was working in keymap, not keymap_ansi.
I removed the _ansi references from keymap_zusdox.c
Now it tells me I have 90 instead of 89, so I must have missed a key in my mapping somewhere. This is starting to make sense!
Yes, there was a key missing from my thumb row in the .h file

Next errors:
keymap_zusdox.c:12: error: 'KC_PSCN' undeclared here (not in a function)
keymap_zusdox.c:22: error: 'KC_TNRS' undeclared here (not in a function)
keymap_zusdox.c:32: error: 'KC_NNCK' undeclared here (not in a function)

TNRS is a typo, it should be TRNS short for transparent.
NNCK is also a typo, I meant to write NLCK for numlock
PSCN is a guess on my part, not a typo. I want printscreen, but what is it's 4 letter code? A quick check of docs\keycode.txt informed me that it was PSCR. Also straight forward to fix, except the error suggests it's on line 12, when in fact its on lines 6 and 36.

With those fixed, I ran make again and was surprised at how long it took. While not that long in reality (about a minute) I was expecting under 20 seconds (for no reason, just what I imagined).

New question. What happens if you have two teensies connected when you run teensy loader?
I decided not to find out.
Rack brain for where I left teensy loader.
Unplug ergodox
plug zusdox
press reset button, drag on .hex file... download error. Press download again, Download OK. Reboot teensy.
Wait patiently for USB drivers to install.

IT WORKS.
mostly.

Capslock doesn't work, but TAB, shift, escape and control do. I'll figure that out later. Also it's a bit hard to test F3 and F6 but they're low priority right now.

This means I can stop worrying about my understanding of the wiring. Huzzah!

Back to soldering!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Wed, 29 July 2015, 02:49:31
This message has been brought to you by the power of ZusDox!
F1 F2 F3 F4 F5 F11 print screen
`12345667890=
qwfpgjluy;\ and fn1
arstdhneio' and enter
Zxcvbkm,.?
control, win, fn0, alt, fn3, space, alt, app, win, control
backspace, delete, home, end, pg up, pg dn, insert, fn0, enter

All of those are working on the first full test. Not sure how to test the other F keys, but they're in rows and columns that are working so I'm pretty confident.
Scroll lock seemed to work once only. LED not showing. Caps not working. One column not responding but it only has 3 keys. I'll figure that out shortly. All in all I'm pretty chuffed right now :)
I clearly made an error in my defining of FN keys because they're not behaving the way I thought they would.
Also mouse keys work. I keep hitting wrong keys, it will take a while to adjust to the new column stagger but boy does it feel nice to have my fingers in their natural relaxed position be perfectly aligned to the home row. Not really noticing any issue with the wrong row profile on keys that had to move for the sake of colemak. I'm more noticing the relocation of esc from its position on my ergodox because I keep hitting right alt when I want a comma and my instinct is to hit escape next.

Once I iron out a couple of issues I'll take another look at the construction side of this prototype as there's a lot of exposed wire right now.

Pics coming soon.

[Edit]go to https://geekhack.org/index.php?topic=34670.msg641440#msg641440 and download the switch tester. Fkeys tested!
Still having problem with caps key and LED. Everything else fixed.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Wed, 29 July 2015, 23:05:58
Done. Everything is working. Capslock continued to be a problem until I finally diagnosed that it was a cold solder joint (i.e. not soldered properly) and re soldered it for the 2nd time. For a while I thought I had actually snapped the pin to the switch itself. Fortunately not.
The LED took me quite a while to figure out because I don't think that matt3o's example is correct. Here's what I ended up with:
Code: [Select]
#include <avr/io.h>
#include "stdint.h"
#include "led.h"

void led_set(uint8_t usb_led)
{
    if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
        // output low
        DDRD &= ~(1<<6);
PORTD |= (1<<6); //Switch LED On


    } else {
        // Hi-Z
        DDRD |= (1<<6);
        PORTD &= ~(1<<6); //Switch LED Off
    }
}

And here are the promised pictures.
The ugly underbelly:
(http://i135.photobucket.com/albums/q128/Zustiur/20150729_151808.jpg) (http://s135.photobucket.com/user/Zustiur/media/20150729_151808.jpg.html)
My riser system for getting the 15 degree tenting.
(http://i135.photobucket.com/albums/q128/Zustiur/20150730_110304.jpg) (http://s135.photobucket.com/user/Zustiur/media/20150730_110304.jpg.html)
The finished product.
(http://i135.photobucket.com/albums/q128/Zustiur/20150730_114316.jpg) (http://s135.photobucket.com/user/Zustiur/media/20150730_114316.jpg.html)

Of course 'finished product' it a bit misleading. I still want to put some more cardboard or foamcore on the bottom to protect the wires and I still need to cut a slot to expose the reset button and LED, but in essence, it is a finished working design.

Time to start revising my designs. The first issue I should tackle is the risers aren't wide enough, so the whole board wants to shift under my hands. This isn't helped by the wires all pushing and getting in the way. Unfortunately I've used up all my foamcore, so any replacement will require a trip to the art supply shop. I really didn't expect or consider this problem when I designed the risers, so all in all, doing the first prototype in foamcore has been extremely helpful and saved me a lot of money on faulty designs!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: VoteForDavid on Thu, 30 July 2015, 20:07:44
I know (first-hand) it makes things more complicated, but have you considered a curve?  Loosely cup your hands as if they were on a keyboard, and rotate them so your palms are facing each other and relax the hand a little.  Notice your fingertips describe something like an arc.  Look at the tips of the fingers on the smaller left hand in this picture I found on a Google search:

(https://hiddentreasuresinhonduras.files.wordpress.com/2014/03/zzzz.jpg)

Obviously it's not required, but since you're doing something custom to suit yourself, maybe a little curvature in the tenting like on a Microsoft Natural keyboard is worth consideration?

See the 2nd and 3rd images down from the top:

(http://i349.photobucket.com/albums/q377/StockersPics/Curves.jpg)

$0.02
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Fri, 31 July 2015, 03:07:41
If curving a plate at all then why no to go go all the way to a Kinesis or Maltron like plate?
I would say that the best advantage of flat plate is that one can put switches on a PCB.
But if one is using manual wiring and has an access to a Reprap then is quite cheap to get a curved plate.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: VoteForDavid on Fri, 31 July 2015, 21:06:32
A curve on one axis can be done by bending a flat part.  A compound curve is . . . not as simple.  The troll on my shoulder says, "plus a single curve still looks like a keyboard whereas the Kinesis looks like a prop from Star Trek" but of course I would never say something like that! ;)

A PCB could for sure be used with a curved plate.  With as small a curve as on the Microsoft board, it might not even require very much fiddling to get the hole spacing right.  I think however that the time required to design a PCB with proper spacing for curves, would be less than the time required to hand wire a single board.  If making many boards, a curved PCB is definitely do-able, and a bunch of smaller PCBs would be easier to do than one big one.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Sat, 01 August 2015, 07:48:01
A PCB could for sure be used with a curved plate.
Yes, Kinesis does curve their PCB in both directions.
(http://cdn-ak.f.st-hatena.com/images/fotolife/s/squidapache/20130921/20130921132905.jpg)
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 01 August 2015, 08:15:52
Eesh, set the goal high why don't you?  :eek:
Curves aren't going to happen in the materials that I'm using/planning to use. Nor do I have access to a 3d printer. I'll bear it in mind however as a future possibility. I've never even looked into 3d printing. Hmm. No, not until I have a bigger house. Bad Zustiur No more space taking stuff!

In the mean time I think that the properly calibrated column staggering removes most if not quite all of the benefit of curvature. Hand wiring was always meant to be a stop gap thing. I'll get PCBs done eventually but I understand they're expensive and I needed to make sure I knew what I was doing first. Looking into PCB design is next task on my list while I spend time experiencing the prototype.

Speaking of which, some observations;
I made the wire between halves a bit too long and it doesn't retract in any way. I'll try to avoid that next time.
Raw foamcore edges squeak and squawk when the risers slide across the desk. Which it does all too often as it is really light and has no grip. I'm wondering about creating a flat base piece to prevent that and give it some more rigidity. Some sort of rubber feet or grippy pad would also be sensible.
I'm a long way from being used to the new column stagger and getting a lot of typos.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Sat, 01 August 2015, 15:32:46
Sorry for being off topic. I just think that if curving the plate at all then it should be done the full way.
I did not want to indicate that you should change your plan with your current ergodox mod. But if you would want to change then it should be done right not half the way the MS "ergonomic" keyboards do.
I like people doing their own keyboards. Good job so far!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sun, 02 August 2015, 00:41:05
Oh I appreciate the input and you really weren't off topic per se. Curvature isn't out-of-bounds, it's just ... premature. I'll probably start coveting curved boards in a year or two.

I fixed a minor issue today. The padding I put down for the palm rest on the left hand was not deep enough to cover the natural resting position of my hand, so I glued another strip of foam in place.
I'm getting really sick of the halves sliding around as I type. The sooner I find a solution to that the better.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Sun, 02 August 2015, 03:21:24
I glued rubber pads on the bottom of my keyboard. That was enough for me.
If it is not enough you can consider using softer rubber and putting a glass plate below the keyboard, or even adding some weight to the keyboard to increase the friction.

The more radical options are sucking discs or velcro.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Mon, 10 August 2015, 04:25:39
I finished my annual leave and went back to work today. Using an ergonomic keyboard felt like an instant improvement. However one of my fears has been realized - the KVM switch I use at work does not properly support this type of keyboard. Some background for those that have not used them before:
Keyboard-Video-Mouse (KVM) switches allow you to have one keyboard and one mouse and one monitor to connect to multiple machines (up to 4 in my case). They are typically one of two types. The first type has a dedicated box with buttons on it to let you switch to each machine. The second type (which is what I have) listens to the keyboard for a particular combination of keystrokes (in this case scroll-lock scroll-lock) to know when to switch between machines.
The way they handle that is to mark one of the USB plugs for specific use by keyboards. By plugging a regular keyboard into that port it will filter out the double scroll lock command and a number + enter key and send through any other keystroke that you type. Unfortunately, the only data that the switch will send through from that port is keystrokes. Anything that isn't a regular key (such as macros) won't get through. So when I plug the Zusdox into this port, windows doesn't even detect it. Drat.
The second port on this switch is what we call a 'passthrough' port, so anything will work in there exactly as if it was plugged into the computer directly. The ZusDox works just fine if I plug it into that port, but the switch won't detect the double scroll lock command from there. So to keep using it I'd need to keep a regular keyboard plugged into the switch as well as my ZusDox, which means I don't have a spare port for the mouse.

There are several solutions to this, but I'll need time to consider the options. I think the easiest option would be to buy a new KVM switch that has dedicated buttons rather than listening for a key combination. That should in theory have full passthrough on all ports.
The immediate option which I'd like to avoid is to have two keyboards on my desk, one purely for scroll-lock+1234+enter and the other being the ZusDox, then have a separate mouse dedicated to each computer. I'll probably do something like this in the short term but it's hardly ideal. Either way it's a lot of desk real-estate being wasted.
If anyone can suggest a way of handling multiple outputs from one keyboard (essentially putting the switch box INTO the keyboard), I'd like to hear it.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Mon, 10 August 2015, 06:41:58
I do not know about a keyboard with embedded KVM.
I use software KVM (synergy). Good enough for me.
I doubt that macro behaves differently than a sequence of regular keys. The only difference I expect is that macro keystrokes are very quick. My guess would be that your KVM is processing all keystrokes while searching for the NumLock NumLock <Number> Enter sequence and it is not quick enough to handle the quick keystroke sequence in a macro.
As for as windows not even detecting it. Is your firmware in N-KRO mode. Maybe just your KVM switch is not good enough to handle anything more advanced than a boot keyboard. If you are not using 6KRO, then try it first.
Looks to me that this should be most easy to fix in the firmware if you know C programming.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Fri, 14 August 2015, 06:01:41
Alas software KVM will not do for a number of reasons. Primary reason being that the computers in question are on totally different networks.
I recall reading something about the TMK firmware not working under certain circumstances, if mouse keys were enabled. I have mouse keys in my firmware. It's possible that removing them will resolve the issue but I have not tried that yet.

I've now used the board in my workplace for a whole week. I've made a number of observations, several were totally unexpected. In my head I've been tweaking the design and also considering going back to square one and designing from scratch rather than using the ErgoDox as the starting point.

Observations:
* The ctrl key needs to move down 0.25-0.5 and/or be a taller key in order to more comfortably use it as a palm key the way I'm used to doing.
* The fact I'm still using qwerty caps on a colemak layout means I occasionally find the wrong home keys. I need to remove the nubs from F and J. I think this may also be contributing to my hitting the bottom row when I want comma as the key below it is a 'row 5' profile, making it far taller than the comma key.
* I need to make the nubs on T and N bigger/more tactile. I simply used a line of superglue with nothing attached. On my ErgoDox I actually glued down tiny pieces of plastic rod (from model making). Somewhere between these two would be best.
* I also placed dots of super glue on the other home row keys as I was having trouble with correctly orienting my other fingers. This works but to do it more consistently next time I'll 'paint' the glue on with a toothpick or something instead of simply using the tube to place the dots.
* Rather than sticking to the ErgoDox 1.5 key for `~ and '" and += keys, I'll make them standard 1x keys. This means I can use standard caps, and also make room to put _- into it's normal place next to +=
* The underscore key is a real problem. If using the number row for maths (eg Excel formula) it's annoying to reach where I have it now (inner most key, number row, right hand). It's even more annoying when I want to hyphenate in the middle of typing a sentence like - this or-this. I'm sure it will be even more aggravating next week when I'm working for a client where I frequently type things like this: SERVER_C_FOLDER 1 NAME_FOLDER 2 NAME_FOLDER 3 NAME. The relocation mentioned above may help, but I'm planning to also place it on the navigation layer on the comma key.
* When using mouse keys I keep hitting comma instead of down (e), yet when I'm using the same keys as navigation keys I don't do this. Continued use will hopefully train my brain not to associate mouse movements with keypad style arrow placement.
* Using mouse keys is rarely a good substitute. I really want that pointing stick now.
* Even if I build a PCB I plan to continue using through hole diodes as they're far easier to replace than SMDs. This was something I learned from the ErgoDox, but I only realized it today when I was smiling about how nothing has broken yet. It's so much easier to get a good connection when you have a lead. I'll leave SMDs to their intended place: pick-and-place machines
* Having column stagger for F# keys doesn't really achieve anything and continues to confuse me. I think I'll remove it entirely and go back to having that as a straight row
* The wire length I left between halves is WAY too long and is causing issues. Because of it, the ZusDox is as wide as a full 104 keyboard. Not helpful for mousing. It also is springy enough to resist being put into the inward angle I require to eliminate wrist discomfort from pronation/ulnar deviation
* The padding I used is not quite soft enough. I have an alternative (I forget its name) to try but I don't think that will be much softer. Also I've used the alternative in the past and found that it starts to irritate my skin if I use it constantly (month after month). I'll look for another option and also look into covering it with some sort of fabric
* The column stagger is great but I think that the pinky columns could move up about 0.1x
* My wiring was needlessly long and complex. This was caused by my not being sure of how it all works. I have a much better grasp of things now and could do better with shorter runs
* For use in my regular job tenting is detrimental! There are too many situations where I need to press keys on the left half while using a mouse (I use a left handed mouse at work). I'll see how it goes next week while working for the other client.
* My risers for tenting are also a problem due to basic postural ergonomic issues. That is: Desk height + keyboard thickness + risers - max chair height = too much of a gap between my legs and the keys. This results in raising my arms up past the comfy 90degrees and also means that I'm bending my wrists forward/down. If I can find one, I want to try a 'stable table'. I'm not sure if they exist elsewhere in the world. It's a cushion you put on your lap with a flat plastic surface on its top. They're intended for eating meals while watching TV. The keyboard would go on that and be stuck down somehow to ensure it doesn't move around.
* I'll have to bite the bullet at some stage and remap my fn modifiers. I chose not to on this build because I didn't want to be relearning that while also dealing with so many other changes. I simply use the navigation layer too frequently to have it on the key below x. It needs to be a more comfortable thumb position.
* 19.05 from key to key is more than you actually need. Between columns I think it's fine, but reducing the gap between rows may be beneficial.

I've been reading https://geekhack.org/index.php?topic=55099.0 (https://geekhack.org/index.php?topic=55099.0) (Extinct web pages about) extinct ergo keyboards and rereading https://geekhack.org/index.php?topic=62848.0 (https://geekhack.org/index.php?topic=62848.0) fixing the ergodox thumb section. These threads are filling my head with awesome alternatives. As a result I've finally done 'step 0' of designing an ergonomic keyboard: I've traced my hand and all the finger positions that I can comfortably reach without moving my wrist. I plan to use this as the starting point for a future version (possibly as early as version 2, but more likely 3). I suspect it won't look so much like the ErgoDox after that. I may need to come up with a new name.


p.s. can anyone please tell me the forum code for naming a hyperlink so that you don't see the path?
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: vvp on Fri, 14 August 2015, 08:50:53
Code: [Select]
[url=http://geekhack.org/]geekhack[/url]
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sat, 15 August 2015, 05:17:07
Thanks vvp. I'll try not to forget again.

I fiddled around with my hand diagram and key caps that I'd pulled from my Leopold 104 (which I've brought home from work now that the ZusDox 1 is at work). By my count, there are 33 positions I can tap without moving my wrist and without pulling my thumb under my hand (a movement I'm beginning to dislike). Multipling that by two hands should give 66 keys you can press without moving wrists or palms (for those of us who plant their palms down and type from finger movements primarily). 66 is a sizable number, but considerably fewer than the 90 keys of ZusDox 1.

It occurred to me late last night that I should spend some time getting acquainted with the masters of layering; the 40% board layouts. So I did some reading and some googling. I think it's a niche within a niche within a niche because I didn't find a lot, but what I did find was still useful. Particularly the fact that people will shift all symbols to a secondary layer, including comma and full stop/period. I hadn't considered things that drastic before. Someone mentioned LShift+RShift = caps. That sounds sensible. No mention of firmware was made though so I'm not sure how to achieve that.
After reviewing my existing layout and tweaking it with some of the discoveries from the last week I took what I learned into KLE (http://www.keyboard-layout-editor.com/#/) and started playing with the JD40 preset. For ease of play I made all of the keys 1x by 1x and filled out the grid where necessary. This gave me 4 rows of 11. That's no good, we have two hands so an even number makes sense unless you're sharing keys in the center line, so I made it 4 rows of 12, giving me 48 keys to work with.

I set to work populating the keys with values using the different label positions to denote layers. The result was very complex and I hadn't put odd keys like Pause in. It was getting really confusing so I started again, this time with 16 rows, separated into groups of 4 to show 4 separate layers of 48 keys. It's the same design, but much easier on the eyes.

Lack of ergonomic shaping notwithstanding, I'd be really tempted to try using this layout. I can think of a few places and times where I'd be happy with a small board like this, but my regular job isn't one of them.

With my new-found knowledge and experience, it's time to reexamine my original goals (post 2)
Work Situation
I work for a number of clients in an 'IT Security Administrator' role. In other words, I spend most of my time making changes in Active Directory and some form of request handling system.
Client A - Under normal circumstances I spend 80-100% of my day working for this client
Client B - Usually an hour or so in the afternoon, but not always.
Client C - I work from a different desk for this one because they refuse to have their equipment on the same desks as our other clients. They apparently fear that cables will be plugged into the wrong network... The less said about my opinion of this client the better. Usually if I do anything for this client it's just an hour here and there. Periodically they get me to do project work which can take days, weeks or months. I'll be starting one of those multi-month projects tomorrow.
Clients D through G - I only work on these as backfill for someone else.
And of course there's our own internal network in addition to all of these. I don't "Do Work" here, but deal with internal email, HR stuff etc etc

Client A is on their own network. I access it from Machine A.
Client B is accessed via VPN from Machine B, and occasionally Machine D (a laptop). I only use the laptop if there's enough work to warrant keeping a VPN session live for an extended period. Normally I just VPN from Machine B and disconnect the VPN 5-10 minutes later. Look up the next job, connect, disconnect, repeat until there are no more tickets.
Client C as mentioned is on a different desk where I use Machine C. This desk is shared with other people who also help out on that client.
Client's D through G are accessed in the same manner as client B.

We'll ignore Client C and Machine C for now, there isn't really any special requirements from them other than needing easy access to the underscore key. If I'm there for short periods I can make do with QWERTY. If I'm there for extended periods I'll relocate Keyboard 1.

Keyboard 1 is/will be attached to a KVM switch that handles Machines A and B, as is my left handed Evoluent mouse.
Keyboard 2 is/will be attached to the docking station for Machine D (the laptop), as is my right handed Evoluent mouse.
Two mice, two keyboards, one desk, three computers 2-3 monitors depending on whether you count the laptop's own screen.

Monitor 1 is attached to Machines A and B via the same KVM device.
Monitor 2 is attached to Machines A and D via switching between digital and analog inputs.

The KVM has 4 outputs but cannot be used for Machine D as I need the screen NOT to switch when I'm typing there - the information I need to read is on Machine B, and I need to enter it on Machine D.

Confused yet?  :'(


Keyboard 1 - the daily driver
This keyboard gets over 90% of my daily use at work. I type a lot, but it's not consistent text/document typing. Nor is it programming nor any other task where you can really settle into typing and enjoy a high WPM. The majority of my work for 'Client A' involves typing a few words, a name or a few characters followed by tab/space/enter/mouse movements. 'Client B' is similar and D through G are pretty much unknowns as I only work there in specific situations which I cannot predict.

Requirements:
Ergonomics in the form of:
   • Split I'm losing faith in split boards due to the difficulty in keeping them in the right place. I'll persevere until I settle on a suitable angle, then I'll join them up somehow.
   • Column staggered more than the Ergodox Still true
   • Thumb Keys Still true
   • Colemak (i.e. programmable)  Still true
   • Mild tilt Make that really really mild
   • Palm rest Still true
Equivalent of tenkeyless/80% (I use too many Fkeys to go without dedicated ones) Still true
Programmable key layout with function layers Still true
Functions through a KVM switch which monitors keyboard input for 'scroll lock scroll lock' in order to switch between the 2 connected PCs Still true, and a current issue as it's not working yet
Scroll lock key (to interact with the KVM) Still true, and a current issue as it's not working

Wants:
Programmable/recordable macro keys ala Logitech G15 (A tool I used prior to going mechanical. It saved me 1000s of keystrokes over the years) I think I can safely demote this to 'nice to have'
Included mouse of some-sort (See discussion below)  This may need to become a requirement. If I can achieve it, greater tilt can be used. As the week progressed using the ZusDox 1 I wanted this more and more.
Non TRRS cable for the join (because so many people have had problems with them) Still true

Nice to Have:
LEDs for caps lock and scroll lock Still true

Do not want/care for:
Backlighting Still true
Numlock Still true
LCD display Still true
Separate halves that slide around (a problem I have with the ErgoDox) Still true. Becoming more annoying by the day.

Keyboard 2 - the supplemental
This keyboard is used to control a laptop while being at least vaguely ergonomic in regards to where I can put the keyboard. I think 'where' equals, on my lap, so thinness is desirable so that it will slide under my desk while on my lap. There is VERY little room, so that may be the first feature to ignore. I use this keyboard for less than 100 words on a typical day, so lack of keys such as Fkeys is a very minor thing.

Requirements:
Small Still true
Wireless Not necessarily a problem if it's small enough. I'm now thinking to make it really tiny like a 40%. If it's approximately that size and has a long enough cable I should be fine.
60%ish Still true, in that I need dedicated number keys for this one. 'Full' 60% may not be necessary though.
Good battery life Still true if wireless

Wants:
Thin Still true but unlikely without using other switch types.
Programmable/Colemak layout Still true
Dedicated arrows + menu key or built in mouse I no longer care about the arrow keys. I'm used to having a nav layer now. Mouse keys might be sufficient but a pointing stick is still desirable.

Nice to Have:
Mechanical Still true
No slippy bottom surface (I can fix this myself by gluing something to the bottom if I have to) Still true

On the topic of resting palms
Firstly, I think this is more about personal preference than anything. Secondly, I noticed a long time ago that I only lift my wrists when doing a large volume of typing. Documentation, long emails. Anything where I can write sentence after sentence without having to navigate or mouse etc. I think the need to raise wrists in that situation is driven by QWERTY's awful layout.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur on Sun, 23 August 2015, 00:35:36
Here is my latest design for the daily driver:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/ZusDox%20TKL%20layout%20v3.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/ZusDox%20TKL%20layout%20v3.png.html)
Keen eyes will note:
* Space key in the numeric row for typing sequences of numbers (also provides a benefit that the right hand space key can now be space+fn like it's left hand partner as I still have a way of holding down space if required (yes, this actually came up at work once... while designing the first prototype!))
* No longer completely symmetric, so that I can use more of a standard key set
* One piece, not split
* Inspiration partly from Rose's eagle
* Two underscore keys for use in different situations (math vs STUPID_NAMING_STANDARD)

The angling is 12.5 degrees inward on both halves (so 25 if you measure them in regards to each other). The angled thumb keys are at 30 degrees from the finger keys, so 42.5 from 'true'. This feels right on paper (and was worked out by printing two halves and cutting bits of paper until it felt right), but only time will tell if it's truly the right angle for how I typically sit at work. I should also point out that I use space and Alt as thumb keys despite their orientation.

KiCAD continues to confuse me, so I haven't made any progress on that. Instead I've drawn this out in LibreCAD already (can't believe how much faster I am at that now), with one concession to the metric system. I'm using 19mm key spacing rather than 19.05 mm. It's just so much easier to work with! Wiring this up may prove interesting as the 5 keys in row 2 present issues unless I decide to use 8 rows instead of the 7 from my original design.

I've placed an order for the Carbon Set (https://geekhack.org/index.php?topic=72241.0) including 3 of the dvorak/colemak subset. That should resolve my key cap woes.
I've done an inventory of my switches: 32 white, 36 red, 5 blue + 104 that can be salvaged from my Leopold now that I no longer need it at work.
I'm keeping my eye on Zealio's (https://geekhack.org/index.php?topic=69590.0) (Gateron Purple) switches as they would bring me back on track with my original goal of using MX Clears.
I'm trying not to rush but I 'can't wait' until I can build V2 and take it to work so that I can bring V1 back home to replace my ergodox on my home PC. It's minimal staggering feels so wrong now!

For anyone curious, here's the 48% matrix layout I came up with last weekend:
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/48PercentMatrix.png) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/48PercentMatrix.png.html)
While I would never build a keyboard that was in a matrix like this, the concepts behind this layout may make their way into the supplemental keyboard or into my home keyboard.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
(http://i135.photobucket.com/albums/q128/Zustiur/Hand%20ergo.png) (http://s135.photobucket.com/user/Zustiur/media/Hand%20ergo.png.html)
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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 (https://geekhack.org/index.php?topic=48106.0) 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: plg 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 (http://neo-layout.org/). 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 (http://shop.keyboard.io/)
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: plg 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?
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: SamirD 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...
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: SamirD 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...
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: SamirD 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.

Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20151204_210229e.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20151204_210229e.jpg.html) (http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20151204_210216e.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20151204_210216e.jpg.html)

Here is how NOT to connect your diodes.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20151122_113608.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20151122_113608.jpg.html)
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
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20151115_102313.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20151115_102313.jpg.html)
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.
(http://i135.photobucket.com/albums/q128/Zustiur/GeekHack/20151205_121721e.jpg) (http://s135.photobucket.com/user/Zustiur/media/GeekHack/20151205_121721e.jpg.html)
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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: SamirD 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!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: MrRooks on Tue, 15 December 2015, 11:29:40
This is looking awesome!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: domsch1988 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:
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: SamirD on Sun, 20 December 2015, 23:51:07
This is why I love this place.  Welcome to GH!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: JGwinner 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 ==
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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...
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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 :)
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
[attach=1]
OneHand in use for playing Elite Dangerous
[attach=2]
Keycaps from WASD
[attach=3]
ZusDoxV3 PCB
[attach=4]

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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
[attach=1]
It's so nice to type on!
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
Title: Re: Zustiur's Custom Keyboards ZusDox
Post by: Zustiur 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.
[attach=1]
Bottom layer of the one-handed keyboard on its risers. Spot the error with the risers!  :-[
[attach=2]
One-Hand layers.
[attach=3]
One-hand 'assembled'.
[attach=4]