home | blog | art | git gpg | email | rss

zmk-config

Personal ZMK configuration for my wireless keyboard
git clone git://pollux.codes/git/zmk-config
Log | Files | Refs | README
commit 6bf3bf981acd513f92f9f1a062c0bee6f223116a
parent 55c23ff7c35990be92c15c3673b3b3fbb1fd210b
Author: Pollux <pollux@pollux.codes>
Date:   Fri, 11 Apr 2025 21:10:54 -0500

docs: add README

Signed-off-by: Pollux <pollux@pollux.codes>

Diffstat:
AREADME.md | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l0.json | 192+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l1.json | 220+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l2.json | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l3.json | 227+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l4.json | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l5.json | 218+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/json/l6.json | 202+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aassets/l0.png | 0
Aassets/l1.png | 0
Aassets/l2.png | 0
Aassets/l3.png | 0
Aassets/l4.png | 0
Aassets/l5.png | 0
Aassets/l6.png | 0
Aassets/sweepy.jpg | 0
16 files changed, 1582 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md @@ -0,0 +1,79 @@ +# Sweepy ZMK Configuration + +This is the ZMK configuration for my personal sweep keyboard, which I +have dubbed "Sweepy". + +I built Sweepy, as well as an identical twin (which I do not believe has a name), +with a friend from college. We ordered all the parts, had the PCB's custom +printed, and hand-soldered them ourselves. (This was also my first time +soldering anything.) I think the result looks quite nice! + +![sweepy, a keyboard with a white acrylic base plate, a black PCB, and blue and white keycaps](assets/sweepy.jpg) + +Here are some of the parts we used: + +- PCB: [Sweep, Half Swept](https://github.com/davidphilipbarr/Sweep) +- Switches: [Lowprokb Twilight Ambients Silent Choc Switches](https://lowprokb.ca/collections/switches/products/ambients-silent-choc-switches) +- Microcontrollers: [nice!nano v2.0](https://nicekeyboards.com/nice-nano/) +- Keycaps: [typeractive MKB Choc Keycaps](https://typeractive.xyz/products/mbk-keycaps), white and arctic + +In total, the keyboard cost me around $200. + +## Keyboard Layout + +Sweepy's keyboard layout is based on the programmer dvorak (DVP) layout, which +is the layout I primarily use. The thumb keys are used to activate temporary +layers to access more functionality, including symbols, numbers, navigation +keys, function keys, media control keys, as well as mouse controls. + +In all the images, red indicates which keys need to be held down to access the +layer. + +All the images are screenshots from [keyboard-layout-editor.com](https://www.keyboard-layout-editor.com/). + +### L0: Base Layer + +Standard DVP alphabet layer with a couple symbols. I use partial home row mods +for modifiers other than shift, which I find impacts my typing accuracy when I +put it on my home row. Because of this, I put shift on the Enter key, which +causes fewer mistakes. I also use GUI quite a bit for controlling my computer's +compositor, which is why I put it on my index finger. + +![Alphabet layer](assets/l0.png) + +### L1: Symbol Layer + +![Symbol layer](assets/l1.png) + +### L2: Number and Navigation Layer + +![Number and navigation layer](assets/l2.png) + +### L3: Tri-Layer + +Activated by pressing both layer keys simultaneously. + +![Tri-layer](assets/l3.png) + +### L4: Function Layer + +Activated by pressing both right thumb keys simultaneously. + +![Function layer](assets/l4.png) + +### L5: Mouse Layer + +Activated by pressing both left thumb keys simultaneously. + +![Mouse layer](assets/l5.png) + +### L6: Gaming Layer + +This is a toggleable layer activated from the tri-layer. I use it while playing +video games that use WASD. It converts the left half of the keyboard into a +QWERTY layout, but shifted over by one key so it lines up with the column +staggering nicely. While this mode is active, the right half of the keyboard +becomes an optional macropad, but I usually set it aside to have more room for +my mouse. + +![Gaming layer](assets/l6.png) diff --git a/assets/json/l0.json b/assets/json/l0.json @@ -0,0 +1,191 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "f": 4 + }, + ">\n.", + { + "x": 7 + }, + "c" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "<\n,", + { + "x": 1 + }, + "p", + { + "x": 5 + }, + "g", + { + "x": 1 + }, + "r" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "y", + { + "x": 3 + }, + "f" + ], + [ + { + "y": -0.5 + }, + ":\n;", + { + "x": 1 + }, + "e\n\n\nctrl", + { + "x": 7 + }, + "t\n\n\nctrl", + { + "x": 1 + }, + "l" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "o\n\n\nalt", + { + "x": 1 + }, + "u\n\n\ngui", + { + "x": 5 + }, + "h\n\n\ngui", + { + "x": 1 + }, + "n\n\n\nalt" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "i", + { + "x": 3 + }, + "d" + ], + [ + { + "y": -0.5 + }, + "a", + { + "x": 1 + }, + "j", + { + "x": 7 + }, + "w", + { + "x": 1 + }, + "s" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "q", + { + "x": 1 + }, + "k", + { + "x": 5 + }, + "m", + { + "x": 1 + }, + "v" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "x", + { + "x": 3 + }, + "b" + ], + [ + { + "y": -0.5 + }, + "\"\n'", + { + "x": 11 + }, + "z" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25 + }, + "l2\n<i class='mss mss-Unicode-Escape-3'></i>" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25 + }, + "󰌒\n󱁐" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25 + }, + "󰘶\n󰌑" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75 + }, + "l1\n󰭜" + ] +] +\ No newline at end of file diff --git a/assets/json/l1.json b/assets/json/l1.json @@ -0,0 +1,219 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "f": 4 + }, + "%", + { + "x": 7 + }, + "/" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "$", + { + "x": 1 + }, + "&", + { + "x": 5 + }, + "?", + { + "x": 1 + }, + "#" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "`" + ], + [ + { + "y": -0.5 + }, + "~", + { + "x": 1 + }, + "}", + { + "x": 7 + }, + "+", + { + "x": 1 + }, + "^" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "{", + { + "x": 1 + }, + "(", + { + "x": 5 + }, + ")", + { + "x": 1 + }, + "]" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "=", + { + "x": 3 + }, + "*" + ], + [ + { + "y": -0.5 + }, + "[", + { + "x": 1, + "g": true, + "a": 7 + }, + "", + { + "x": 7, + "g": false, + "a": 4 + }, + "-", + { + "x": 1 + }, + "!" + ], + [ + { + "y": -0.75, + "x": 1, + "g": true, + "a": 7 + }, + "", + { + "x": 1 + }, + "", + { + "x": 5, + "g": false, + "a": 4 + }, + "_", + { + "x": 1 + }, + "\\" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "|" + ], + [ + { + "y": -0.5, + "g": true, + "a": 7 + }, + "", + { + "x": 11, + "g": false, + "a": 4 + }, + "@" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25, + "a": 7 + }, + "" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25, + "a": 4 + }, + "󰘶" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75, + "c": "#aa0000", + "t": "#ffffff", + "g": false, + "a": 4 + }, + "l1" + ] +] +\ No newline at end of file diff --git a/assets/json/l2.json b/assets/json/l2.json @@ -0,0 +1,221 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "f": 4 + }, + "", + { + "x": 7 + }, + "8" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "pgdn", + { + "x": 1 + }, + "pgup", + { + "x": 5 + }, + "7", + { + "x": 1 + }, + "9" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "/" + ], + [ + { + "y": -0.5 + }, + "ins", + { + "x": 1 + }, + "", + { + "x": 7 + }, + "5", + { + "x": 1 + }, + "-" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "", + { + "x": 1 + }, + "", + { + "x": 5 + }, + "4", + { + "x": 1 + }, + "6" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "*" + ], + [ + { + "y": -0.5 + }, + "del", + { + "x": 1 + }, + "home", + { + "x": 7 + }, + "2", + { + "x": 1 + }, + "+" + ], + [ + { + "y": -0.75, + "x": 1, + "g": true, + "a": 7 + }, + "", + { + "x": 1, + "g": false, + "a": 4 + }, + "end", + { + "x": 5 + }, + "1", + { + "x": 1 + }, + "3" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "." + ], + [ + { + "y": -0.5, + "g": true, + "a": 7 + }, + "", + { + "x": 11, + "g": false, + "a": 4 + }, + "󰌑" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25, + "c": "#aa0000", + "t": "#ffffff" + }, + "l2" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25, + "c": "#cccccc", + "t": "#000000", + "g": true, + "a": 7 + }, + "" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25, + "g": false, + "a": 4 + }, + "0" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75, + "g": true, + "a": 7 + }, + "" + ] +] +\ No newline at end of file diff --git a/assets/json/l3.json b/assets/json/l3.json @@ -0,0 +1,226 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "t": "#00000", + "g": true, + "f": 4 + }, + "", + { + "x": 7 + }, + "8" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "pgdn", + { + "x": 1 + }, + "pgup", + { + "x": 5 + }, + "7", + { + "x": 1 + }, + "9" + ], + [ + { + "y": -0.75, + "x": 4, + "g": false + }, + "bt0", + { + "x": 3, + "g": true + }, + "/" + ], + [ + { + "y": -0.5, + "g": false + }, + "reset left", + { + "x": 1, + "g": true + }, + "", + { + "x": 7 + }, + "5", + { + "x": 1, + "g": false + }, + "reset right" + ], + [ + { + "y": -0.75, + "x": 1, + "g": true + }, + "", + { + "x": 1 + }, + "", + { + "x": 5, + "g": false + }, + "l6", + { + "x": 1, + "g": true + }, + "6" + ], + [ + { + "y": -0.75, + "x": 4, + "g": false + }, + "bt1", + { + "x": 3, + "g": true + }, + "*" + ], + [ + { + "y": -0.5, + "g": false + }, + "btldr left", + { + "x": 1, + "g": true + }, + "home", + { + "x": 7 + }, + "2", + { + "x": 1, + "g": false + }, + "btldr right" + ], + [ + { + "y": -0.75, + "x": 1, + "g": true, + "a": 7 + }, + "", + { + "x": 1, + "g": false, + "a": 4 + }, + "btclr cur", + { + "x": 5, + "g": true + }, + "1", + { + "x": 1 + }, + "3" + ], + [ + { + "y": -0.75, + "x": 4, + "g": false + }, + "bt2", + { + "x": 3, + "g": true + }, + "." + ], + [ + { + "y": -0.5, + "g": false + }, + "btclr all", + { + "x": 11, + "g": true + }, + "󰌑" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25, + "c": "#aa0000", + "t": "#ffffff", + "g": false + }, + "l2" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25, + "c": "#cccccc", + "t": "#00000", + "g": true, + "a": 7 + }, + "" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25, + "a": 4 + }, + "0" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75, + "c": "#aa0000", + "t": "#ffffff", + "g": false + }, + "l1" + ] +] +\ No newline at end of file diff --git a/assets/json/l4.json b/assets/json/l4.json @@ -0,0 +1,221 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "f": 4 + }, + "", + { + "x": 7 + }, + "f3" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "", + { + "x": 1 + }, + "", + { + "x": 5 + }, + "f2", + { + "x": 1 + }, + "f4" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "f1" + ], + [ + { + "y": -0.5, + "g": true, + "a": 7 + }, + "", + { + "x": 1, + "g": false, + "a": 4 + }, + "󰐎", + { + "x": 7 + }, + "f7", + { + "x": 1, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 1, + "g": false, + "a": 4 + }, + "󰒮", + { + "x": 1 + }, + "󰒭", + { + "x": 5 + }, + "f6", + { + "x": 1 + }, + "f8" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "prt scr", + { + "x": 3 + }, + "f5" + ], + [ + { + "y": -0.5, + "g": true, + "a": 7 + }, + "", + { + "x": 1, + "g": false, + "a": 4 + }, + "", + { + "x": 7 + }, + "f11", + { + "x": 1, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "", + { + "x": 1, + "g": false, + "a": 4 + }, + "", + { + "x": 5 + }, + "f10", + { + "x": 1 + }, + "f12" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3, + "g": false, + "a": 4 + }, + "f9" + ], + [ + { + "y": -0.5, + "g": true, + "a": 7 + }, + "", + { + "x": 11 + }, + "" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25 + }, + "" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25 + }, + "" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25, + "c": "#aa0000", + "t": "#ffffff", + "g": false + }, + "" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75, + "a": 4 + }, + "l1" + ] +] +\ No newline at end of file diff --git a/assets/json/l5.json b/assets/json/l5.json @@ -0,0 +1,217 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "g": true, + "a": 7, + "f": 4 + }, + "", + { + "x": 7, + "g": false, + "a": 4 + }, + "" + ], + [ + { + "y": -0.75, + "x": 1, + "g": true, + "a": 7 + }, + "", + { + "x": 1 + }, + "", + { + "x": 5, + "g": false, + "a": 4 + }, + "scr", + { + "x": 1 + }, + "scr" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3 + }, + "" + ], + [ + { + "y": -0.5 + }, + "", + { + "x": 1 + }, + "", + { + "x": 7, + "g": false, + "a": 4 + }, + "", + { + "x": 1, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "", + { + "x": 1 + }, + "", + { + "x": 5, + "g": false, + "a": 4 + }, + "", + { + "x": 1 + }, + "" + ], + [ + { + "y": -0.75, + "x": 4, + "g": true, + "a": 7 + }, + "", + { + "x": 3 + }, + "" + ], + [ + { + "y": -0.5 + }, + "", + { + "x": 1 + }, + "", + { + "x": 7 + }, + "", + { + "x": 1 + }, + "" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "", + { + "x": 1 + }, + "", + { + "x": 5 + }, + "", + { + "x": 1 + }, + "" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "", + { + "x": 3 + }, + "" + ], + [ + { + "y": -0.5 + }, + "", + { + "x": 11 + }, + "" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25, + "c": "#aa0000", + "t": "#ffffff", + "g": false, + "a": 4 + }, + "l2" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25, + "a": 7 + }, + "" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25, + "c": "#cccccc", + "t": "#000000", + "a": 4 + }, + "lclk" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75 + }, + "rclk" + ] +] +\ No newline at end of file diff --git a/assets/json/l6.json b/assets/json/l6.json @@ -0,0 +1,201 @@ +[ + { + "css": "* {\n font-family: 'Monofur Nerd Font';\n}" + }, + [ + { + "x": 2, + "f": 4 + }, + "w", + { + "x": 7 + }, + "f3" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "q", + { + "x": 1 + }, + "e", + { + "x": 5 + }, + "f2", + { + "x": 1 + }, + "f4" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "r", + { + "x": 3 + }, + "f1" + ], + [ + { + "y": -0.5 + }, + "<i class='mss mss-Unicode-Escape-3'></i>", + { + "x": 1 + }, + "s", + { + "x": 7 + }, + "f7", + { + "x": 1, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "y": -0.75, + "x": 1, + "g": false, + "a": 4 + }, + "a", + { + "x": 1 + }, + "d", + { + "x": 5 + }, + "f6", + { + "x": 1 + }, + "f8" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "f", + { + "x": 3 + }, + "f5" + ], + [ + { + "y": -0.5 + }, + "󰘶", + { + "x": 1 + }, + "x", + { + "x": 7 + }, + "f11", + { + "x": 1 + }, + "l0" + ], + [ + { + "y": -0.75, + "x": 1 + }, + "z", + { + "x": 1 + }, + "c", + { + "x": 5 + }, + "f10", + { + "x": 1 + }, + "f12" + ], + [ + { + "y": -0.75, + "x": 4 + }, + "v", + { + "x": 3 + }, + "f9" + ], + [ + { + "y": -0.5 + }, + "󰘴", + { + "x": 11, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "r": 15, + "rx": 3.75, + "ry": 4.25, + "y": -0.75, + "x": -0.25, + "g": false, + "a": 4 + }, + "" + ], + [ + { + "r": 30, + "rx": 3, + "ry": 4.75, + "y": -1.75, + "x": 1.25 + }, + "󱁐" + ], + [ + { + "r": -30, + "rx": 10, + "y": -1.75, + "x": -2.25, + "g": true, + "a": 7 + }, + "" + ], + [ + { + "r": -15, + "rx": 9.25, + "ry": 4.25, + "y": -0.75, + "x": -0.75 + }, + "" + ] +] +\ No newline at end of file diff --git a/assets/l0.png b/assets/l0.png Binary files differ. diff --git a/assets/l1.png b/assets/l1.png Binary files differ. diff --git a/assets/l2.png b/assets/l2.png Binary files differ. diff --git a/assets/l3.png b/assets/l3.png Binary files differ. diff --git a/assets/l4.png b/assets/l4.png Binary files differ. diff --git a/assets/l5.png b/assets/l5.png Binary files differ. diff --git a/assets/l6.png b/assets/l6.png Binary files differ. diff --git a/assets/sweepy.jpg b/assets/sweepy.jpg Binary files differ.