Updating Documentation

This commit is contained in:
Victor 2024-07-18 00:29:38 -05:00
parent a48bbe358b
commit 6887ce9ede
Failed to generate hash of commit
4 changed files with 203 additions and 79 deletions

View file

@ -4,16 +4,16 @@ My userspace for building QMK firmware via GitHub Actions. This does not require
## Layout
The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from [Manna Harbor Miryoku](https://github.com/manna-harbour/miryoku) and took heavy influence from [Jonas Hietala T-34](https://www.jonashietala.se/series/t-34/). The keymap designed for split 3x5, two thumbs keys, dual encoders, and combined with a Ploopy Nano trackball mouse. Design themes:
The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from [Manna Harbor Miryoku](https://github.com/manna-harbour/miryoku) and took heavy influence from [Jonas Hietala T-34](https://www.jonashietala.se/series/t-34/). Design Themes:
- The keymap designed for my ideal board: split 3x5 boards with five thumb keys, right side encoder, combined with a Ploopy Nano trackball mouse
- The userspace supports a sixth thumb key and left side encoder as well
- Releasing all keys always brings you back to base layer
- Patterns to layout design to reduce learning curve (e.g., Shortcuts in same place on multiple layers)
- Symbols important for powershell / writing are positioned under stronger fingers
- Game keymap that doesn't require massive game key bind changes. Tested on Resident Evil 4 Remake
Notes:
- Outside thumb keys are encoder clicks. Some keyboards may have extra thumb keys
- Layers are designed orthogonally with a single purpose per hand and are accessed by holding a thumb key on the opposite hand
- Reworking Symbols for programming focus
- Common symbols are positioned under stronger fingers
- Custom behavior from holds
- Advanced encoder map functionality to minimize/simplify layers
![image](my_keymap.png)
@ -27,7 +27,7 @@ Notes:
A single keymap layout can be shared with multiple keyboards by using C preprocessor macros. These macros are referenced in the keyboard JSON files, and the build process will expand them into a transient keymap.c file during compile time.
In this userspace, the base split 3x5_3 layout can be adapted for other split keyboards by expanding it with macros. For example, there is a wrapper that will add extra columns to the base layout for a Corne's 42-key 3x6_3 layout.
In this userspace, the base split 3x5_3 with dual encoders layout can be adapted for other split keyboards by expanding it with macros. For example, there is a wrapper that will add extra columns to the base layout for a Corne's 42-key 3x6_3 layout.
### Tri-Layer
@ -77,26 +77,54 @@ Opted to implement overrides here instead of using built-in Key Override functio
### Combos
Enables additional keys to be mapped by pressing multiple keys simultaneously. Primarily used to implement mouse buttons and make important keys (tab, backspace, etc) available on base layer. Combos are mapped based on the QWERTY layout but will work on any layer*. All Combos are disabled when `CONFIG` layer is active
Enables additional keys to be mapped by pressing multiple keys simultaneously. Primarily used to enable mouse functionality on base layer
| Combo | Result | Comment |
| ------------- | -------------------- | ------------------------------------------------- |
| `C` + `V` | `KC_BTN1` | Left click. Mouse buttons only work on base layer |
| `X` + `V` | `Drag Scroll Toggle` | Actual command varies per board |
| `D` + `F` | `KC_ENT` | |
| `J` + `K` | `KC_TAB` | |
| `M` + `Comma` | `KC_BSPC` | |
| `C` + `V` | `KC_BTN2` | Left click. Mouse buttons only work on base layer |
| `X` + `V` | `Drag Scroll Hold` | Actual command varies per board |
### Key Overrides
### Advanced Encoder Functionality
Enables us to customize the result of applying certain mods to keycodes. For example, Shift + Backspace will give Delete. Primarily used to minimize the number of layers and the layout
Implemented custom keycodes for encoders to enable modifiers to change encoder output and enable window/tab switching and mouse wheel zoom. The purpose is to remove seldomly used feature configuration keys to simplify the keymap
| Shortcut | Result | Comment |
| ------------------- | --------- | ----------------------------------------------------------------------------- |
| `Shift` + `KC_BSPC` | `KC_DEL` | Backspace is a combo. There are no dedicated backspace and delete keys mapped |
| `Shift` + `HF_NEXT` | `HF_PREV` | Only works on `CONFIG` layer Only for keyboards with Haptic feedback enabled |
| `Shift` + `HF_CONU` | `HF_COND` | Only works on `CONFIG` layer. Only for keyboards with Haptic feedback enabled |
| `Shift` + `CK_UP` | `CK_DOWN` | Only works on `CONFIG` layer. Only for keyboards with Audio enabled |
#### Tabbing
The NUM layer right side encoder will `tab` and `shift+tab`. Holding `alt` or `ctrl` will allow Window or Browser tab switching
#### Zoom
The MOUSE_FUNCTION layer right side encoder will send `ctrl+mouse wheel up` and `ctrl+mouse wheel down` without having to hold modifiers
#### Configuration changes
The NAV layer right side encoder behavior depends on what modifier is held. Refer to the table below
| Held Modifier | Result |
| ------------- | ---------------------------------------------------- |
| None | Cycles through base layers: QWERTY, COLEMAK DH, GAME |
| Shift | Changes RGB Matrix Hue |
| Ctrl | Changes RGB Matrix Sat |
| Alt | Changes RGB Matrix Brightness |
| Gui | Changes RGB Matrix Animation Speed |
| Shift+Ctrl | Changes RGB Matrix Animation |
| Ctrl+Alt | Changes Haptic Feedback Frequency |
| Alt+Gui | Changes Audio Click Frequency |
### Advanced Config Toggle
Implemented a custom keycode to enable modifiers to affect which feature is toggled. Similar to the Advanced Encoder, the purpose is to remove seldomly used keycodes and simplify the keymap. Refer to the table below
| Held Modifier | Result |
| ------------- | ---------------------------------------------------- |
| None | Cycles through base layers: QWERTY, COLEMAK DH, GAME |
| Shift | Enter Bootloader |
| Ctrl | Enter Ploopy Nano Bootloader |
| Alt | Toggle RGB Matrix On/Off |
| Gui | Toggle Combos On/Off |
| Shift+Ctrl | Toggle Haptic Feedback On/Off |
| Ctrl+Alt | Toggle Audio On/Off |
| Alt+Gui | Toggle Audio Clicks On/Off |
## Optional Features

View file

@ -0,0 +1,93 @@
{
"keyboard_name": "Waterfowl",
"manufacturer": "CyanDuck",
"url": "",
"maintainer": "JW2586",
"usb": {
"vid": "0xFEED",
"pid": "0x9CE3",
"device_version": "0.0.1"
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"oled": true
},
"matrix_pins": {
"cols": ["F4", "F5", "F6", "F7", "B1"],
"rows": ["D4", "C6", "D7", "E6"]
},
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "B4", "pin_b": "B5"},
{"pin_a": "B3", "pin_b": "B2", "resolution": 2}
]
},
"split": {
"enabled": true,
"soft_serial_pin": "D2",
"transport": {
"sync": {
"modifiers": true,
"wpm": true
}
}
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 1},
{"matrix": [0, 1], "x": 1, "y": 0.25},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.375},
{"matrix": [0, 4], "x": 4, "y": 0.5},
{"matrix": [4, 4], "x": 9, "y": 0.5},
{"matrix": [4, 3], "x": 10, "y": 0.375},
{"matrix": [4, 2], "x": 11, "y": 0},
{"matrix": [4, 1], "x": 12, "y": 0.25},
{"matrix": [4, 0], "x": 13, "y": 1},
{"matrix": [1, 0], "x": 0, "y": 2},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.375},
{"matrix": [1, 4], "x": 4, "y": 1.5},
{"matrix": [5, 4], "x": 9, "y": 1.5},
{"matrix": [5, 3], "x": 10, "y": 1.375},
{"matrix": [5, 2], "x": 11, "y": 1},
{"matrix": [5, 1], "x": 12, "y": 1.25},
{"matrix": [5, 0], "x": 13, "y": 2},
{"matrix": [2, 0], "x": 0, "y": 3},
{"matrix": [2, 1], "x": 1, "y": 2.25},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.375},
{"matrix": [2, 4], "x": 4, "y": 2.5},
{"matrix": [6, 4], "x": 9, "y": 2.5},
{"matrix": [6, 3], "x": 10, "y": 2.375},
{"matrix": [6, 2], "x": 11, "y": 2},
{"matrix": [6, 1], "x": 12, "y": 2.25},
{"matrix": [6, 0], "x": 13, "y": 3},
{"matrix": [3, 1], "x": 2.9, "y": 3.5},
{"matrix": [3, 2], "x": 3.9, "y": 3.7},
{"matrix": [3, 3], "x": 4.9, "y": 4.1},
{"matrix": [3, 4], "x": 5.5, "y": 2.5},
{"matrix": [7, 4], "x": 7.5, "y": 2.5},
{"matrix": [7, 3], "x": 8.1, "y": 4.1},
{"matrix": [7, 2], "x": 9.1, "y": 3.7}
]
}
}
}

