Thanks again! That helps a lot.
I just ordered my parts! I was curious why the 3D print was so expensive so I looked into the margin you added, and I don't at all mind ordering from your store. You deserve compensation for your investment.
Also, I spent a laughably long time tweaking my layout, and I think I'm done (until I get a chance to test it out and refine it further). If you're interested in it, the layout and an explanation of it follows:
The alphabet layout is based off of Dvorak with some improvements that make it more efficient while still maintaining Dvorak's original hand alternation mechanic. It also ensures that commonly paired letters are on separate fingers, as much as possible. (Analysis:
http://patorjk.com/keyboard-layout-analyzer/#/load/kbHfrnk5. Takes a bit to load.)
It starts getting silly on the symbol layer, as I threw in a bunch of "maybe I'll use this some day" Unicode symbols because I had room. The symbol to the right is always the "shifted" version, so you could hit Symbol + shift + < to get the less-than-equals sign. I tried to pair up like symbols, like the "exponentiation" sign (^) and the root sign (√). I also threw in true quote marks and other typographical nitpickings, as a basic text editor or web form doesn't convert typewriter quote marks into proper ones. Similarly I made sure to include every variety of dash (h = hyphen, m = em dash, - = minus sign, n = en dash, f = figure dash). (Some of these I only discovered after deciding to make this layout XD) I also threw in a Greek layer with even more symbols because why not. (I knew I'd be typing things like pi and lambda at least, lol).
The symbol arrangement is biased towards C++ / Java, with curly braces on the home row and <> treated as a form of brackets.
The whole thing is also designed with one-hand use in mind (right-handed mouse), as I tend to do a lot of copy-paste operations with one hand on the mouse. Whitespace and backspace are kept on the left hand as much as possible to allow for comfy copypasta arrangement. This also accommodates gaming with a mouse, which sometimes requires numerical input (at least in the games I play), so the numpad is also accessible with the left hand only. For a left-hander, I would recommend mirroring the layout completely.
That brings me to the command layer, which groups ctrl+letter combinations onto the left hand. "Whittles-Dvorak" pays no heed to keyboard shortcuts, so I needed a way to hit "ctrl+c" "ctrl+v" etc. with my left hand only.
It seems that you can pretty easily program macros like that into the firmware, so that's why I decided to put in all that unicode. I can make it send OS-sensitive alt codes to get those symbols (there's an OS switcher on the thumb of the symbol layer). That logic will all be handled in firmware code, so no need for autohotkey.
Finally, I decided that layer switchers will behave kind of like the "numlock" button (layer on / off) as well as a "shift" button (hold and press other keys). If you hold and press a key, it will revert to layer 0 when you release. If you just press it without any other key in combination, it will "lock" the layer until you hit that key again (and it always reverts to layer 0).
So basically, I'm crazy XD But if I'm gonna drop $450 on a physical keyboard I figured I might as well spend some quality time designing the soft layout to fit my tastes.
/* ************************ */
/* Layer 0: Whittles-Dvorak */
/* ************************ */
/* _________________________________________ _________________________________________ */
/* | | | | | | | | | | | | | hm | */
/* | ESC | ;: | ,& | .@ | P | Y | | F | G | L | R | C | -— | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | TAB | O | A | E | I | U | | D | H | T | N | S | /\ | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | LCTL | '" | Q | J | K | X | | B | M | W | V | Z | RALT | */
/* |______|______|______|______|______|______|_ _|______|______|______|______|______|______| */
/* | | | | | | */
/* | SHFT | SPC | | ENTR | SHFT | */
/* | | | | | | */
/* |______|______|_ _|______|______| */
/* | | | | | | */
/* | BSPC | CMDS | | SYMB | DEL | */
/* |______|______|_ _|______|______| */
/* | NUM/ | | | | | */
/* | DPAD | LALT | | RCTL | SUPER| */
/* |______|______| |______|______| */
/* ******************* */
/* Layer 1: Symbols */
/* ******************* */
/* _________________________________________ _________________________________________ */
/* | | | | | | | | | | | | | -n | */
/* | ´` | …· | ?¿ | !¡ | |‖ | §¶ | | †‡ | ~≈ | #№ | ^√ | +± | −– | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | f | | | | | | | | | | | | f | */
/* | _‒ | =≠ | <≤ | {“ | (‘ | [« | | ]» | )’ | }” | >≥ | *× | ⁄÷ | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | a | | | | | | | | | | | | */
/* | ∨∧ | ’✓ | °′ | ″‴ | ©® | ™℗ | | ∞∝ | $¢ | £€ | ¥¤ | Ƀ₹ | ₩₽ | */
/* |______|______|______|______|______|______|_ _|______|______|______|______|______|______| */
/* | | | | | | */
/* | SHFT | SPC | | ENTR | SHFT | */
/* | | | | | | */
/* |______|______|_ _|______|______| */
/* | | | | | | */
/* | BSPC | LOGIC| | SYMB | DEL | */
/* |______|______|_ _|______|______| */
/* | NUM/ | | | | WIN/ | */
/* | DPAD | LALT | | RCTL | UNIX | */
/* |______|______| |______|______| */
/* *************************** */
/* Layer 2: Numbers / D-pad */
/* *************************** */
/* _________________________________________ _________________________________________ */
/* | | | | | | | | | | ∧ | | | | */
/* | ^ⁿ | *∫ | 1¹ | 2² | 3³ | +⁺ | |PGUP | HOME | | | END |PRNSCR|PAUSE | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | | */
/* | TAB | 0⁰ | 4⁴ | 5⁵ | 6⁶ | .⁼ | | PGDN | <— | ∨ | —> |SYSRQ |BREAK | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | LCTL | / | 7⁷ | 8⁸ | 9⁹ | -⁻ | | SLEEP| |INSERT| MENU |SCRLCK| RALT | */
/* |______|______|______|______|______|______|_ _|______|______|______|______|______|______| */
/* | | | | | | */
/* | SHFT | SPC | | ENTR | SHFT | */
/* | | | | | | */
/* |______|______|_ _|______|______| */
/* | | | | | | */
/* | BSPC | CMDS | | SYMB | DEL | */
/* |______|______|_ _|______|______| */
/* | NUM/ | | | | | */
/* | DPAD | LALT | | RCTL | SUPER| */
/* |______|______| |______|______| */
/* ***************** */
/* Layer 3: Commands */
/* ***************** */
/* _________________________________________ _________________________________________ */
/* | | | | | | | | | | | | | | */
/* | CAPS | ^A | ^S | ^X | ^T | ^H | | VOLUP| F1 | F2 | F3 | F4 | FFWD | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | SHFT | ^Z | ^Y | ^C | ^V | ^F | | MUTE | F5 | F6 | F7 | F8 |PLAYPS| */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | ENTR | ^B | ^I | ^U | ^L | ^P | | VOLDN| F9 | F10 | F11 | F12 | RWND | */
/* |______|______|______|______|______|______|_ _|______|______|______|______|______|______| */
/* | | | | | | */
/* | SHFT | SPC | | ENTR | SHFT | */
/* | | | | | | */
/* |______|______|_ _|______|______| */
/* | | | | | | */
/* | BSPC | CMDS | | LOGIC| DEL | */
/* |______|______|_ _|______|______| */
/* | NUM/ | | | | | */
/* | DPAD | LALT | | RCTL | SUPER| */
/* |______|______| |______|______| */
/* *************************** */
/* Layer 4: Logic/Greek */
/* *************************** */
/* _________________________________________ _________________________________________ */
/* | | | | | | | | | | | | | | */
/* | ≡∀ | ⊆⟨ | ⊇⟩ | ¬⊕ | πΠ | ∩∪ | | φΦ | γΓ | λΛ | ρΡ | ξΞ | ∴∵ | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | ⇒→ | οΟ | αΑ | εΕ | ιΙ | υΥ | | δΔ | ηΗ | τΤ | νΝ | σΣ | ς∅ | */
/* |______|______|______|______|______|______| |______|______|______|______|______|______| */
/* | | | | | | | | | | | | | | */
/* | ⇔↔ | ≪≦ | ≫≧ | θΘ | κΚ | χΧ | | βΒ | μΜ | ωΩ | ψΨ | ζΖ | ⊤⊥ | */
/* |______|______|______|______|______|______|_ _|______|______|______|______|______|______| */
/* | | | | | | */
/* | SHFT | SPC | | ENTR | SHFT | */
/* | | | | | | */
/* |______|______|_ _|______|______| */
/* | | | | | | */
/* | BSPC | LOGIC| | LOGIC| DEL | */
/* |______|______|_ _|______|______| */
/* | NUM/ | | | | | */
/* | DPAD | ≔≅ | | ⊻∃ | ⊢⊨ | */
/* |______|______| |______|______| */