chriskopher’s QMK Config
Currently designed for the use of an ANSI tenkeyless keyboard on Windows 10. Although many of the ideas can be applied agnostically across operating systems.
Hardware
- Hasu
USB to USB Controller Converter
- Limitations include:
- 6KRO
- Media/System control keys and Fn key are not recognized by the converter
- Max firmware size of 28K and a lot of it is taken up by the USB keyboard support, so not all QMK features can be enabled
- No mouse or other pointing device support
- Limitations include:
- A regular ANSI QWERTY USB Type B keyboard
Layer Overview
Base Layers
0. My personal modified QWERTY layout
This is the default base layer that is used for most of my typing and
where the intermediate layers are stacked onto. It is loaded by default
on keyboard power up. - Apply this base layer with Adjust + c, or by powering on
the keyboard - Swapped CapsLock and LCtrl for
ergonomics with often performed LCtrl keyboard shortcuts -
Swapped \ and Backspace to minimize hand movement,
inspired by the HHKB layout -
Overloaded modifier keys, inspired by Steve Losh’s A Modern
Space Cadet - Tap LShift for (, hold for
LShift - Tap RShift for ), hold for
RShift - Tap LCtrl for Esc, hold for
LCtrl (remember that LCtrl is swapped with
CapsLock) - Tap Dances that allow different functionality
based on the number of key presses within the TAPPING_TERM
of 200 ms - Extended space cadet shifting: - Two taps of
LShift sends {, and three taps send [ -
Two taps of RShift sends }, and three taps send
] - One tap of ; will send ;, two taps
of ; will send : - Combos that allow for different
functionality based on custom chorded key presses within the
COMBO_TERM of 20 ms - Press and hold s and
d to momentarily activate the (S)uper(D)uper layer - Press and hold
k and l to momentarily activate Meh
modifier key - Meh key (Ctrl + Shift +
Alt) is useful for binding unique hotkeys on the OS that
won’t collide with or override other existing hotkeys - Tap
CapsLock for CapsLock, hold CapsLock to
momentarily activate Meh modifier key while held (remember
that LCtrl is swapped with CapsLock) - Tap/Hold
actions for layer switching - Similar to the overloaded modifier keys -
Tap z for z, hold z to momentarily
activate Dev layer while held - Tap
RGui for RGui, hold RGui to momentarily
activate Adjust layer while
held
,---. ,---------------. ,---------------. ,---------------. ,-----------.
|Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
`---' `---------------' `---------------' `---------------' `-----------'
,-----------------------------------------------------------. ,-----------. ,---------------.
| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | |Ins|Hom|PgU| |NmL| /| *| -|
|-----------------------------------------------------------| |-----------| |---------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Bsp| |Del|End|PgD| | 7| 8| 9| |
|-----------------------------------------------------------| `-----------' |-----------| |
|Ctl/Esc| A| S| D| F| G| H| J| K| L|;/:| ' | Return| | 4| 5| 6| +|
|-----------------------------------------------------------| ,---. |---------------|
|Shift/( |Dev/Z| X| C| V| B| N| M| ,| .| /| Shift/)| | ↑ | | 1| 2| 3| |
|-----------------------------------------------------------| ,-----------. |-----------| |
|Meh/CapsL|Gui|Alt| Space |Alt|Adjust/Gui|App| Ctl| | ← | ↓ | → | | 0| .|Ent|
`-----------------------------------------------------------' `-----------' `---------------'
Note: can’t use Hyper key (Ctrl + Shift + Alt + Gui) instead of Meh reliably on Windows 10 because pressing Hyper opens Microsoft Office, Hyper + t opens Microsoft Teams, Hyper + d opens Microsoft OneDrive, Hyper + y Yammer, etc. And I couldn’t find a clean way to disable this without needing to modify the host computer.
1. A regular QWERTY layout
This layer is for when other people need to type on my keyboard. - Apply this base layer with Adjust + q - The only modification is the addition of the tap/hold action for switching back to the Adjust layer while held - Tap RGui for RGui, hold RGui to momentarily activate Adjust layer while held
,---. ,---------------. ,---------------. ,---------------. ,-----------.
|Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
`---' `---------------' `---------------' `---------------' `-----------'
,-----------------------------------------------------------. ,-----------. ,---------------.
| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Bsp| |Ins|Hom|PgU| |NmL| /| *| -|
|-----------------------------------------------------------| |-----------| |---------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| |
|-----------------------------------------------------------| `-----------' |-----------| |
|CapsL | A| S| D| F| G| H| J| K| L| ;| '| Return| | 4| 5| 6| +|
|-----------------------------------------------------------| ,---. |---------------|
|Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | | ↑ | | 1| 2| 3| |
|-----------------------------------------------------------| ,-----------. |-----------| |
|Ctl|Gui|Alt| Space |Alt|Adjust/Gui|App|Ctl| | ← | ↓ | → | | 0| .|Ent|
`-----------------------------------------------------------' `-----------' `---------------'
Intermediate Layers
2. (S)uper(D)uper Mode
Inspired by narze via jasonrudolph. It’s designed to help with navigation while keeping you on the home row, or very close to it.
- To activate this layer, press s + d
simultaneously and hold from the base layer
- Alternatively, hold / to activate the layer. This method
is slower because the layer toggle uses a
TAPPING_TERMof 200 ms but s + d uses aCOMBO_TERMof only 20 ms (can be changed withinconfig.h).
- Alternatively, hold / to activate the layer. This method
is slower because the layer toggle uses a
- Use h / j / k / l for ← / ↓ / ↑ / →, respectively
- Use a for Alt
- Use f for Backspace
- Use g for Ctrl
- Use Space for Shift
- Use ; for Delete
- Use i / o to move to the previous/next tab
- Use u / p to go to the first/last tab (in most apps)
- Use / to toggle (S)uper(D)uper layer
,---. ,---------------. ,---------------. ,---------------. ,-----------.
| | | | | | | | | | | | | | | | | | | | |
`---' `---------------' `---------------' `---------------' `-----------'
,-----------------------------------------------------------. ,-----------. ,---------------.
| | | | | | | | | | | | | | | | | | | | | | | |
|-----------------------------------------------------------| |-----------| |---------------|
| | | | | | | |1T |T← |T→ |9T | | | | | | | | | | | | |
|-----------------------------------------------------------| `-----------' |-----------| |
| |Alt|[SuperDuper]|Bksp|Ctl| ← | ↓ | ↑ | → |Del| | | | | | | |
|-----------------------------------------------------------| ,---. |---------------|
| | | | | | | | | | |ToggleSD| | | | | | | | |
|-----------------------------------------------------------| ,-----------. |-----------| |
| | | | Shift | | | | | | | | | | | | |
`-----------------------------------------------------------' `-----------' `---------------'
3. Dev
This layer is for easy access to symbols commonly used during development. - To activate this layer, press and hold z from the base layer - Use u / i / o / p for - / + / ( / ), respectively - Use h / j / k / l / ; for _ / [ / ] / { / }, respectively - Use n / m / , / . / / for = / | / < / > / ?, respectively
,---. ,---------------. ,---------------. ,---------------. ,-----------.
| | | | | | | | | | | | | | | | | | | | |
`---' `---------------' `---------------' `---------------' `-----------'
,-----------------------------------------------------------. ,-----------. ,---------------.
| | | | | | | | | | | | | | | | | | | | | | | |
|-----------------------------------------------------------| |-----------| |---------------|
| | | | | | | | - | + | ( | ) | | | | | | | | | | | | |
|-----------------------------------------------------------| `-----------' |-----------| |
| | | | | | | _ | [ | ] | { | } | | | | | | | |
|-----------------------------------------------------------| ,---. |---------------|
| | | | | | | = | | | < | > | ? | | | | | | | | |
|-----------------------------------------------------------| ,-----------. |-----------| |
| | | | | | | | | | | | | | | | |
`-----------------------------------------------------------' `-----------' `---------------'
Top Layer
4. Adjust
This layer is applied at the top so that it will override all other layers and as a result it will always be possible to change which base layer is applied as a default. It is also used for media controls. - To activate this layer, press and hold RGui from the base layer - Switch to chriskopher modified QWERTY layout with c - Switch to regular QWERTY layout with q - Use n / m / , / . / / for Play/Pause / Mute / Volume Down / Volume Up / Toggle (S)uper(D)uper layer, respectively - Use Insert / Home / Page Up for Play/Pause / Next Track / Volume Up, respectively - Use Delete / End / Page Down for Stop / Previous Track / Volume Down, respectively
,---. ,---------------. ,---------------. ,---------------. ,-----------.
| | | | | | | | | | | | | | | | | | | | |
`---' `---------------' `---------------' `---------------' `-----------'
,-----------------------------------------------------------. ,--------------. ,---------------.
| | | | | | | | | | | | | | | |Play|Next|VolU| | | | | |
|-----------------------------------------------------------| |--------------| |---------------|
| |QWERTY| | | | | | | | | | | | | |Stop|Prev|VolD| | | | | |
|-----------------------------------------------------------| `--------------' |-----------| |
| | | | | | | | | | | | | | | | | | |
|-----------------------------------------------------------| ,---. |---------------|
| | | |CKO| | | |Play|Mute|VolD|VolU| SD| | | | | | | | |
|-----------------------------------------------------------| ,-----------. |-----------| |
| | | | | | | | | | | | | | | | |
`-----------------------------------------------------------' `-----------' `---------------'
Build Instructions
To compile and flash the config onto the USB to USB converter:
cd /path/to/qmk_firmware
qmk config user.keyboard=converter/usb_usb/hasu
qmk config user.keymap=chriskopher
qmk compile
qmk flashAlternatively:
cd /path/to/qmk_firmware
qmk compile -kb converter/usb_usb/hasu -km chriskopher
qmk flash -kb converter/usb_usb/hasu -km chriskopherTo modify the config:
cd /path/to/qmk_firmware/keyboards/converter/usb_usb/keymaps/chriskopherand edit keymap.c, config.h, and
rules.mk.