Hello, and welcome to this extremely compact and arguably cursed Dvorak-centric keyboard layout for the Boardsource 4x12 and similar 40% keyboards that support QMK! This README will include a short description of how you're supposed to use this thing as well as explaining the mindset behind each decision I made in the development process.
One very important note to be aware of ahead of time is that my layout, like those of many QMK-compatible keyboards, relies heavily on layers to reduce finger movement and strain over time. I type for a living, and even after using this layout all day, every day, while doing typing tests at considerable speeds, my hands are rarely ever tired, let alone uncomfortable thanks to the way I've set things up.
This layout also supports rudimentary one-handed typing, which I'm still adjusting to and rarely make use of, but this is the only area where one may experience strain because I'm not a scientist.
The QMK documentation already has a super helpful guide to building and flashing firmware! The only things to be aware of with this layout in particular are the qmk/rules.mk and qmk/handswap.c files.
Just by having these files in the same directory as your generated keymap.c when you go to compile your firmware (I recommend using the QMK CLI), everything should compile without issue. handswap.c is just a matrix that describes where the keyboard's keys will be after the layout has been mirrored. By adding the following to rules.mk:
SWAP_HANDS_ENABLE = yes
SRC += handswap.c
We tell the compiler to include the contents of handswap.c as if it were part of the generated C code (no copy/pasting needed)!
This is the layer where you'll do most of your typing (unless you're a QWERTY user in which case... no shame, but what are you doing here?).
As you can see, the default layout is a slightly modified version of Dvorak intended to accommodate for the smaller form factor of 40% keebs. There are also some opinionated layout decisions which make it easier for me to type personally, but these can be modified at your discretion.
- Caps Lock now serves as
Ctrl+Shiftwhen held. - Shift keys now insert opening and closing parentheses when tapped.
- Ctrl has been placed on a modifier toggle on the third-row pinky keys.
- Tap for (
;orz), hold for (L_CtrlorR_Ctrl)
- Tap for (
- Browser Navigation (also useful for other tabbed applications) is made easier using the bottom corner keys.
- Esc is now on the bottom row beneath the left ring finger and switches to the function layer when held.
- Super (GUI) keys remain in the same location as they would be normally.
- Alt keys now function like the square-bracket version of the shift keys.
- Tap for (
[or]), hold for (L_AltorR_Alt)
- Tap for (
- Backspace is now located on the bottom row beneath the pinky finger.
- Enter is located under the left thumb and switches to the navigation layer when held.
- 40% keyboards don't have keys two-out from the pinky and I was almost never using my left thumb anyway lol.
- Space is located under the right thumb and similarly switches to the navigation layer when held.
- I noticed I only ever pressed
Spacewith my right thumb when typing on a normal keyboard, so I was like "why not make good use of the extra space this 1u "spacebar" provides? Needless to say, keebs with 2u spacebars aren't supported.
- I noticed I only ever pressed
This layer is almost completely transparent, but the bottom row has been modified such that the user can type almost entirely with their left hand.
- Backspace is now on the bottom-row left pinky finger. In exchange, the tilde and backtic key has been moved to the bottom-row right pinky finger.
- Space is now under the left thumb and mirrors the keyboard when held.
- Every key is flipped symmetrically such that
abecomessand so on. - To return to the base layer without using your right hand, hold the left thumb key and press the key under the bottom-row left middle finger.
- Every key is flipped symmetrically such that
- Enter is the only key which fully requires moving the thumb to a different key than it would normally press — the adjacent key, under the bottom-row right thumb.
- Alt keys remain in the same location and can both be accessed with the same finger whether you hold space or not.
TO(0)is located where theR_GUIkey used to be, the key under the bottom-row right middle finger.
"For those who need it. I just use it for gaming and Vim." — Mozart, probably.
This is pretty much a normal QWERTY keyboard except the bottom row and modifier keys are exactly the same as the base layer, with Enter under the left thumb, Space under the right, layer toggles under the ring and fingers and thumbs, etcetera. It's the base layer's more vanilla sibling.
This layer is where you'll find:
- Special symbols along the top row as they would appear on a regular keyboard
- A
CAPS_WORDkey whereCaps Lockwould normally be - Function keys in a 4x3 grid beneath the home row
- Conveniently placed repeat keys for repeating the same thing many times quickly
- You can rapidly flutter your fingers between the second and third rows to repeat an action many times or do this one column to the right to repeat the opposite action, or stim by going back and forth between the same and opposite action when you wanna be silly.
- Windows-centric multi-desktop controls (swap back and forth or use Vim-style down and up arrows respectively to view all desktops or open a new one)
- A boot key to quickly prepare the keyboard for flashing
- Layer-switching keys to navigate between the base layer, third layer, and second layer (in that order;
Base -> QWERTY -> Hand-Swap) - Some conveniently placed modifiers if you need them, mostly on the right hand because the function keys take up most of the left side
I refer to this as the Navigation Layer, but it's really more of an essential "you will use this constantly" layer. On the left side, it's got NumLock, media controls for volume and play/pause toggles, page navigation, quick Ctrl_L/R and Repeat keys for when you're navigating through text, and on the right side, it's got a numpad.
It's important to note the thumb keys here. They're central to Windows, but these can be modified for your OS pretty easily.
- Holding the left thumb and pressing the right will activate Snipping Tool
- Holding the right thumb and pressing the left will lock your computer.
As for why there is a numpad but no number row, and why I put the symbols on their own on the previous row, this is a quirk of how I personally think of typing numbers versus symbols. I think of symbols (!, @, #, and so on...) linearly, left to right. On the other hand, when I type numbers, I think of them in a numpad configuration.
If you type quickly enough, layer keys may activate when you don't intend them to. For instance, when I'm doing a typing test, I may type Z + E too quickly and the browser (Zen in my case) will interpret this as a navigation key and switch focus to the URL bar. This can be a hangup in the beginning, but you learn to account for these things while still being able to type extremely quickly.
Another common hangup for quick typists is accidentally locking your computer or activating Snipping Tool on Windows because the thumb keys can respond to each other. This, however, is less common because rarely would you be pressing Enter and Space in rapid succession (at least intentionally). It definitely helps to be accurate with your keypresses because if you press more than one key by mistake these issues can happen pretty easily.