View file

@ -1,92 +1,95 @@
layout:
qmk_keyboard: bluebell/swoop
qmk_layout: LAYOUT_split_3x5_3
qmk_keyboard: waterfowl
qmk_layout: LAYOUT
layers:
base_QWERTY:
- [Q, W, E, R, T, Y, U, I, O, P]
- [A, S, D, F, G, H, J, K ,L, {h: "\"", t: "'"}]
- [{h: "MOUSE", t: "Z"}, X, C, V, B, N, M, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- {type: ghost}
- MB1
- NUM
- Shift
- {t: "Ctrl Home", type: ghost}
- {t: "Mute", type: ghost}
- Space
- NAV
- {t: Mute, type: ghost}
base_COLEMAK_DH:
- [Q, W, F, P, B, J, L, U ,Y, {h: "\"", t: "'"}]
- [A, R, S, T, G, M, N, E ,I, O]
- [{h: "MOUSE", t: "Z"}, X, C, D, V, K, H, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- {type: ghost}
- MB1
- NUM
- Shift
- {t: "Ctrl Home", type: ghost}
- {t: "Mute", type: ghost}
- Space
- NAV
- {t: Mute, type: ghost}
base_GAME:
- [Tab, Q, W, E, R, T, "7", "8" ,"9", Esc]
- [Ctrl, A, S, D, F, G, "4", "5" ,"6", {s: "~", t: "`"}]
- [Z, X, C, V, B, Alt, "1", "2" ,"3", Combo Toggle]
- {t: Enter, type: ghost}
- [Z, X, C, V, B, Alt, "1", "2" ,"3", null]
- Enter
- Space
- Shift
- {t: "Ctrl Home", type: ghost}
- {t: "Mute", type: ghost}
- Space
- NAV
- {t: Mute, type: ghost}
NAV:
- [Esc, Home, ▲, End, Page Up, null, null, null, Caps Lock, CONFIG ]
- [null, ◄, ▼, ►, Page Down, null, Shift, Ctrl, Alt, Gui ]
- [Undo, Cut, Copy, Paste, Redo, null, App, Vol -, Vol +, Mute ]
- {t: Zoom Reset, type: ghost}
- [Esc, Home, ▲, End, Page Up, Caps Lock, App, null, null, null ]
- [null, ◄, ▼, ►, Page Down, Back Space, Shift, Ctrl, Alt, Gui ]
- [Undo, Cut, Copy, Paste, Redo, Delete, Tab, Vol -, Vol +, Mute ]
- null
- NUM
- Ent
- Enter
- {t: "Ctrl Home", type: ghost}
- {t: "Config Toggle", type: ghost}
- null
- {type: held}
- {type: ghost}
- type: held
NUM:
- [Esc, Win Snip, File Explorer, null, {h: "~", t: "`"}, null, "7", "8" ,"9", {s: "<", t: ","} ]
- [Gui, Alt, Ctrl, Shift, {h: ":", t: ";"}, "0", "4", "5" ,"6", {s: ">", t: "."}]
- [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {s: "_", t: "-"}]
- {type: ghost}
- {type: held}
- [Esc, Snip Tool, File Explorer, MOUSE Toggle, Enter, null, "7", "8" ,"9", "," ]
- [Gui, Alt, Ctrl, Shift, Tab, null, "4", "5" ,"6", "."]
- [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", "-"]
- null
- Space
- type: held
- null
- type: ghost
- {t: "Win Tab", type: ghost}
- 0
- NAV
- {t: Mute, type: ghost}
SYM:
- [null, null, "@", "$", {h: "~", t: "`"}, {h: "+", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}]
- [null, {h: "{}", t: "{"}, "}", "!", {h: ":", t: ";"}, "&", "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}]
- [null, {h: "<>", t: "<"}, ">", {h: "\\\\", t: "\\"}, {h: "||", t: "|"}, {h: "%", t: "^"}, {h: "//", t: "/"}, {h: "()", t: "("}, ")", {h: "_", t: "-"}]
- {type: ghost}
- {type: held}
- [null, {h: "{}", t: "{"}, "}", {h: "||", t: "|"}, {h: ":", t: ";"}, "&", "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}]
- [null, {h: "<>", t: "<"}, ">", {h: "\\\\", t: "\\"}, "!", {h: "%", t: "^"}, {h: "//", t: "/"}, {h: "()", t: "("}, ")", {h: "_", t: "-"}]
- null
- type: held
- null
- {type: held}
- {type: ghost}
- type: ghost
- type: ghost
- null
- type: held
MOUSE_FUNCTION:
- [null, Prev Song, Next Song, Play Pause, Null, null, F7, F8 ,F9, F10]
- [Gui, Alt, Ctrl, Shift, Drag Scroll, null, F4, F5 ,F6, F11]
- [{type: held}, Mouse 5, Mouse 4, Mouse 3, Sniper, null, F1, F2 ,F3, F12]
- {type: ghost}
- "Mouse 1"
- "Mouse 2"
- "Pointer DPI"
- "Sniper DPI"
- {t: Mute, type: ghost}
CONFIG:
- [Haptic Reset, Haptic Strength+, Haptic Waveform+, Haptic Feedback Toggle, Haptic Toggle, null, Nano Reboot, EEPROM Clear, Boot Loader, {type: held}]
- [Audio Click Reset, Audio Click+, Audio Click Toggle, null, Audio Toggle, null, Shift, null, null, Base Layer]
- [null, null, null, null, RGB Toggle, RGB Mode, RGB Hue, RGB Sat, RGB Vib, RGB Spd]
- {t: Base Layer, type: ghost}
- Macro Rec 1
- Macro Play 1
- Macro Play 2
- Macro Rec 2
- {t: RGB Toggle, type: ghost}
- [MOUSE Toggle, null, null, Pointer DPI, Sniper DPI, Config Toggle, F7, F8 ,F9, F10]
- [Gui, Alt, Ctrl, Shift, Drag Scroll, Next Config, F4, F5 ,F6, F11]
- [{type: held}, MB1, MB5, MB4, Sniper, Prev Config, F1, F2 ,F3, F12]
- MB1
- MB3
- MB2
- {t: "Ctrl Home", type: ghost}
- {t: "Zoom Reset", type: ghost}
- "Macro Play"
- "Macro Rec"
combos:
- { p: [22, 23], k: MB1, l: [base_QWERTY] }
- { p: [21, 23], k: DrgScr Tog, l: [base_QWERTY] }
- { p: [16, 17], k: Tab, l: [base_QWERTY] }
- { p: [12, 13], k: Enter, l: [base_QWERTY] }
- { p: [26, 27], k: Bksp, l: [base_QWERTY] }
draw_config:
small_pad: 6
- { p: [22, 23], k: MB2, l: [base_QWERTY] }
- { p: [21, 23], k: Drag Scroll, l: [base_QWERTY], a: bottom }
- { p: [33, 33], k: "Enc: MWheel", l: [base_QWERTY], a: bottom, d: false, w: 50}
- { p: [34, 34], k: "Enc: Volume", l: [base_QWERTY], a: bottom, d: false, w: 50 }
- { p: [33, 33], k: "Enc: MWheel", l: [base_COLEMAK_DH], a: bottom, d: false, w: 50}
- { p: [34, 34], k: "Enc: Volume", l: [base_COLEMAK_DH], a: bottom, d: false }
- { p: [33, 33], k: "Enc: MWheel", l: [base_GAME], a: bottom, d: false, w: 50}
- { p: [34, 34], k: "Enc: Volume", l: [base_GAME], a: bottom, d: false, w: 50 }
- { p: [33, 33], k: "Enc: ◄,►", l: [NAV], a: bottom, d: false}
- { p: [34, 34], k: "Enc: Cfg", l: [NAV], a: bottom, d: false }
- { p: [34, 34], k: "Enc: Tab", l: [NUM], a: bottom, d: false }
- { p: [33, 33], k: "Enc: MWheel", l: [MOUSE_FUNCTION], a: bottom, d: false, w: 50}
- { p: [34, 34], k: "Enc: Zoom", l: [MOUSE_FUNCTION], a: bottom, d: false }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Before After
Before After