├── .github ├── FUNDING.yml ├── images │ ├── conventions.png │ ├── examples │ │ ├── ahk-notifications.gif │ │ ├── automate-caps.gif │ │ ├── automate-layers.gif │ │ ├── automate-watch.gif │ │ └── battery.png │ ├── icons │ │ └── windows │ │ │ ├── caps │ │ │ ├── CW-OFF.png │ │ │ ├── CW-ON.png │ │ │ ├── OFF.png │ │ │ └── ON.png │ │ │ └── layers │ │ │ ├── AXN.png │ │ │ ├── BAS.png │ │ │ ├── DEV.png │ │ │ ├── FNK.png │ │ │ ├── KBD.png │ │ │ └── STG.png │ ├── keyboard │ │ ├── charging.jpg │ │ ├── front.jpg │ │ ├── off.jpg │ │ ├── on.jpg │ │ └── reset.jpg │ ├── layers │ │ ├── android │ │ │ ├── AXN.png │ │ │ ├── BAS.png │ │ │ ├── DEV.png │ │ │ └── STG.png │ │ ├── macos │ │ │ ├── AXN.png │ │ │ ├── BAS.png │ │ │ ├── DEV.png │ │ │ └── STG.png │ │ └── windows │ │ │ ├── AXN.png │ │ │ ├── BAS.png │ │ │ ├── DEV.png │ │ │ └── STG.png │ └── layout │ │ ├── US-International.png │ │ └── US.png └── workflows │ └── build.yml ├── .gitignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── build.yaml ├── case ├── CaseV1.1_Left.stl └── CaseV1.1_Right.stl ├── config ├── corne.conf ├── corne.keymap ├── helpers │ ├── hold.dtsi │ ├── macros.dtsi │ └── morph.dtsi ├── layout │ ├── corne.dtsi │ └── corne.json ├── os │ ├── android │ │ ├── combos │ │ │ └── base.dtsi │ │ ├── hold │ │ │ ├── base.dtsi │ │ │ └── layers.dtsi │ │ ├── keymap.dtsi │ │ ├── keys.dtsi │ │ ├── layers.dtsi │ │ ├── macros │ │ │ ├── dev.dtsi │ │ │ ├── int.dtsi │ │ │ ├── layers.dtsi │ │ │ └── stg.dtsi │ │ └── morph │ │ │ ├── base.dtsi │ │ │ ├── dev.dtsi │ │ │ ├── int.dtsi │ │ │ └── layers.dtsi │ ├── macos │ │ ├── combos │ │ │ ├── base.dtsi │ │ │ ├── help.dtsi │ │ │ └── settings.dtsi │ │ ├── hold │ │ │ ├── base.dtsi │ │ │ ├── dev.dtsi │ │ │ ├── layers.dtsi │ │ │ └── settings.dtsi │ │ ├── keymap.dtsi │ │ ├── keys.dtsi │ │ ├── layers.dtsi │ │ ├── macros │ │ │ ├── dev.dtsi │ │ │ ├── int.dtsi │ │ │ └── layers.dtsi │ │ └── morph │ │ │ ├── actions.dtsi │ │ │ ├── base.dtsi │ │ │ ├── dev.dtsi │ │ │ ├── int.dtsi │ │ │ ├── layers.dtsi │ │ │ └── settings.dtsi │ ├── shared │ │ ├── general.dtsi │ │ ├── hold │ │ │ └── shared.dtsi │ │ ├── keys.dtsi │ │ ├── macros │ │ │ ├── layers.dtsi │ │ │ └── settings.dtsi │ │ ├── morph │ │ │ ├── num.dtsi │ │ │ └── shared.dtsi │ │ └── times.dtsi │ └── windows │ │ ├── combos │ │ ├── base.dtsi │ │ └── help.dtsi │ │ ├── hold │ │ ├── base.dtsi │ │ ├── dev.dtsi │ │ └── layers.dtsi │ │ ├── keymap.dtsi │ │ ├── keys.dtsi │ │ ├── layers.dtsi │ │ ├── macros │ │ ├── dev.dtsi │ │ ├── int.dtsi │ │ └── layers.dtsi │ │ └── morph │ │ ├── actions.dtsi │ │ ├── base.dtsi │ │ ├── dev.dtsi │ │ ├── int.dtsi │ │ ├── layers.dtsi │ │ └── settings.dtsi └── west.yml ├── docs ├── android.md ├── macos.md └── windows.md └── host ├── android └── automate │ ├── 🅰️ Corne Caps.flo │ ├── 🏷️ Corne Layer.flo │ └── 👁️ Corne Watch.flo └── windows └── ahk ├── caps.ahk ├── help.ahk ├── keys.ahk ├── layer.ahk ├── shared.ahk └── startup.ahk /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [deinsoftware] 2 | custom: ["https://paypal.me/equiman/3"] 3 | -------------------------------------------------------------------------------- /.github/images/conventions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/conventions.png -------------------------------------------------------------------------------- /.github/images/examples/ahk-notifications.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/examples/ahk-notifications.gif -------------------------------------------------------------------------------- /.github/images/examples/automate-caps.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/examples/automate-caps.gif -------------------------------------------------------------------------------- /.github/images/examples/automate-layers.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/examples/automate-layers.gif -------------------------------------------------------------------------------- /.github/images/examples/automate-watch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/examples/automate-watch.gif -------------------------------------------------------------------------------- /.github/images/examples/battery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/examples/battery.png -------------------------------------------------------------------------------- /.github/images/icons/windows/caps/CW-OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/caps/CW-OFF.png -------------------------------------------------------------------------------- /.github/images/icons/windows/caps/CW-ON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/caps/CW-ON.png -------------------------------------------------------------------------------- /.github/images/icons/windows/caps/OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/caps/OFF.png -------------------------------------------------------------------------------- /.github/images/icons/windows/caps/ON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/caps/ON.png -------------------------------------------------------------------------------- /.github/images/icons/windows/layers/AXN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/layers/AXN.png -------------------------------------------------------------------------------- /.github/images/icons/windows/layers/BAS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/layers/BAS.png -------------------------------------------------------------------------------- /.github/images/icons/windows/layers/DEV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/layers/DEV.png -------------------------------------------------------------------------------- /.github/images/icons/windows/layers/FNK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/layers/FNK.png -------------------------------------------------------------------------------- /.github/images/icons/windows/layers/KBD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/layers/KBD.png -------------------------------------------------------------------------------- /.github/images/icons/windows/layers/STG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/icons/windows/layers/STG.png -------------------------------------------------------------------------------- /.github/images/keyboard/charging.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/keyboard/charging.jpg -------------------------------------------------------------------------------- /.github/images/keyboard/front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/keyboard/front.jpg -------------------------------------------------------------------------------- /.github/images/keyboard/off.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/keyboard/off.jpg -------------------------------------------------------------------------------- /.github/images/keyboard/on.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/keyboard/on.jpg -------------------------------------------------------------------------------- /.github/images/keyboard/reset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/keyboard/reset.jpg -------------------------------------------------------------------------------- /.github/images/layers/android/AXN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/android/AXN.png -------------------------------------------------------------------------------- /.github/images/layers/android/BAS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/android/BAS.png -------------------------------------------------------------------------------- /.github/images/layers/android/DEV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/android/DEV.png -------------------------------------------------------------------------------- /.github/images/layers/android/STG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/android/STG.png -------------------------------------------------------------------------------- /.github/images/layers/macos/AXN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/macos/AXN.png -------------------------------------------------------------------------------- /.github/images/layers/macos/BAS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/macos/BAS.png -------------------------------------------------------------------------------- /.github/images/layers/macos/DEV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/macos/DEV.png -------------------------------------------------------------------------------- /.github/images/layers/macos/STG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/macos/STG.png -------------------------------------------------------------------------------- /.github/images/layers/windows/AXN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/windows/AXN.png -------------------------------------------------------------------------------- /.github/images/layers/windows/BAS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/windows/BAS.png -------------------------------------------------------------------------------- /.github/images/layers/windows/DEV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/windows/DEV.png -------------------------------------------------------------------------------- /.github/images/layers/windows/STG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layers/windows/STG.png -------------------------------------------------------------------------------- /.github/images/layout/US-International.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layout/US-International.png -------------------------------------------------------------------------------- /.github/images/layout/US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/.github/images/layout/US.png -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | on: [push, pull_request, workflow_dispatch] 2 | 3 | jobs: 4 | build: 5 | uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@main 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Test Files 2 | **/test.h 3 | 4 | # macOS 5 | .DS_Store 6 | .AppleDouble 7 | .LSOverride -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "ahk", 9 | "request": "launch", 10 | "name": "AutoHotkey Debugger", 11 | "program": "${file}", 12 | "stopOnEntry": true 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "ASLD", 4 | "ASLM", 5 | "ASLT", 6 | "ASLU", 7 | "ASRD", 8 | "ASRM", 9 | "ASRT", 10 | "ASRU", 11 | "ASTRK", 12 | "bootloader", 13 | "BSLH", 14 | "bspc", 15 | "BSPC", 16 | "Camilo", 17 | "Colemak", 18 | "Corne", 19 | "crkbd", 20 | "DLLR", 21 | "dtsi", 22 | "FSLH", 23 | "github", 24 | "gtoe", 25 | "homerow", 26 | "KASAS", 27 | "keymap", 28 | "keymaps", 29 | "laao", 30 | "LALT", 31 | "LBKT", 32 | "LBRC", 33 | "LCMD", 34 | "LCTRL", 35 | "ldae", 36 | "loao", 37 | "LSFT", 38 | "lshf", 39 | "LSHFT", 40 | "ltoe", 41 | "Monkeytype", 42 | "MSLD", 43 | "MSLM", 44 | "MSLT", 45 | "MSLU", 46 | "MSRD", 47 | "MSRM", 48 | "MSRT", 49 | "MSRU", 50 | "ncao", 51 | "PRCNT", 52 | "PSCRN", 53 | "QMARK", 54 | "RALT", 55 | "RBKT", 56 | "RBRC", 57 | "RCMD", 58 | "RCTRL", 59 | "rdae", 60 | "RSFT", 61 | "rshf", 62 | "RSHFT", 63 | "SHFT", 64 | "Sweept", 65 | "touchpad", 66 | "zmkfirmware" 67 | ], 68 | "editor.fontLigatures": false, 69 | "markdownlint.config": { 70 | "MD033": false 71 | }, 72 | "editor.formatOnSave": false, 73 | "files.associations": { 74 | "*.dtsi": "cpp", 75 | "*.keymap": "cpp" 76 | }, 77 | "C_Cpp.errorSquiggles": "disabled", 78 | "screencastMode.onlyKeyboardShortcuts": false 79 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "check helper transformation", 8 | "type": "shell", 9 | "command": "gcc -E " 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## 8.2.0 4 | 5 | - Update combo keys to show help keyboad layout. 6 | 7 | ## 8.1.0 8 | 9 | - Updated automate scripts notifications for Android 10 | 11 | ## 8.0.0 12 | 13 | - Create multiple layers by OS starting with Android 14 | - Change the dead keys behavior (using again the ALT key) and accents with macros 15 | 16 | ## 7.0.0 17 | 18 | - AHK it getting the `ALT` key stuck frequently, so I decided move from **en-US** to **en-US International** layout. 19 | - Cleaning up AHK dependency for Spanish accents and JS/TS symbols directly with ZMK. It is not perfect and need some workaround to use some macros that use `=` key and other to avoid VSCode getting stuck with `ALT` key but its better than the problem with AHK 20 | - Remapping a lot of key, shortcuts and change layer activation. Modifier keys with `WIN+ALt` were removed because are hard to access 21 | - `AltGr` can be used as modifier because doesn't work like `ALT RIGHT`, so always uses `ALT LEFT` 22 | 23 | ## 6.0.0 24 | 25 | - Move Function keys to Left half to use the mouse withe Right hand while debugging 26 | - Add shift to `STG` button layer to prevent accidental activation 27 | 28 | ## 5.6.0 29 | 30 | - Update layer icons replacing emoji icons for Unicode letters 31 | - update AHK keys combinations 32 | 33 | ## 5.5.0 34 | 35 | - Add task manager key on `STG` layer 36 | 37 | ## 5.4.0 38 | 39 | - Remap all settings key and windows shortcut 40 | 41 | ## 5.3.0 42 | 43 | - Add AHK reset macro 44 | 45 | ## 5.2.0 46 | 47 | - Reorganizing the layers buttons 48 | 49 | ## 5.1.0 50 | 51 | - Add momentary `DEV` layer on `BAS` 52 | 53 | ## 5.0.0 54 | 55 | - Change shield from `corne` to `swept` 56 | 57 | ## 4.0.0 58 | 59 | - Update `AHK` scripts to version 2 60 | - Fix reset zoom shortcut on Vscode 61 | 62 | ## 3.5.1 63 | 64 | - Fix CapsWord disable with `KP_MINUS` 65 | 66 | ## 3.5.0 67 | 68 | - Added CapsWord notifications 69 | - Define CapsWord to only work on BAS layer 70 | 71 | ## 3.4.2 72 | 73 | - Add fix to battery indicators 74 | 75 | ## 3.4.1 76 | 77 | - Revert battery indicators because is causing `SEMI` act as `COLON` 78 | 79 | ## 3.4.0 80 | 81 | - Add battery indicators for both halves 82 | 83 | ## 3.3.0 84 | 85 | - Remove the key repeat because it was not useful 86 | 87 | ## 3.2.1 88 | 89 | - Fix `AHK` dev shortcuts 90 | 91 | ## 3.2.0 92 | 93 | - Move navigation keys from `AHK` to `FNK` layer 94 | 95 | ## 3.1.0 96 | 97 | - Helper images were increased to 1.5x 98 | - Move notifications to the bottom left of the screen 99 | 100 | ## 3.0.0 101 | 102 | - Move `0` and `=` keys to home row position 103 | - Create a `FNK` sub-layer of `AXN` layer to avoid collisions with another shortcuts 104 | 105 | ## 2.2.0 106 | 107 | - Replace the PrintScreen action with PowerToys shortcuts 108 | 109 | ## 2.1.2 110 | 111 | - Fix AHK to work as OSD (On Screen Notification) 112 | 113 | ## 2.1.1 114 | 115 | - Add colon to AXN layer to easy edit date time values 116 | - Rename DEF to BAS layer to easy identify when show the on screen 117 | - Add tray icon to identify current layer 118 | 119 | ## 2.0.0 120 | 121 | - Move return (and hold F2) to right thumb (double space was not used) 122 | - One key for backspace and another for del 123 | - Auto change layer to BAS when select a bluetooth device 124 | - Add find and replace shortcut key on AXN layer 125 | 126 | ## 1.2.0 127 | 128 | - Close help image with ESC key 129 | - Change notifications from tooltip to Gui with AHK 130 | - Improve images with Figma 131 | 132 | ## 1.1.0 133 | 134 | - Open current layout image L❖+R❖ as help with AHK 135 | 136 | ## 1.0.0 137 | 138 | - Designed with Colemak DHm layout to be used on Windows 139 | - Use AHK for Unicode sequences because buggy results with ZMK 140 | - ZMK does not support assigning the same keys as combos while being used for home rows 141 | - Added AHK layer change notifications 142 | - Added accents, JS/TS shortcuts with ZMK and AHK 143 | - AHK shortcuts use win+ or win+^ to avoid previous shortcuts collisions 144 | - Navigation on the left hand, giving the right hand free for using the mouse or touchpad 145 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2022 dein Software 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ZMK Configuration 2 | 3 | ZMK configuration for [swept-crkbd](https://github.com/AYM1607/swept-crkbd/) also compatible with [crkbd](https://github.com/foostan/crkbd) wireless version with [nice!nano](https://nicekeyboards.com/nice-nano/). 4 | 5 | ![Front](.github/images/keyboard/front.jpg) 6 | 7 | This is a WIP layout based on Colemak DHm that includes Spanish accents, and complemented with easy access to development symbols and JS/TS shortcuts. 8 | 9 | --- 10 | 11 | ## Menu 12 | 13 | - Keyboard 14 | - [Windows](docs/windows.md) 15 | - [macOS](docs/macos.md) 16 | - [Android](docs/android.md) 17 | - [Usage](#usage) 18 | - [Turn on/off](#turn-onoff) 19 | - [Charge](#charge) 20 | - [Reset](#reset) 21 | - [Configure](#configure) 22 | - [Led Indicators](#led-indicators) 23 | - [Battery Indicators](#battery-indicators) 24 | - [Recommendations](#recommendations) 25 | - [About](#about) 26 | 27 | --- 28 | 29 | ## Usage 30 | 31 | ### Turn on/off 32 | 33 | There's a small slider switch right underneath the USB-C connector which controls power. The keyboard is **OFF** when the sliders on both halves are on the **left** positions as shown in the following picture: 34 | 35 | ![Turn off](.github/images/keyboard/off.jpg) 36 | 37 | The keyboard is **ON** when the switch is slided to the **right** on both halves as shown in the following picture (a few blue led flashing fast indicate two halves are paring each other). 38 | 39 | Please note that for the halves to connect correctly, the both must be turned on as closely to THE SAME TIME as possible; it's okay if there's one or two seconds of difference but try to keep it to a minimum. 40 | 41 | ![Turn on](.github/images/keyboard/on.jpg) 42 | 43 | ### Charge 44 | 45 | To charge your boards you must put the half you want to charge in the ON position and connect it to a power source (it can be your computer) through the USB port. 46 | 47 | You know it's charging if you see an orange led like the one in the following picture. The light turns off when charging is done. 48 | 49 | ![Charging](.github/images/keyboard/charging.jpg) 50 | 51 | ### Reset 52 | 53 | Pressing it once resets the keyboard (power cycle so essentially equivalent to turning it off and then back on). 54 | 55 | Pressing it twice quickly puts into programming mode, if you plug it into your computer it shows up as a USB device instead of a keyboard; you can then drag and drop or copy and paste your firmware file to update your keymap. 56 | 57 | ![Reset](.github/images/keyboard/reset.jpg) 58 | 59 | ### Configure 60 | 61 | The wireless version of the Corne use ZMK as their firmware, you can find out more at [ZMK docs](https://zmk.dev/docs) 62 | 63 | These pages will guide you to create your own keymap (follow them after your user-setup) [customization](https://zmk.dev/docs/customization) and [keymaps](https://zmk.dev/docs/features/keymaps) 64 | 65 | Once you make changes to your keymap, you can download the firmware from the github actions tab of your repo. Since the keyboards come pre-flashed, you only need to flash the left half to change your keymaps. You can do it by following these steps: 66 | 67 | 1. Turn off both halves 68 | 69 | 2. Plug in the left half into your computer (without turning it on) 70 | 71 | 3. "Double tap" the reset button (blue led pulsing slowly), play around with the timing between taps since this might not work the first time. If you have trouble with this step, re-plug your board and try again, you might even need to use a different cable or port on your computer. You know this works if you see a blue light fading on and off coming from the nice nano. 72 | 73 | 4. After the previous step you should see a new storage device in your computer called nice!nano, as shown in the picture below. Drag and drop (or copy and paste) the firmware file `corne_left-nice_nano_v2-zmk.uf2` which you should have generated and downloaded by following the guides linked above. 74 | 75 | 5. Wait until the storage device automatically disappears from your computer, this should not take longer than a few seconds. 76 | 77 | 6. Unplug the board from your computer 78 | 79 | 7. Follow the procedure in [How to turn my keyboard on?](#turn-onoff) 80 | 81 | ### Led Indicators 82 | 83 | | Color | Mode | Action | 84 | | ------ | -------------- | ------------------------------------------------------- | 85 | | Blue | Pulsing slowly | bootloader mode (enter by double pressing reset button) | 86 | | Blue | Flashing fast | halves are paring each other | 87 | | Orange | | Charging | 88 | 89 | --- 90 | 91 | ## Recommendations 92 | 93 | ### VSCode Extensions 94 | 95 | - [Const & Props Snippets](https://marketplace.visualstudio.com/items?itemName=deinsoftware.const-props-snippets) 96 | - [Arrow Function Snippets](https://marketplace.visualstudio.com/items?itemName=deinsoftware.arrow-function-snippets) 97 | - [Arrow Function Snippets](https://marketplace.visualstudio.com/items?itemName=deinsoftware.debug-snippets) 98 | 99 | ### Package Managers 100 | 101 | - [Switch Package Manager](https://www.npmjs.com/package/swpm) 102 | 103 | ⇧ [Back to menu](#menu) 104 | 105 | --- 106 | 107 | ## About 108 | 109 | ### Fork 110 | 111 | - [corne-zmk-config](https://github.com/AYM1607/corne-zmk-config) - ZMK Colemak DHm layout 112 | 113 | ### Built With 114 | 115 | - [VS Code](https://code.visualstudio.com/) - Code editing redefined. 116 | - [ZMK Docs](https://zmk.dev/docs) - Modern, open source keyboard firmware 117 | - [ZMK Split Battery](https://github.com/Fukkei/zmk-split-battery) 118 | - [ZMK PR Battery BLE](https://github.com/zmkfirmware/zmk/pull/1243) 119 | - [Keymap Editor](https://nickcoutsos.github.io/keymap-editor) - GUI ZMK Keymap Editor 120 | - [Colemak Mods](https://colemakmods.github.io/mod-dh/keyboards.html#matrix-keyboards) - Colemak-DH for a non-traditional, ergonomic keyboard 121 | - [AutoHotKey](https://www.autohotkey.com/) v2 - The ultimate automation scripting language for Windows 122 | - [Figma](https://www.figma.com/) - The collaborative interface design tool 123 | 124 | ### Typing 125 | 126 | - [Colemak Club](https://gnusenpai.net/colemakclub/) - Learn Colemak Layout 127 | - [Monkeytype](https://monkeytype.com/) - A minimalistic typing test, featuring many test modes, an account system to save your typing speed history and user configurable features like themes, a smooth caret and more. 128 | 129 | ### Versioning 130 | 131 | We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [swept-zmk-config](https://github.com/deinsoftware/swept-zmk-config/tags) on GitHub. 132 | 133 | ### Authors 134 | 135 | - **Camilo Martinez** [[Equiman](http://github.com/equiman)] 136 | 137 | See also the list of [contributors](https://github.com/deinsoftware/swept-zmk-config/contributors) who participated in this project. 138 | 139 | ### Sponsors 140 | 141 | If this project helps you, consider buying me a cup of coffee. 142 | 143 | [![GitHub Sponsors](https://img.shields.io/badge/-GitHub%20Sponsors-gray?style=flat&labelColor=171515&logo=github&logoColor=white&link=https://github.com/sponsors/deinsoftware)](https://github.com/sponsors/deinsoftware) 144 | [![paypal](https://img.shields.io/badge/-PayPal-gray?style=flat&labelColor=00457C&logo=paypal&logoColor=white&link=https://paypal.me/equiman/3)](https://paypal.me/equiman/3) 145 | 146 | ### License 147 | 148 | This project is licensed under the MIT License - see the [LICENSE](LICENSE.md) file for details. 149 | 150 | ⇧ [Back to menu](#menu) 151 | -------------------------------------------------------------------------------- /build.yaml: -------------------------------------------------------------------------------- 1 | # This file generates the GitHub Actions matrix 2 | # For simple board + shield combinations, add them 3 | # to the top level board and shield arrays, for more 4 | # control, add individual board + shield combinations to 5 | # the `include` property, e.g: 6 | # 7 | # board: [ "nice_nano_v2" ] 8 | # shield: [ "corne_left", "corne_right" ] 9 | # include: 10 | # - board: bdn9_rev2 11 | # - board: nice_nano_v2 12 | # shield: reviung41 13 | # 14 | --- 15 | include: 16 | - board: nice_nano_v2 17 | shield: corne_left nice_view_adapter #nice_view 18 | snippet: studio-rpc-usb-uart 19 | cmake-args: -DCONFIG_ZMK_STUDIO=y 20 | - board: nice_nano_v2 21 | shield: corne_right nice_view_adapter #nice_view 22 | - board: nice_nano_v2 23 | shield: settings_reset 24 | -------------------------------------------------------------------------------- /case/CaseV1.1_Left.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/case/CaseV1.1_Left.stl -------------------------------------------------------------------------------- /case/CaseV1.1_Right.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/case/CaseV1.1_Right.stl -------------------------------------------------------------------------------- /config/corne.conf: -------------------------------------------------------------------------------- 1 | # Increase transmission strength. 2 | # https://zmk.dev/docs/troubleshooting/connection-issues#unreliableweak-connection 3 | CONFIG_BT_CTLR_TX_PWR_PLUS_8=y 4 | 5 | # No WPM widget 6 | # https://zmk.dev/docs/config/displays 7 | CONFIG_ZMK_WIDGET_WPM_STATUS=n 8 | CONFIG_ZMK_DISPLAY_WORK_QUEUE_DEDICATED=n 9 | CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE=n 10 | 11 | # Default widget 12 | CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=n 13 | CONFIG_ZMK_LV_FONT_DEFAULT_SMALL_MONTSERRAT_26=n 14 | CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26=n 15 | 16 | # Bluetooth 17 | # https://zmk.dev/docs/config/system#bluetooth 18 | CONFIG_BT_MAX_CONN=7 19 | CONFIG_BT_MAX_PAIRED=7 20 | 21 | # Debug 22 | # https://zmk.dev/docs/config/system#logging 23 | CONFIG_ZMK_USB_LOGGING=n 24 | 25 | # Battery 26 | # https://zmk.dev/docs/config/battery#peripheral-battery-monitoring 27 | CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y 28 | CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY=y 29 | 30 | # Key Chatter 31 | # https://zmk.dev/docs/features/debouncing 32 | # CONFIG_ZMK_KSCAN_DEBOUNCE_PRESS_MS=8 33 | # CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=8 34 | -------------------------------------------------------------------------------- /config/corne.keymap: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | /* ZMK Studio */ 12 | #include "layout/corne.dtsi" 13 | 14 | /* Global */ 15 | #include "os/shared/times.dtsi" 16 | #include "os/shared/general.dtsi" 17 | #include "os/macos/layers.dtsi" 18 | #include "os/windows/layers.dtsi" 19 | #include "os/android/layers.dtsi" 20 | 21 | /* Keys */ 22 | #include "os/shared/keys.dtsi" 23 | #include "os/macos/keys.dtsi" 24 | #include "os/windows/keys.dtsi" 25 | #include "os/android/keys.dtsi" 26 | 27 | /* Helpers */ 28 | #include "helpers/macros.dtsi" 29 | #include "helpers/hold.dtsi" 30 | #include "helpers/morph.dtsi" 31 | 32 | / { 33 | macros { 34 | #include "os/shared/macros/layers.dtsi" 35 | #include "os/shared/macros/settings.dtsi" 36 | 37 | #include "os/macos/macros/layers.dtsi" 38 | #include "os/macos/macros/int.dtsi" 39 | #include "os/macos/macros/dev.dtsi" 40 | 41 | #include "os/windows/macros/layers.dtsi" 42 | #include "os/windows/macros/int.dtsi" 43 | #include "os/windows/macros/dev.dtsi" 44 | 45 | #include "os/android/macros/layers.dtsi" 46 | #include "os/android/macros/int.dtsi" 47 | #include "os/android/macros/dev.dtsi" 48 | #include "os/android/macros/stg.dtsi" 49 | }; 50 | }; 51 | 52 | / { 53 | behaviors { 54 | #include "os/shared/morph/shared.dtsi" 55 | #include "os/shared/morph/num.dtsi" 56 | #include "os/shared/hold/shared.dtsi" 57 | 58 | #include "os/macos/morph/layers.dtsi" 59 | #include "os/macos/morph/base.dtsi" 60 | #include "os/macos/morph/int.dtsi" 61 | #include "os/macos/morph/actions.dtsi" 62 | #include "os/macos/morph/dev.dtsi" 63 | #include "os/macos/morph/settings.dtsi" 64 | #include "os/macos/hold/layers.dtsi" 65 | #include "os/macos/hold/base.dtsi" 66 | #include "os/macos/hold/dev.dtsi" 67 | #include "os/macos/hold/settings.dtsi" 68 | 69 | #include "os/windows/morph/layers.dtsi" 70 | #include "os/windows/morph/base.dtsi" 71 | #include "os/windows/morph/int.dtsi" 72 | #include "os/windows/morph/actions.dtsi" 73 | #include "os/windows/morph/dev.dtsi" 74 | #include "os/windows/morph/settings.dtsi" 75 | #include "os/windows/hold/layers.dtsi" 76 | #include "os/windows/hold/base.dtsi" 77 | #include "os/windows/hold/dev.dtsi" 78 | 79 | #include "os/android/morph/layers.dtsi" 80 | #include "os/android/morph/base.dtsi" 81 | #include "os/android/morph/int.dtsi" 82 | #include "os/android/morph/dev.dtsi" 83 | #include "os/android/hold/layers.dtsi" 84 | #include "os/android/hold/base.dtsi" 85 | }; 86 | }; 87 | 88 | / { 89 | chosen { 90 | zmk,physical-layout = &default_layout; 91 | }; 92 | }; 93 | 94 | / { 95 | combos { 96 | compatible = "zmk,combos"; 97 | 98 | #include "os/macos/combos/base.dtsi" 99 | #include "os/macos/combos/help.dtsi" 100 | #include "os/macos/combos/settings.dtsi" 101 | 102 | #include "os/windows/combos/base.dtsi" 103 | #include "os/windows/combos/help.dtsi" 104 | 105 | #include "os/android/combos/base.dtsi" 106 | }; 107 | }; 108 | 109 | / { 110 | keymap { 111 | compatible = "zmk,keymap"; 112 | 113 | #include "os/macos/keymap.dtsi" 114 | #include "os/windows/keymap.dtsi" 115 | #include "os/android/keymap.dtsi" 116 | }; 117 | }; 118 | -------------------------------------------------------------------------------- /config/helpers/hold.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 Camilo Martinez (Equiman) 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #define MOTO_HOLD(OS, MO, CB, TO) \ 9 | mo_##OS##MO##OS##CB##_to_##OS##TO: hold_mo_##OS##MO##OS##CB##_to_##OS##TO { \ 10 | compatible = "zmk,behavior-hold-tap"; \ 11 | #binding-cells = <2>; \ 12 | tapping-term-ms = ; \ 13 | flavor = "hold-preferred"; \ 14 | bindings = <&mo_##OS##MO##_to_##OS##CB>, <&to_##OS##TO>; \ 15 | }; 16 | 17 | #define HR_HOLD(OS, LYR, MOD, MP) \ 18 | hm_##OS##LYR##_##MOD: hold_hm_##OS##LYR##_##MOD { \ 19 | compatible = "zmk,behavior-hold-tap"; \ 20 | #binding-cells = <2>; \ 21 | tapping-term-ms = ; \ 22 | quick-tap-ms = ; \ 23 | flavor = HR_FLAVOR; \ 24 | bindings = <&kp>, <&MP>; \ 25 | }; 26 | -------------------------------------------------------------------------------- /config/helpers/macros.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 Camilo Martinez (Equiman) 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #define TO_MACRO(OS, TO) \ 9 | to_##OS##TO##: to_##OS##TO##_layer { \ 10 | compatible = "zmk,behavior-macro"; \ 11 | #binding-cells = <0>; \ 12 | bindings = <&to OS##TO &kp F_##OS##TO>; \ 13 | }; 14 | 15 | #define MOTO_MACRO(OS, MO, TO) \ 16 | mo_##OS##MO##_to_##OS##TO##: momentary_##OS##MO##_to_##OS##TO { \ 17 | compatible = "zmk,behavior-macro"; \ 18 | #binding-cells = <0>; \ 19 | wait-ms = ; \ 20 | tap-ms = ; \ 21 | bindings \ 22 | = <¯o_press &mo OS##MO> \ 23 | , <¯o_tap &kp F_##OS##MO> \ 24 | , <¯o_pause_for_release> \ 25 | , <¯o_release &mo OS##MO> \ 26 | , <¯o_tap &kp F_##OS##TO>; \ 27 | }; 28 | -------------------------------------------------------------------------------- /config/helpers/morph.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 Camilo Martinez (Equiman) 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #define MORPH_KASAS(OS, LYR, NAME, DESC, MODS, KEY, KA, KS, KAS) \ 9 | mp_##OS##LYR##_##NAME##_as: morph_##OS##LYR##_##DESC##_alt_shift { \ 10 | compatible = "zmk,behavior-mod-morph"; \ 11 | #binding-cells = <0>; \ 12 | mods = <(MODS)>; \ 13 | bindings = , ; \ 14 | keep-mods = <(MOD_LALT)>; \ 15 | }; \ 16 | mp_##OS##LYR##_##NAME##_a: morph_##OS##LYR##_##DESC##_alt { \ 17 | compatible = "zmk,behavior-mod-morph"; \ 18 | #binding-cells = <0>; \ 19 | mods = <(MODS)>; \ 20 | bindings = , ; \ 21 | keep-mods = <(MOD_LALT)>; \ 22 | }; \ 23 | mp_##OS##LYR##_##NAME: morph_##OS##LYR##_##DESC { \ 24 | compatible = "zmk,behavior-mod-morph"; \ 25 | #binding-cells = <0>; \ 26 | mods = <(MOD_LSFT|MOD_RSFT)>; \ 27 | bindings = <&mp_##OS##LYR##_##NAME##_a>, <&mp_##OS##LYR##_##NAME##_as>; \ 28 | }; 29 | 30 | #define MORPH_KSA(OS, LYR, NAME, DESC, MODS, KEY, KS, KA) \ 31 | mp_##OS##LYR##_##NAME##_a: morph_##OS##LYR##_##DESC##_alt { \ 32 | compatible = "zmk,behavior-mod-morph"; \ 33 | #binding-cells = <0>; \ 34 | mods = <(MODS)>; \ 35 | bindings = , ; \ 36 | keep-mods = <(MOD_LALT)>; \ 37 | }; \ 38 | mp_##OS##LYR##_##NAME: morph_##OS##LYR##_##DESC { \ 39 | compatible = "zmk,behavior-mod-morph"; \ 40 | #binding-cells = <0>; \ 41 | mods = <(MOD_LSFT|MOD_RSFT)>; \ 42 | bindings = <&mp_##OS##LYR##_##NAME##_a>, ; \ 43 | }; 44 | 45 | #define MORPH_KAS(OS, LYR, NAME, DESC, MODS, KEY, KA, KS) \ 46 | mp_##OS##LYR##_##NAME##_s: morph_##OS##LYR##_##DESC##_shift { \ 47 | compatible = "zmk,behavior-mod-morph"; \ 48 | #binding-cells = <0>; \ 49 | mods = <(MOD_LSFT|MOD_RSFT)>; \ 50 | bindings = , ; \ 51 | }; \ 52 | mp_##OS##LYR##_##NAME: morph_##OS##LYR##_##DESC { \ 53 | compatible = "zmk,behavior-mod-morph"; \ 54 | #binding-cells = <0>; \ 55 | mods = <(MODS)>; \ 56 | bindings = <&mp_##OS##LYR##_##NAME##_s>, ; \ 57 | }; 58 | 59 | #define MORPH_KA(OS, LYR, NAME, DESC, MODS, KEY, KA) \ 60 | mp_##OS##LYR##_##NAME: morph_##OS##LYR##_##DESC { \ 61 | compatible = "zmk,behavior-mod-morph"; \ 62 | #binding-cells = <0>; \ 63 | mods = <(MODS)>; \ 64 | bindings = , ; \ 65 | keep-mods = <(MOD_LALT)>; \ 66 | }; 67 | 68 | #define MORPH_KS(OS, LYR, NAME, DESC, KEY, KS) \ 69 | mp_##OS##LYR##_##NAME: morph_##OS##LYR##_##DESC { \ 70 | compatible = "zmk,behavior-mod-morph"; \ 71 | #binding-cells = <0>; \ 72 | mods = <(MOD_LSFT|MOD_RSFT)>; \ 73 | bindings = , ; \ 74 | }; 75 | -------------------------------------------------------------------------------- /config/layout/corne.dtsi: -------------------------------------------------------------------------------- 1 | #include 2 | /* https://zmk-physical-layout-converter.streamlit.app/ */ 3 | 4 | / { 5 | default_layout: default_layout { 6 | compatible = "zmk,physical-layout"; 7 | display-name = "Default Layout"; 8 | transform = <&default_transform>; 9 | 10 | keys // w h x y rot rx ry 11 | = <&key_physical_attrs 100 100 0 105 0 0 0> 12 | , <&key_physical_attrs 100 100 100 105 0 0 0> 13 | , <&key_physical_attrs 100 100 200 35 0 0 0> 14 | , <&key_physical_attrs 100 100 300 0 0 0 0> 15 | , <&key_physical_attrs 100 100 400 30 0 0 0> 16 | , <&key_physical_attrs 100 100 500 45 0 0 0> 17 | , <&key_physical_attrs 100 100 900 45 0 0 0> 18 | , <&key_physical_attrs 100 100 1000 30 0 0 0> 19 | , <&key_physical_attrs 100 100 1100 0 0 0 0> 20 | , <&key_physical_attrs 100 100 1200 35 0 0 0> 21 | , <&key_physical_attrs 100 100 1300 105 0 0 0> 22 | , <&key_physical_attrs 100 100 1400 105 0 0 0> 23 | , <&key_physical_attrs 100 100 0 205 0 0 0> 24 | , <&key_physical_attrs 100 100 100 205 0 0 0> 25 | , <&key_physical_attrs 100 100 200 135 0 0 0> 26 | , <&key_physical_attrs 100 100 300 100 0 0 0> 27 | , <&key_physical_attrs 100 100 400 130 0 0 0> 28 | , <&key_physical_attrs 100 100 500 145 0 0 0> 29 | , <&key_physical_attrs 100 100 900 145 0 0 0> 30 | , <&key_physical_attrs 100 100 1000 130 0 0 0> 31 | , <&key_physical_attrs 100 100 1100 100 0 0 0> 32 | , <&key_physical_attrs 100 100 1200 135 0 0 0> 33 | , <&key_physical_attrs 100 100 1300 205 0 0 0> 34 | , <&key_physical_attrs 100 100 1400 205 0 0 0> 35 | , <&key_physical_attrs 100 100 0 305 0 0 0> 36 | , <&key_physical_attrs 100 100 100 305 0 0 0> 37 | , <&key_physical_attrs 100 100 200 235 0 0 0> 38 | , <&key_physical_attrs 100 100 300 200 0 0 0> 39 | , <&key_physical_attrs 100 100 400 230 0 0 0> 40 | , <&key_physical_attrs 100 100 500 245 0 0 0> 41 | , <&key_physical_attrs 100 100 900 245 0 0 0> 42 | , <&key_physical_attrs 100 100 1000 230 0 0 0> 43 | , <&key_physical_attrs 100 100 1100 200 0 0 0> 44 | , <&key_physical_attrs 100 100 1200 235 0 0 0> 45 | , <&key_physical_attrs 100 100 1300 305 0 0 0> 46 | , <&key_physical_attrs 100 100 1400 305 0 0 0> 47 | , <&key_physical_attrs 100 100 390 340 0 0 0> 48 | , <&key_physical_attrs 100 100 495 340 1300 0 425> 49 | , <&key_physical_attrs 100 100 590 365 2600 0 460> 50 | , <&key_physical_attrs 100 100 810 340 (-2600) 950 460> 51 | , <&key_physical_attrs 100 100 905 330 (-1300) 1050 425> 52 | , <&key_physical_attrs 100 100 1010 340 0 0 0> 53 | ; 54 | }; 55 | }; 56 | -------------------------------------------------------------------------------- /config/layout/corne.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "corne", 3 | "name": "Corne", 4 | "layouts": { 5 | "swept_physical_layout": { 6 | "name": "swept_physical_layout", 7 | "layout": [ 8 | { 9 | "row": 0, 10 | "col": 0, 11 | "x": 0, 12 | "y": 1.05 13 | }, 14 | { 15 | "row": 0, 16 | "col": 1, 17 | "x": 1, 18 | "y": 1.05 19 | }, 20 | { 21 | "row": 0, 22 | "col": 2, 23 | "x": 2, 24 | "y": 0.35 25 | }, 26 | { 27 | "row": 0, 28 | "col": 3, 29 | "x": 3, 30 | "y": 0 31 | }, 32 | { 33 | "row": 0, 34 | "col": 4, 35 | "x": 4, 36 | "y": 0.30 37 | }, 38 | { 39 | "row": 0, 40 | "col": 5, 41 | "x": 5, 42 | "y": 0.45 43 | }, 44 | { 45 | "row": 0, 46 | "col": 7, 47 | "x": 9, 48 | "y": 0.45 49 | }, 50 | { 51 | "row": 0, 52 | "col": 8, 53 | "x": 10, 54 | "y": 0.30 55 | }, 56 | { 57 | "row": 0, 58 | "col": 9, 59 | "x": 11, 60 | "y": 0 61 | }, 62 | { 63 | "row": 0, 64 | "col": 10, 65 | "x": 12, 66 | "y": 0.35 67 | }, 68 | { 69 | "row": 0, 70 | "col": 11, 71 | "x": 13, 72 | "y": 1.05 73 | }, 74 | { 75 | "row": 0, 76 | "col": 12, 77 | "x": 14, 78 | "y": 1.05 79 | }, 80 | { 81 | "row": 1, 82 | "col": 0, 83 | "x": 0, 84 | "y": 2.05 85 | }, 86 | { 87 | "row": 1, 88 | "col": 1, 89 | "x": 1, 90 | "y": 2.05 91 | }, 92 | { 93 | "row": 1, 94 | "col": 2, 95 | "x": 2, 96 | "y": 1.35 97 | }, 98 | { 99 | "row": 1, 100 | "col": 3, 101 | "x": 3, 102 | "y": 1 103 | }, 104 | { 105 | "row": 1, 106 | "col": 4, 107 | "x": 4, 108 | "y": 1.3 109 | }, 110 | { 111 | "row": 1, 112 | "col": 5, 113 | "x": 5, 114 | "y": 1.45 115 | }, 116 | { 117 | "row": 1, 118 | "col": 7, 119 | "x": 9, 120 | "y": 1.45 121 | }, 122 | { 123 | "row": 1, 124 | "col": 8, 125 | "x": 10, 126 | "y": 1.3 127 | }, 128 | { 129 | "row": 1, 130 | "col": 9, 131 | "x": 11, 132 | "y": 1 133 | }, 134 | { 135 | "row": 1, 136 | "col": 10, 137 | "x": 12, 138 | "y": 1.35 139 | }, 140 | { 141 | "row": 1, 142 | "col": 11, 143 | "x": 13, 144 | "y": 2.05 145 | }, 146 | { 147 | "row": 1, 148 | "col": 12, 149 | "x": 14, 150 | "y": 2.05 151 | }, 152 | { 153 | "row": 2, 154 | "col": 0, 155 | "x": 0, 156 | "y": 3.05 157 | }, 158 | { 159 | "row": 2, 160 | "col": 1, 161 | "x": 1, 162 | "y": 3.05 163 | }, 164 | { 165 | "row": 2, 166 | "col": 2, 167 | "x": 2, 168 | "y": 2.35 169 | }, 170 | { 171 | "row": 2, 172 | "col": 3, 173 | "x": 3, 174 | "y": 2 175 | }, 176 | { 177 | "row": 2, 178 | "col": 4, 179 | "x": 4, 180 | "y": 2.3 181 | }, 182 | { 183 | "row": 2, 184 | "col": 5, 185 | "x": 5, 186 | "y": 2.45 187 | }, 188 | { 189 | "row": 2, 190 | "col": 7, 191 | "x": 9, 192 | "y": 2.45 193 | }, 194 | { 195 | "row": 2, 196 | "col": 8, 197 | "x": 10, 198 | "y": 2.3 199 | }, 200 | { 201 | "row": 2, 202 | "col": 9, 203 | "x": 11, 204 | "y": 2 205 | }, 206 | { 207 | "row": 2, 208 | "col": 10, 209 | "x": 12, 210 | "y": 2.35 211 | }, 212 | { 213 | "row": 2, 214 | "col": 11, 215 | "x": 13, 216 | "y": 3.05 217 | }, 218 | { 219 | "row": 2, 220 | "col": 12, 221 | "x": 14, 222 | "y": 3.05 223 | }, 224 | { 225 | "row": 3, 226 | "col": 3, 227 | "x": 3.9, 228 | "y": 3.4 229 | }, 230 | { 231 | "row": 3, 232 | "col": 4, 233 | "x": 4.95, 234 | "y": 3.4, 235 | "r": 13, 236 | "ry": 4.25 237 | }, 238 | { 239 | "row": 3, 240 | "col": 5, 241 | "x": 5.9, 242 | "y": 3.65, 243 | "h": 1, 244 | "r": 26, 245 | "ry": 4.6 246 | }, 247 | { 248 | "row": 3, 249 | "col": 7, 250 | "x": 8.1, 251 | "y": 3.4, 252 | "h": 1, 253 | "r": -26, 254 | "rx": 9.5, 255 | "ry": 4.6 256 | }, 257 | { 258 | "row": 3, 259 | "col": 8, 260 | "x": 9.05, 261 | "y": 3.3, 262 | "r": -13, 263 | "rx": 10.5, 264 | "ry": 4.25 265 | }, 266 | { 267 | "row": 3, 268 | "col": 9, 269 | "x": 10.1, 270 | "y": 3.4 271 | } 272 | ] 273 | } 274 | }, 275 | "sensors": [] 276 | } -------------------------------------------------------------------------------- /config/os/android/combos/base.dtsi: -------------------------------------------------------------------------------- 1 | combo_aCW_on { 2 | bindings = <&cw_aON>; 3 | key-positions = <16 19>; 4 | slow-release; 5 | layers = ; 6 | }; 7 | 8 | combo_aCW_off { 9 | bindings = <&cw_aOFF>; 10 | key-positions = <14 21>; 11 | slow-release; 12 | layers = ; 13 | }; -------------------------------------------------------------------------------- /config/os/android/hold/base.dtsi: -------------------------------------------------------------------------------- 1 | HR_HOLD(a, BAS, LG, mp_ai_a) //hm_aBAS_LG 2 | HR_HOLD(a, BAS, RS, mp_ai_n) //hm_aBAS_RS 3 | HR_HOLD(a, BAS, RA, mp_ai_e) //hm_aBAS_RA 4 | HR_HOLD(a, BAS, RC, mp_ai_i) //hm_aBAS_RC 5 | HR_HOLD(a, BAS, RG, mp_ai_o) //hm_aBAS_RG 6 | -------------------------------------------------------------------------------- /config/os/android/hold/layers.dtsi: -------------------------------------------------------------------------------- 1 | to_aBAS_kp: to_aBAS_kp { 2 | compatible = "zmk,behavior-hold-tap"; 3 | #binding-cells = <2>; 4 | tapping-term-ms = ; 5 | flavor = "hold-preferred"; 6 | bindings = <&to_aBAS>, <&kp>; 7 | }; 8 | 9 | MOTO_HOLD(a, AXN, BAS, FNK) //mo_aAXNaBAS_to_aFNK 10 | MOTO_HOLD(a, AXN, BAS, AXN) //mo_aAXNaBAS_to_aAXN 11 | MOTO_HOLD(a, DEV, BAS, DEV) //mo_aDEVaBAS_to_aDEV 12 | MOTO_HOLD(a, AXN, DEV, BAS) //mo_aAXNaDEV_to_aBAS 13 | MOTO_HOLD(a, AXN, DEV, AXN) //mo_aAXNaDEV_to_aAXN 14 | MOTO_HOLD(a, FNK, AXN, FNK) //mo_aFNKaAXN_to_aFNK 15 | -------------------------------------------------------------------------------- /config/os/android/keymap.dtsi: -------------------------------------------------------------------------------- 1 | android_base_layer { 2 | #define AB13 &hm_aBAS_LG LCMD 0 //A 3 | #define AB14 &hm LCTRL R 4 | #define AB15 &hm LALT S 5 | #define AB16 &hm LSHFT T 6 | 7 | #define AB19 &hm_aBAS_RS RSHFT 0 //N 8 | #define AB20 &hm_aBAS_RA RALT 0 //E 9 | #define AB21 &hm_aBAS_RC RCTRL 0 //I 10 | #define AB22 &hm_aBAS_RG RCMD 0 //O 11 | 12 | #define AB35 &mp_a_stg 13 | 14 | #define AB36 &mp_a_dev 15 | #define AB38 &mo_aAXNaBAS_to_aAXN 0 0 16 | #define AB39 &mo_aAXNaBAS_to_aFNK 0 0 17 | #define AB41 &mp_a_dev 18 | 19 | display-name = "aBAS"; 20 | bindings = < 21 | AKY_ESC &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &mp_ai_u &mp_ai_y &mp_k_m NAV_DEL 22 | &mp_bc AB13 AB14 AB15 AB16 &kp G &kp M AB19 AB20 AB21 AB22 NAV_BSPC 23 | AKY_TAB &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &mp_cs &mp_dc &mp_ak_q AB35 24 | AB36 KEY_SPC AB38 AB39 AKY_RET AB41 25 | >; 26 | }; 27 | 28 | android_dev_layer { 29 | #define AD13 &hm LCMD AMPS 30 | #define AD14 &hm LCTRL LBRC 31 | #define AD15 &hm LALT RBRC 32 | #define AD16 &hm LSHFT EQUAL 33 | 34 | #define AD19 &hm RSHFT EXCL 35 | #define AD20 &hm RALT LBKT 36 | #define AD21 &hm RCTRL RBKT 37 | #define AD22 &hm RCMD PIPE 38 | 39 | #define AD38 &mo_aAXNaDEV_to_aBAS 0 0 40 | #define AD39 &mo_aAXNaDEV_to_aAXN 0 0 41 | 42 | display-name = "aDEV"; 43 | bindings = < 44 | AKY_ESC &kp AT &kp POUND &kp DLLR &kp PLUS &m_ai_d &m_ai_t &kp MINUS &kp UNDER &kp PRCNT &m_ai_c NAV_DEL 45 | &mp_bc AD13 AD14 AD15 AD16 &m_ai_s &m_ai_g AD19 AD20 AD21 AD22 NAV_BSPC 46 | AKY_TAB &kp LC(R) &kp LPAR &kp RPAR &kp ASTRK &kp BSLH &kp FSLH &kp QMARK &kp LT &kp GT &mp_aDEV_ql &none 47 | &mp_cs KEY_SPC AD38 AD39 AKY_RET &mp_dc 48 | >; 49 | }; 50 | 51 | android_act_num_layer { 52 | #define AA01 &kp LA(LS(RIGHT)) // tap: expand selection 53 | #define AA02 &kp LC(LS(TAB)) // tap: prev tab 54 | #define AA04 &kp LC(TAB) // tap: next tab 55 | #define AA05 &kp LC(F) // tap: find 56 | #define AA13 &hm LCMD LA(LS(LEFT)) // tap: shrink selection 57 | #define AA14 &hm LCTRL LEFT 58 | #define AA15 &hm LALT DOWN 59 | #define AA16 &hm LSHFT RIGHT 60 | #define AA17 &kp LC(H) // tap: replace 61 | 62 | #define AA19 &hm RSHFT N4 63 | #define AA20 &hm RALT N5 64 | #define AA21 &hm RCTRL N6 65 | #define AA22 &hm RCMD EQUAL 66 | 67 | #define AA38 &to_aBAS 68 | #define AA39 &mo_aFNKaAXN_to_aFNK 0 0 69 | 70 | #define AKY_UNDO &kp LC(Z) // tap: undo 71 | #define AKY_REDO &kp LC(LS(Z)) // tap: redo 72 | #define AKY_CUT &kp LC(X) // tap: cut 73 | #define AKY_COPY &kp LC(C) // tap: copy 74 | #define AKY_PASTE &kp LC(V) // tap: paste 75 | 76 | display-name = "aAXN"; 77 | bindings = < 78 | AKY_ESC AA01 AA02 &kp UP AA04 AA05 &kp KP_PLUS &kp N7 &kp N8 &kp N9 &kp KP_MULTIPLY NAV_DEL 79 | &mp_bc AA13 AA14 AA15 AA16 AA17 &kp N0 AA19 AA20 AA21 AA22 NAV_BSPC 80 | AKY_TAB AKY_UNDO AKY_CUT AKY_COPY AKY_PASTE AKY_REDO &mp_k_m &kp N1 &kp N2 &kp N3 &kp KP_DIVIDE &none 81 | &mp_cs KEY_SPC AA38 AA39 AKY_RET &mp_dc 82 | >; 83 | }; 84 | 85 | android_functions_layer { 86 | #define AK13 &hm LCMD F5 87 | #define AK14 &hm LCTRL F6 88 | #define AK15 &hm LALT F7 89 | #define AK16 &hm LSHFT F8 90 | 91 | #define AK19 &hm RSHFT HOME 92 | #define AK20 &hm RALT PG_DN 93 | #define AK21 &hm RCTRL END 94 | #define AK22 &kp RCMD 95 | 96 | #define AK38 &to_aBAS 97 | #define AK39 &to_aAXN 98 | 99 | display-name = "aFNK"; 100 | bindings = < 101 | AKY_ESC &kp F9 &kp F10 &kp F11 &kp F12 &none &none &none &kp PG_UP &none &none NAV_DEL 102 | &mp_bc AK13 AK14 AK15 AK16 &none &none AK19 AK20 AK21 AK22 NAV_BSPC 103 | AKY_TAB &kp F1 &kp F2 &kp F3 &kp F4 &none &none &none &none &none &none &none 104 | &mp_cs KEY_SPC AK38 AK39 AKY_RET &mp_dc 105 | >; 106 | }; 107 | 108 | android_settings_layer { 109 | #define ASLU0 MKY_ESC 110 | #define ASLU1 &m_s_b1 111 | #define ASLU2 &m_s_b2 112 | #define ASLU3 &none 113 | #define ASLU4 &kp LG(B) // tap: browser 114 | #define ASLU5 &kp LCMD // tap: assist 115 | 116 | #define ASLM0 &none 117 | #define ASLM1 &m_s_b3 118 | #define ASLM2 &m_s_b4 119 | #define ASLM3 &none 120 | #define ASLM4 &kp LG(L) // tap: calendar 121 | #define ASLM5 &kp LG(P) // tap: music 122 | 123 | #define ASLD0 &mp_sSTG_cb // tap: none | shift: clear current profile | alt: clear all profiles 124 | #define ASLD1 &m_s_b5 125 | #define ASLD2 &m_s_b6 126 | #define ASLD3 &none 127 | #define ASLD4 &kp LG(E) // tap: mail 128 | #define ASLD5 &kp LG(C) // tap: contacts 129 | 130 | 131 | #define ASRU0 &kp C_VOL_UP 132 | #define ASRU1 &none 133 | #define ASRU2 &none 134 | #define ASRU3 &none 135 | #define ASRU4 &kp LG(N) // tap: notifications 136 | #define ASRU5 &m_as_a // tap: apps 137 | 138 | #define ASRM0 &kp C_MUTE 139 | #define ASRM1 &hm RSHFT C_PREV // tap: previous 140 | #define ASRM2 &hm LALT C_PP // tap: play/pause 141 | #define ASRM3 &kp C_NEXT // tap: next 142 | #define ASRM4 &kp LG(RET) // tap: home 143 | #define ASRM5 &kp LG(FSLH) // tap: keyboard shortcuts 144 | 145 | #define ASRD0 &kp C_VOL_DN 146 | #define ASRD1 &none 147 | #define ASRD2 &none 148 | #define ASRD3 &none 149 | #define ASRD4 &none 150 | #define ASRD5 &none 151 | 152 | 153 | #define ASLT2 &kp C_BRI_DN 154 | #define ASLT1 KEY_SPC 155 | #define ASLT0 &to_aBAS 156 | 157 | #define ASRT0 &to_aAXN 158 | #define ASRT1 MKY_RET 159 | #define ASRT2 &kp C_BRI_UP 160 | 161 | 162 | display-name = "mSTG"; 163 | bindings = < 164 | ASLU0 ASLU1 ASLU2 ASLU3 ASLU4 ASLU5 ASRU0 ASRU1 ASRU2 ASRU3 ASRU4 ASRU5 165 | ASLM0 ASLM1 ASLM2 ASLM3 ASLM4 ASLM5 ASRM0 ASRM1 ASRM2 ASRM3 ASRM4 ASRM5 166 | ASLD0 ASLD1 ASLD2 ASLD3 ASLD4 ASLD5 ASRD0 ASRD1 ASRD2 ASRD3 ASRD4 ASRD5 167 | ASLT2 ASLT1 ASLT0 ASRT0 ASRT1 ASRT2 168 | >; 169 | }; 170 | 171 | -------------------------------------------------------------------------------- /config/os/android/keys.dtsi: -------------------------------------------------------------------------------- 1 | /* Shared Keys */ 2 | #define AKY_ESC &to_aBAS_kp 0 ESC // tap: esc | long-tap: BAS layer 3 | #define AKY_RET &mt F2 RET // tap: return | long-tap: rename (like macOs) 4 | #define AKY_TAB &mt RIGHT TAB // tap: tab | long-tap: right (terminal autocompletion) 5 | -------------------------------------------------------------------------------- /config/os/android/layers.dtsi: -------------------------------------------------------------------------------- 1 | /* android */ 2 | #define aBAS 10 3 | #define aDEV 11 4 | #define aAXN 12 5 | #define aFNK 13 6 | #define aSTG 14 7 | 8 | 9 | /* Helpers */ 10 | #define H_aCWR LG(LS(F6)) 11 | #define F_aBAS LG(LS(F7)) 12 | #define F_aDEV LG(LS(F8)) 13 | #define F_aAXN LG(LS(F9)) 14 | #define F_aFNK LG(LS(F10)) 15 | #define F_aSTG LG(LS(F11)) -------------------------------------------------------------------------------- /config/os/android/macros/dev.dtsi: -------------------------------------------------------------------------------- 1 | // action: ?░:░ 2 | m_ad_cto: macro_android_conditional_ternary_operator { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | bindings 6 | = <&none> 7 | , <¯o_wait_time MC_WAIT> 8 | , <&kp QMARK &kp SPACE &kp SPACE &kp COLON &kp SPACE> 9 | , <&kp LEFT &kp LEFT &kp LEFT>; 10 | }; 11 | 12 | // action: ?. 13 | m_ad_oco: macro_android_optional_chaining_operator { 14 | compatible = "zmk,behavior-macro"; 15 | #binding-cells = <0>; 16 | bindings 17 | = <&kp QMARK &kp DOT>; 18 | }; 19 | -------------------------------------------------------------------------------- /config/os/android/macros/int.dtsi: -------------------------------------------------------------------------------- 1 | // action: á 2 | m_ai_a: macro_android_int_a { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | wait-ms = ; 6 | bindings 7 | = <&none> 8 | , <¯o_wait_time MC_WAIT> 9 | , <&kp SQT> 10 | , <&kp A>; 11 | }; 12 | 13 | // action: Á 14 | m_ai_as: macro_android_int_a_shift { 15 | compatible = "zmk,behavior-macro"; 16 | #binding-cells = <0>; 17 | wait-ms = ; 18 | bindings 19 | = <&none> 20 | , <¯o_wait_time MC_WAIT> 21 | , <&kp SQT> 22 | , <&kp RS(A)>; 23 | }; 24 | 25 | // action: é 26 | m_ai_e: macro_android_int_e { 27 | compatible = "zmk,behavior-macro"; 28 | #binding-cells = <0>; 29 | wait-ms = ; 30 | bindings 31 | = <&none> 32 | , <¯o_wait_time MC_WAIT> 33 | , <&kp SQT> 34 | , <&kp E>; 35 | }; 36 | 37 | // action: É 38 | m_ai_es: macro_android_int_e_shift { 39 | compatible = "zmk,behavior-macro"; 40 | #binding-cells = <0>; 41 | wait-ms = ; 42 | bindings 43 | = <&none> 44 | , <¯o_wait_time MC_WAIT> 45 | , <&kp SQT> 46 | , <&kp LS(E)>; 47 | }; 48 | 49 | // action: í 50 | m_ai_i: macro_android_int_i { 51 | compatible = "zmk,behavior-macro"; 52 | #binding-cells = <0>; 53 | wait-ms = ; 54 | bindings 55 | = <&none> 56 | , <¯o_wait_time MC_WAIT> 57 | , <&kp SQT> 58 | , <&kp I>; 59 | }; 60 | 61 | // action: Í 62 | m_ai_is: macro_android_int_i_shift { 63 | compatible = "zmk,behavior-macro"; 64 | #binding-cells = <0>; 65 | wait-ms = ; 66 | bindings 67 | = <&none> 68 | , <¯o_wait_time MC_WAIT> 69 | , <&kp SQT> 70 | , <&kp LS(I)>; 71 | }; 72 | 73 | // action: ó 74 | m_ai_o: macro_android_int_o { 75 | compatible = "zmk,behavior-macro"; 76 | #binding-cells = <0>; 77 | wait-ms = ; 78 | bindings 79 | = <&none> 80 | , <¯o_wait_time MC_WAIT> 81 | , <&kp SQT> 82 | , <&kp O>; 83 | }; 84 | 85 | // action: Ó 86 | m_ai_os: macro_android_int_o_shift { 87 | compatible = "zmk,behavior-macro"; 88 | #binding-cells = <0>; 89 | wait-ms = ; 90 | bindings 91 | = <&none> 92 | , <¯o_wait_time MC_WAIT> 93 | , <&kp SQT> 94 | , <&kp LS(O)>; 95 | }; 96 | 97 | // action: ú 98 | m_ai_u: macro_android_int_u { 99 | compatible = "zmk,behavior-macro"; 100 | #binding-cells = <0>; 101 | wait-ms = ; 102 | bindings 103 | = <&none> 104 | , <¯o_wait_time MC_WAIT> 105 | , <&kp SQT> 106 | , <&kp U>; 107 | }; 108 | 109 | // action: Ú 110 | m_ai_us: macro_android_int_u_shift { 111 | compatible = "zmk,behavior-macro"; 112 | #binding-cells = <0>; 113 | wait-ms = ; 114 | bindings 115 | = <&none> 116 | , <¯o_wait_time MC_WAIT> 117 | , <&kp SQT> 118 | , <&kp LS(U)>; 119 | }; 120 | 121 | // action: ü 122 | m_ai_y: macro_android_int_y { 123 | compatible = "zmk,behavior-macro"; 124 | #binding-cells = <0>; 125 | wait-ms = ; 126 | bindings 127 | = <&none> 128 | , <¯o_wait_time MC_WAIT> 129 | , <&kp DQT> 130 | , <&kp U>; 131 | }; 132 | 133 | // action: Ü 134 | m_ai_ys: macro_android_int_y_shift { 135 | compatible = "zmk,behavior-macro"; 136 | #binding-cells = <0>; 137 | wait-ms = ; 138 | bindings 139 | = <&none> 140 | , <¯o_wait_time MC_WAIT> 141 | , <&kp DQT> 142 | , <&kp LS(U)>; 143 | }; 144 | 145 | // action: ñ 146 | m_ai_n: macro_android_int_n { 147 | compatible = "zmk,behavior-macro"; 148 | #binding-cells = <0>; 149 | wait-ms = ; 150 | bindings 151 | = <&none> 152 | , <¯o_wait_time MC_WAIT> 153 | , <&kp TILDE> 154 | , <&kp N>; 155 | }; 156 | 157 | // action: Ñ 158 | m_ai_ns: macro_android_int_n_shift { 159 | compatible = "zmk,behavior-macro"; 160 | #binding-cells = <0>; 161 | wait-ms = ; 162 | bindings 163 | = <&none> 164 | , <¯o_wait_time MC_WAIT> 165 | , <&kp TILDE> 166 | , <&kp LS(N)>; 167 | }; 168 | 169 | // action: ` 170 | m_ai_g: macro_android_int_grave { 171 | compatible = "zmk,behavior-macro"; 172 | #binding-cells = <0>; 173 | bindings = 174 | <&kp GRAVE>; 175 | }; 176 | 177 | // action: ~ 178 | m_ai_t: macro_android_int_tilde { 179 | compatible = "zmk,behavior-macro"; 180 | #binding-cells = <0>; 181 | bindings = 182 | <&kp TILDE>; 183 | }; 184 | 185 | // action: ^ 186 | m_ai_c: macro_android_int_caret { 187 | compatible = "zmk,behavior-macro"; 188 | #binding-cells = <0>; 189 | bindings = 190 | <&kp CARET>; 191 | }; 192 | 193 | // action: " 194 | m_ai_d: macro_android_int_double_quote { 195 | compatible = "zmk,behavior-macro"; 196 | #binding-cells = <0>; 197 | bindings = 198 | <&kp DQT>; 199 | }; 200 | 201 | // action: ' 202 | m_ai_s: macro_android_int_single_quote { 203 | compatible = "zmk,behavior-macro"; 204 | #binding-cells = <0>; 205 | bindings = 206 | <&kp SQT>; 207 | }; 208 | -------------------------------------------------------------------------------- /config/os/android/macros/layers.dtsi: -------------------------------------------------------------------------------- 1 | TO_MACRO(a, DEV) //to_aDEV 2 | TO_MACRO(a, AXN) //to_aAXN 3 | TO_MACRO(a, FNK) //to_aFNK 4 | TO_MACRO(a, STG) //to_aSTG 5 | 6 | MOTO_MACRO(a, AXN, BAS) //mo_aAXN_to_aBAS 7 | MOTO_MACRO(a, AXN, DEV) //mo_aAXN_to_aDEV 8 | MOTO_MACRO(a, STG, BAS) //mo_aSTG_to_aBAS 9 | MOTO_MACRO(a, DEV, BAS) //mo_aDEV_to_aBAS 10 | MOTO_MACRO(a, FNK, AXN) //mo_aFNK_to_aAXN 11 | 12 | cw_aON: cw_aON { 13 | compatible = "zmk,behavior-macro"; 14 | #binding-cells = <0>; 15 | bindings = 16 | <&kp LC(H_aCWR) &cw>; 17 | }; 18 | 19 | cw_aOFF: cw_aOFF { 20 | compatible = "zmk,behavior-macro"; 21 | #binding-cells = <0>; 22 | bindings = 23 | <&kp LA(H_aCWR) &kp K_CANCEL>; 24 | }; -------------------------------------------------------------------------------- /config/os/android/macros/stg.dtsi: -------------------------------------------------------------------------------- 1 | // action: apps 2 | m_as_a: macro_android_stg_a { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | wait-ms = ; 6 | bindings 7 | = <&none> 8 | , <¯o_wait_time MC_WAIT> 9 | , <&kp LG(RET)> 10 | , <&kp LC(A)>; 11 | }; 12 | -------------------------------------------------------------------------------- /config/os/android/morph/base.dtsi: -------------------------------------------------------------------------------- 1 | // tap: ' 2 | // shift: " 3 | mp_ak_q: morph_android_key_quote { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&m_ai_s>, <&m_ai_d>; 8 | }; 9 | -------------------------------------------------------------------------------- /config/os/android/morph/dev.dtsi: -------------------------------------------------------------------------------- 1 | //mp_aDEV_ql 2 | MORPH_KS( 3 | a, 4 | DEV, 5 | ql, 6 | question_logical, 7 | &m_ad_oco, // tap: ?. 8 | &m_ad_cto // shift: ?░:░ 9 | ) 10 | -------------------------------------------------------------------------------- /config/os/android/morph/int.dtsi: -------------------------------------------------------------------------------- 1 | // tap: a 2 | // alt: á 3 | // alt+shift: Á 4 | mp_ai_as: morph_android_a_shift { 5 | compatible = "zmk,behavior-mod-morph"; 6 | #binding-cells = <0>; 7 | mods = <(MOD_LSFT|MOD_RSFT)>; 8 | bindings = <&m_ai_a>, <&m_ai_as>; 9 | }; 10 | mp_ai_a: morph_android_a { 11 | compatible = "zmk,behavior-mod-morph"; 12 | #binding-cells = <0>; 13 | mods = <(MOD_LALT|MOD_RALT)>; 14 | bindings = <&kp A>, <&mp_ai_as>; 15 | }; 16 | 17 | // tap: e 18 | // alt: é 19 | // alt+shift: É 20 | mp_ai_es: morph_android_e_shift { 21 | compatible = "zmk,behavior-mod-morph"; 22 | #binding-cells = <0>; 23 | mods = <(MOD_LSFT|MOD_RSFT)>; 24 | bindings = <&m_ai_e>, <&m_ai_es>; 25 | }; 26 | mp_ai_e: morph_android_e { 27 | compatible = "zmk,behavior-mod-morph"; 28 | #binding-cells = <0>; 29 | mods = <(MOD_LALT|MOD_RALT)>; 30 | bindings = <&kp E>, <&mp_ai_es>; 31 | }; 32 | 33 | // tap: i 34 | // alt: í 35 | // alt+shift: Í 36 | mp_ai_is: morph_android_i_shift { 37 | compatible = "zmk,behavior-mod-morph"; 38 | #binding-cells = <0>; 39 | mods = <(MOD_LSFT|MOD_RSFT)>; 40 | bindings = <&m_ai_i>, <&m_ai_is>; 41 | }; 42 | mp_ai_i: morph_android_i { 43 | compatible = "zmk,behavior-mod-morph"; 44 | #binding-cells = <0>; 45 | mods = <(MOD_LALT|MOD_RALT)>; 46 | bindings = <&kp I>, <&mp_ai_is>; 47 | }; 48 | 49 | // tap: o 50 | // alt: ó 51 | // alt+shift: Ó 52 | mp_ai_os: morph_android_o_shift { 53 | compatible = "zmk,behavior-mod-morph"; 54 | #binding-cells = <0>; 55 | mods = <(MOD_LSFT|MOD_RSFT)>; 56 | bindings = <&m_ai_o>, <&m_ai_os>; 57 | }; 58 | mp_ai_o: morph_android_o { 59 | compatible = "zmk,behavior-mod-morph"; 60 | #binding-cells = <0>; 61 | mods = <(MOD_LALT|MOD_RALT)>; 62 | bindings = <&kp O>, <&mp_ai_os>; 63 | }; 64 | 65 | // tap: u 66 | // alt: ú 67 | // alt+shift: Ú 68 | mp_ai_us: morph_android_u_shift { 69 | compatible = "zmk,behavior-mod-morph"; 70 | #binding-cells = <0>; 71 | mods = <(MOD_LSFT|MOD_RSFT)>; 72 | bindings = <&m_ai_u>, <&m_ai_us>; 73 | }; 74 | mp_ai_u: morph_android_u { 75 | compatible = "zmk,behavior-mod-morph"; 76 | #binding-cells = <0>; 77 | mods = <(MOD_LALT|MOD_RALT)>; 78 | bindings = <&kp U>, <&mp_ai_us>; 79 | }; 80 | 81 | // tap: n 82 | // alt: ñ 83 | // alt+shift: Ñ 84 | mp_ai_ns: morph_android_n_shift { 85 | compatible = "zmk,behavior-mod-morph"; 86 | #binding-cells = <0>; 87 | mods = <(MOD_LSFT|MOD_RSFT)>; 88 | bindings = <&m_ai_n>, <&m_ai_ns>; 89 | }; 90 | mp_ai_n: morph_android_n { 91 | compatible = "zmk,behavior-mod-morph"; 92 | #binding-cells = <0>; 93 | mods = <(MOD_LALT|MOD_RALT)>; 94 | bindings = <&kp N>, <&mp_ai_ns>; 95 | }; 96 | 97 | // tap: y 98 | // alt: ü 99 | // alt+shift: Ü 100 | mp_ai_ys: morph_android_y_shift { 101 | compatible = "zmk,behavior-mod-morph"; 102 | #binding-cells = <0>; 103 | mods = <(MOD_LSFT|MOD_RSFT)>; 104 | bindings = <&m_ai_y>, <&m_ai_ys>; 105 | }; 106 | mp_ai_y: morph_android_y { 107 | compatible = "zmk,behavior-mod-morph"; 108 | #binding-cells = <0>; 109 | mods = <(MOD_LALT|MOD_RALT)>; 110 | bindings = <&kp Y>, <&mp_ai_ys>; 111 | }; 112 | -------------------------------------------------------------------------------- /config/os/android/morph/layers.dtsi: -------------------------------------------------------------------------------- 1 | mp_a_stg: morph_android_stg_layer { 2 | compatible = "zmk,behavior-mod-morph"; 3 | #binding-cells = <0>; 4 | mods = <(MOD_LSFT|MOD_RSFT)>; 5 | bindings = <&mo_aSTG_to_aBAS>, <&to_aSTG>; 6 | }; 7 | 8 | mp_a_dev: morph_android_dev_layer { 9 | compatible = "zmk,behavior-mod-morph"; 10 | #binding-cells = <0>; 11 | mods = <(MOD_LSFT|MOD_RSFT)>; 12 | bindings = <&mo_aDEV_to_aBAS>, <&to_aDEV>; 13 | }; 14 | -------------------------------------------------------------------------------- /config/os/macos/combos/base.dtsi: -------------------------------------------------------------------------------- 1 | combo_mCW_on { 2 | bindings = <&cw_mON>; 3 | key-positions = <16 19>; 4 | slow-release; 5 | layers = ; 6 | }; 7 | 8 | combo_mCW_off { 9 | bindings = <&cw_mOFF>; 10 | key-positions = <14 21>; 11 | slow-release; 12 | layers = ; 13 | }; -------------------------------------------------------------------------------- /config/os/macos/combos/help.dtsi: -------------------------------------------------------------------------------- 1 | combo_mac_help-mBAS { 2 | bindings = <&kp LG(LC(F_mBAS))>; 3 | key-positions = <12 23>; 4 | slow-release; 5 | layers = ; 6 | }; 7 | 8 | combo_mac_help-mDEV { 9 | bindings = <&kp LG(LC(F_mDEV))>; 10 | key-positions = <12 23>; 11 | slow-release; 12 | layers = ; 13 | }; 14 | 15 | combo_mac_help-mAXN { 16 | bindings = <&kp LG(LC(F_mAXN))>; 17 | key-positions = <12 23>; 18 | slow-release; 19 | layers = ; 20 | }; 21 | 22 | combo_mac_help-mFNK { 23 | bindings = <&kp LG(LC(F_mFNK))>; 24 | key-positions = <12 23>; 25 | slow-release; 26 | layers = ; 27 | }; 28 | 29 | combo_mac_help-mSTG { 30 | bindings = <&kp LG(LC(F_mSTG))>; 31 | key-positions = <12 23>; 32 | slow-release; 33 | layers = ; 34 | }; -------------------------------------------------------------------------------- /config/os/macos/combos/settings.dtsi: -------------------------------------------------------------------------------- 1 | combo_mac_mSTG { 2 | bindings = <&mo_mSTG_to_mBAS>; 3 | key-positions = <38 39>; 4 | slow-release; 5 | layers = ; 6 | }; -------------------------------------------------------------------------------- /config/os/macos/hold/base.dtsi: -------------------------------------------------------------------------------- 1 | HR_HOLD(m, BAS, RS, mp_mi_n) //hm_mBAS_RS 2 | HR_HOLD(m, BAS, RA, mp_mi_e) //hm_mBAS_RA 3 | HR_HOLD(m, BAS, LC, mp_mi_a) //hm_mBAS_LC 4 | HR_HOLD(m, BAS, RC, mp_mi_i) //hm_mBAS_RC 5 | HR_HOLD(m, BAS, RG, mp_mi_o) //hm_mBAS_RG 6 | -------------------------------------------------------------------------------- /config/os/macos/hold/dev.dtsi: -------------------------------------------------------------------------------- 1 | HR_HOLD(m, DEV, RS, mp_mDEV_es) //hm_mDEV_RS 2 | HR_HOLD(m, DEV, RA, mp_mDEV_lb) //hm_mDEV_RA 3 | HR_HOLD(m, DEV, RC, mp_mDEV_rb) //hm_mDEV_RC 4 | -------------------------------------------------------------------------------- /config/os/macos/hold/layers.dtsi: -------------------------------------------------------------------------------- 1 | to_mBAS_kp: to_mBAS_kp { 2 | compatible = "zmk,behavior-hold-tap"; 3 | #binding-cells = <2>; 4 | tapping-term-ms = ; 5 | flavor = "hold-preferred"; 6 | bindings = <&to_mBAS>, <&kp>; 7 | }; 8 | 9 | MOTO_HOLD(m, AXN, BAS, FNK) //mo_mAXNmBAS_to_mFNK 10 | MOTO_HOLD(m, AXN, BAS, AXN) //mo_mAXNwBAS_to_mAXN 11 | MOTO_HOLD(m, DEV, BAS, DEV) //mo_mDEVmBAS_to_mDEV 12 | MOTO_HOLD(m, AXN, DEV, BAS) //mo_mAXNmDEV_to_mBAS 13 | MOTO_HOLD(m, AXN, DEV, AXN) //mo_mAXNwDEV_to_mAXN 14 | MOTO_HOLD(m, FNK, AXN, FNK) //mo_mFNKmAXN_to_mFNK 15 | -------------------------------------------------------------------------------- /config/os/macos/hold/settings.dtsi: -------------------------------------------------------------------------------- 1 | HR_HOLD(m, STG, LC, m_s_b3) //hm_mSTG_LC 2 | HR_HOLD(m, STG, LS, mp_mSTG_screenshot) //hm_mSTG_LS 3 | HR_HOLD(m, STG, RS, mp_mSTG_left) //hm_mSTG_RS 4 | HR_HOLD(m, STG, RA, mp_mSTG_rectangle) //hm_mSTG_RA -------------------------------------------------------------------------------- /config/os/macos/keymap.dtsi: -------------------------------------------------------------------------------- 1 | mac_base_layer { 2 | #define MB13 &hm_mBAS_LC LCTRL 0 //A 3 | #define MB14 &hm LCMD R 4 | #define MB15 &hm LALT S 5 | #define MB16 &hm LSHFT T 6 | 7 | #define MB19 &hm_mBAS_RS RSHFT 0 //N 8 | #define MB20 &hm_mBAS_RA LALT 0 //E 9 | #define MB21 &hm_mBAS_RC RCMD 0 //I 10 | #define MB22 &hm_mBAS_RG RCTRL 0 //O 11 | 12 | #define MB35 &mp_m_stg 13 | 14 | #define MB36 &mp_m_dev 15 | #define MB38 &mo_mAXNmBAS_to_mAXN 0 0 16 | #define MB39 &mo_mAXNmBAS_to_mFNK 0 0 17 | #define MB41 &mp_m_dev 18 | 19 | display-name = "mBAS"; 20 | bindings = < 21 | MKY_ESC &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &mp_mi_u &mp_mi_y &mp_k_m MNV_DEL 22 | &mp_mk_bc MB13 MB14 MB15 MB16 &kp G &kp M MB19 MB20 MB21 MB22 MNV_BSPC 23 | MKY_TAB &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &mp_cs &mp_dc &mp_mk_q MB35 24 | MB36 KEY_SPC MB38 MB39 MKY_RET MB41 25 | >; 26 | }; 27 | 28 | mac_dev_layer { 29 | #define MD13 &hm LCTRL AMPS 30 | #define MD14 &hm LCMD LBRC 31 | #define MD15 &hm LALT RBRC 32 | #define MD16 &hm LSHFT EQUAL 33 | 34 | #define MD19 &hm_mDEV_RS RSHFT 0 35 | #define MD20 &hm_mDEV_RA LALT 0 36 | #define MD21 &hm_mDEV_RC RCMD 0 37 | #define MD22 &hm RCTRL PIPE 38 | 39 | #define MD35 &kp LA(LG(I)) // tap: dev tools 40 | 41 | #define MD38 &mo_mAXNmDEV_to_mBAS 0 0 42 | #define MD39 &mo_mAXNmDEV_to_mAXN 0 0 43 | 44 | display-name = "mDEV"; 45 | bindings = < 46 | MKY_ESC &kp AT &mp_mDEV_pound &mp_mDEV_money &kp PLUS &m_mi_d &m_mi_t &kp MINUS &kp UNDER &kp PRCNT &m_mi_c MNV_DEL 47 | &mp_mk_bc MD13 MD14 MD15 MD16 &m_mi_s &m_mi_g MD19 MD20 MD21 MD22 MNV_BSPC 48 | MKY_TAB &kp LG(R) &kp LPAR &kp RPAR &kp ASTRK &kp BSLH &mp_mDEV_s &mp_mDEV_qs &kp LT &kp GT &mp_mDEV_ql MD35 49 | &mp_cs KEY_SPC MD38 MD39 MKY_RET &mp_dc 50 | >; 51 | }; 52 | 53 | mac_act_num_layer { 54 | #define MA01 &kp LC(LS(LG(RIGHT))) // tap: expand selection 55 | #define MA05 &kp LG(F) // tap: find 56 | #define MA13 &hm LCTRL LC(LS(LG(LEFT))) // tap: shrink selection 57 | #define MA14 &hm LCMD LEFT 58 | #define MA15 &hm LALT DOWN 59 | #define MA16 &hm LSHFT RIGHT 60 | #define MA17 &kp LA(LG(F)) // tap: replace 61 | 62 | #define MA19 &hm LSHFT N4 63 | #define MA20 &hm LALT N5 64 | #define MA21 &hm LCMD N6 65 | #define MA22 &hm LCTRL DOT 66 | 67 | #define MA38 &to_mBAS 68 | #define MA39 &mo_mFNKmAXN_to_mFNK 0 0 69 | 70 | #define MKY_UNDO &kp RG(Z) // tap: undo 71 | #define MKY_REDO &kp RS(RG(Z)) // tap: redo 72 | #define MKY_CUT &kp RG(X) // tap: cut 73 | #define MKY_COPY &kp RG(C) // tap: copy 74 | #define MKY_PASTE &mp_ma_paste // tap: paste | shift: paste without format 75 | 76 | display-name = "mAXN"; 77 | bindings = < 78 | MKY_ESC MA01 &mp_ma_prev &kp UP &mp_ma_next MA05 &kp KP_PLUS &kp N7 &kp N8 &kp N9 &kp KP_MULTIPLY MNV_DEL 79 | &mp_mk_bc MA13 MA14 MA15 MA16 MA17 &kp N0 MA19 MA20 MA21 MA22 MNV_BSPC 80 | MKY_TAB MKY_UNDO MKY_CUT MKY_COPY MKY_PASTE MKY_REDO &mp_k_m &kp N1 &kp N2 &kp N3 &kp KP_DIVIDE &kp EQUAL 81 | &none KEY_SPC MA38 MA39 MKY_RET &none 82 | >; 83 | }; 84 | 85 | mac_functions_layer { 86 | #define MK13 &hm LCMD F5 87 | #define MK14 &hm LCTRL F6 88 | #define MK15 &hm LALT F7 89 | #define MK16 &hm LSHFT F8 90 | 91 | #define MK19 &hm RSHFT HOME 92 | #define MK20 &hm LALT PG_DN 93 | #define MK21 &hm RCTRL END 94 | #define MK22 &kp RCMD 95 | 96 | #define MK38 &to_mBAS 97 | #define MK39 &to_mAXN 98 | 99 | display-name = "mFNK"; 100 | bindings = < 101 | MKY_ESC &kp F9 &kp F10 &kp F11 &kp F12 &none &none &none &kp PG_UP &none &none MNV_DEL 102 | &mp_mk_bc MK13 MK14 MK15 MK16 &none &none MK19 MK20 MK21 MK22 MNV_BSPC 103 | MKY_TAB &kp F1 &kp F2 &kp F3 &kp F4 &none &none &none &none &none &none &none 104 | &none KEY_SPC MK38 MK39 MKY_RET &none 105 | >; 106 | }; 107 | 108 | mac_settings_layer { 109 | #define MSLU0 MKY_ESC 110 | #define MSLU1 &m_s_b1 111 | #define MSLU2 &m_s_b2 112 | #define MSLU3 &none 113 | #define MSLU4 &kp LG(LS(C)) // tap: color picker 114 | #define MSLU5 &kp RG(PLUS) // tap: zoom in 115 | 116 | #define MSLM0 &kp LC(LA(SPACE)) // tap: input source 117 | #define MSLM1 &hm_mSTG_LC LCTRL 0 // tap: m_s_b3 118 | #define MSLM2 &m_s_b4 119 | #define MSLM3 &kp LALT 120 | #define MSLM4 &hm_mSTG_LS LSHFT 0 // tap: mp_mSTG_screenshot 121 | #define MSLM5 &mp_ma_zoom_reset // tap: zoom reset | shift: zoom reset on vscode 122 | 123 | #define MSLD0 &mp_sSTG_cb // tap: none | shift: clear current profile | alt: clear all profiles 124 | #define MSLD1 &m_s_b5 125 | #define MSLD2 &m_s_b6 126 | #define MSLD3 &none 127 | #define MSLD4 &mp_mSTG_f // tap: (finder) file explorer | alt: show/hide system files 128 | #define MSLD5 &kp RG(MINUS) // tap: zoom out 129 | 130 | 131 | #define MSRU0 &kp C_VOL_UP 132 | #define MSRU1 &mp_mSTG_topleft // tap: ide explorer | alt: rectangle top left 133 | #define MSRU2 &mp_mSTG_up // tap: ide source control | alt: rectangle top halt 134 | #define MSRU3 &mp_mSTG_topright // tap: ide debugger | alt: rectangle top right 135 | #define MSRU4 &kp LS(LG(X)) // tap: ide extensions 136 | #define MSRU5 &kp LC(LS(LG(T))) // tap: ide todo // tap: ide 137 | 138 | #define MSRM0 &mp_mSTG_m // tap: vol mute | shift: mic mute 139 | #define MSRM1 &hm_mSTG_RS LSHIFT 0 // tap: mp_mSTG_left 140 | #define MSRM2 &hm_mSTG_RA LALT 0 // tap: mp_mSTG_rectangle 141 | #define MSRM3 &mp_mSTG_right // tap: ide secondary side bar | alt: rectangle right 142 | #define MSRM4 &kp LC(UP) // tap: mission control 143 | #define MSRM5 &none 144 | 145 | #define MSRD0 &kp C_VOL_DN 146 | #define MSRD1 &mp_mSTG_downleft // tap: none | alt: rectangle bottom left 147 | #define MSRD2 &mp_mSTG_down // tap: ide panel bottom bar | alt: rectangle bottom down 148 | #define MSRD3 &mp_mSTG_downright // tap: none | alt: rectangle bottom right 149 | #define MSRD4 &kp LC(DOWN) // tap: application window 150 | #define MSRD5 &none 151 | 152 | #define MSLT2 &kp C_BRI_DN 153 | #define MSLT1 KEY_SPC 154 | #define MSLT0 &to_mBAS 155 | 156 | #define MSRT0 &to_mAXN 157 | #define MSRT1 MKY_RET 158 | #define MSRT2 &kp C_BRI_UP 159 | 160 | 161 | display-name = "mSTG"; 162 | bindings = < 163 | MSLU0 MSLU1 MSLU2 MSLU3 MSLU4 MSLU5 MSRU0 MSRU1 MSRU2 MSRU3 MSRU4 MSRU5 164 | MSLM0 MSLM1 MSLM2 MSLM3 MSLM4 MSLM5 MSRM0 MSRM1 MSRM2 MSRM3 MSRM4 MSRM5 165 | MSLD0 MSLD1 MSLD2 MSLD3 MSLD4 MSLD5 MSRD0 MSRD1 MSRD2 MSRD3 MSRD4 MSRD5 166 | MSLT2 MSLT1 MSLT0 MSRT0 MSRT1 MSRT2 167 | >; 168 | }; 169 | -------------------------------------------------------------------------------- /config/os/macos/keys.dtsi: -------------------------------------------------------------------------------- 1 | /* Shared Keys */ 2 | #define MKY_ESC &to_mBAS_kp 0 ESC // tap: esc | long-tap: BAS layer 3 | #define MKY_RET &mt F2 RET // tap: return | long-tap: vscode easy rename 4 | #define MKY_TAB &mt RIGHT TAB // tap: tab | long-tap: right (terminal autocompletion) 5 | #define MNV_BSPC &mt LA(BSPC) BSPC // tap: bspc | long-tap: delete word backward 6 | #define MNV_DEL &mt LA(DEL) DEL // tap: del | long-tap: delete word forward 7 | -------------------------------------------------------------------------------- /config/os/macos/layers.dtsi: -------------------------------------------------------------------------------- 1 | /* macOs */ 2 | #define mBAS 0 3 | #define mDEV 1 4 | #define mAXN 2 5 | #define mFNK 3 6 | #define mSTG 4 7 | 8 | /* Helpers */ 9 | #define H_mCWR F13 10 | #define F_mBAS LS(F14) 11 | #define F_mDEV LS(F15) 12 | #define F_mAXN LS(F16) 13 | #define F_mFNK LS(F17) 14 | #define F_mSTG LS(F18) 15 | -------------------------------------------------------------------------------- /config/os/macos/macros/dev.dtsi: -------------------------------------------------------------------------------- 1 | // action: ?░:░ 2 | m_md_cto: macro_mac_conditional_ternary_operator { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | bindings 6 | = <&none> 7 | , <¯o_wait_time MC_WAIT> 8 | , <&kp QMARK &kp SPACE &kp SPACE &kp COLON &kp SPACE> 9 | , <&kp LEFT &kp LEFT &kp LEFT>; 10 | }; 11 | 12 | // action: ?. 13 | m_md_oco: macro_mac_optional_chaining_operator { 14 | compatible = "zmk,behavior-macro"; 15 | #binding-cells = <0>; 16 | bindings 17 | = <&kp QMARK &kp DOT>; 18 | }; 19 | -------------------------------------------------------------------------------- /config/os/macos/macros/int.dtsi: -------------------------------------------------------------------------------- 1 | // action: á 2 | m_mi_a: macro_macos_int_a { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | wait-ms = ; 6 | bindings 7 | = <&none> 8 | , <¯o_wait_time MC_WAIT> 9 | , <&kp RA(E)> 10 | , <&kp A>; 11 | }; 12 | 13 | // action: Á 14 | m_mi_as: macro_macos_int_a_shift { 15 | compatible = "zmk,behavior-macro"; 16 | #binding-cells = <0>; 17 | wait-ms = ; 18 | bindings 19 | = <&none> 20 | , <¯o_wait_time MC_WAIT> 21 | , <&kp RA(E)> 22 | , <&kp RS(A)>; 23 | }; 24 | 25 | // action: é 26 | m_mi_e: macro_macos_int_e { 27 | compatible = "zmk,behavior-macro"; 28 | #binding-cells = <0>; 29 | wait-ms = ; 30 | bindings 31 | = <&none> 32 | , <¯o_wait_time MC_WAIT> 33 | , <&kp LA(E)> 34 | , <&kp E>; 35 | }; 36 | 37 | // action: É 38 | m_mi_es: macro_macos_int_e_shift { 39 | compatible = "zmk,behavior-macro"; 40 | #binding-cells = <0>; 41 | wait-ms = ; 42 | bindings 43 | = <&none> 44 | , <¯o_wait_time MC_WAIT> 45 | , <&kp LA(E)> 46 | , <&kp LS(E)>; 47 | }; 48 | 49 | // action: í 50 | m_mi_i: macro_macos_int_i { 51 | compatible = "zmk,behavior-macro"; 52 | #binding-cells = <0>; 53 | wait-ms = ; 54 | bindings 55 | = <&none> 56 | , <¯o_wait_time MC_WAIT> 57 | , <&kp LA(E)> 58 | , <&kp I>; 59 | }; 60 | 61 | // action: Í 62 | m_mi_is: macro_macos_int_i_shift { 63 | compatible = "zmk,behavior-macro"; 64 | #binding-cells = <0>; 65 | wait-ms = ; 66 | bindings 67 | = <&none> 68 | , <¯o_wait_time MC_WAIT> 69 | , <&kp LA(E)> 70 | , <&kp LS(I)>; 71 | }; 72 | 73 | // action: ó 74 | m_mi_o: macro_macos_int_o { 75 | compatible = "zmk,behavior-macro"; 76 | #binding-cells = <0>; 77 | wait-ms = ; 78 | bindings 79 | = <&none> 80 | , <¯o_wait_time MC_WAIT> 81 | , <&kp LA(E)> 82 | , <&kp O>; 83 | }; 84 | 85 | // action: Ó 86 | m_mi_os: macro_macos_int_o_shift { 87 | compatible = "zmk,behavior-macro"; 88 | #binding-cells = <0>; 89 | wait-ms = ; 90 | bindings 91 | = <&none> 92 | , <¯o_wait_time MC_WAIT> 93 | , <&kp LA(E)> 94 | , <&kp LS(O)>; 95 | }; 96 | 97 | // action: ú 98 | m_mi_u: macro_macos_int_u { 99 | compatible = "zmk,behavior-macro"; 100 | #binding-cells = <0>; 101 | wait-ms = ; 102 | bindings 103 | = <&none> 104 | , <¯o_wait_time MC_WAIT> 105 | , <&kp LA(E)> 106 | , <&kp U>; 107 | }; 108 | 109 | // action: Ú 110 | m_mi_us: macro_macos_int_u_shift { 111 | compatible = "zmk,behavior-macro"; 112 | #binding-cells = <0>; 113 | wait-ms = ; 114 | 115 | bindings 116 | = <&none> 117 | , <¯o_wait_time MC_WAIT> 118 | , <&kp LA(E)> 119 | , <&kp LS(U)>; 120 | }; 121 | 122 | // action: ü 123 | m_mi_y: macro_macos_int_y { 124 | compatible = "zmk,behavior-macro"; 125 | #binding-cells = <0>; 126 | wait-ms = ; 127 | bindings 128 | = <&none> 129 | , <¯o_wait_time MC_WAIT> 130 | , <&kp LA(U)> 131 | , <&kp U>; 132 | }; 133 | 134 | // action: Ü 135 | m_mi_ys: macro_macos_int_y_shift { 136 | compatible = "zmk,behavior-macro"; 137 | #binding-cells = <0>; 138 | wait-ms = ; 139 | bindings 140 | = <&none> 141 | , <¯o_wait_time MC_WAIT> 142 | , <&kp LA(U)> 143 | , <&kp LS(U)>; 144 | }; 145 | 146 | // action: ñ 147 | m_mi_n: macro_macos_int_n { 148 | compatible = "zmk,behavior-macro"; 149 | #binding-cells = <0>; 150 | wait-ms = ; 151 | bindings 152 | = <&none> 153 | , <¯o_wait_time MC_WAIT> 154 | , <&kp LA(N)> 155 | , <&kp N>; 156 | }; 157 | 158 | // action: Ñ 159 | m_mi_ns: macro_macos_int_n_shift { 160 | compatible = "zmk,behavior-macro"; 161 | #binding-cells = <0>; 162 | wait-ms = ; 163 | bindings 164 | = <&none> 165 | , <¯o_wait_time MC_WAIT> 166 | , <&kp LA(N)> 167 | , <&kp LS(N)>; 168 | }; 169 | 170 | // action: ` 171 | m_mi_g: macro_macos_int_grave { 172 | compatible = "zmk,behavior-macro"; 173 | #binding-cells = <0>; 174 | bindings = 175 | <&kp GRAVE &kp SPACE>; 176 | }; 177 | 178 | // action: ~ 179 | m_mi_t: macro_macos_int_tilde { 180 | compatible = "zmk,behavior-macro"; 181 | #binding-cells = <0>; 182 | bindings = 183 | <&kp TILDE &kp SPACE>; 184 | }; 185 | 186 | // action: ^ 187 | m_mi_c: macro_macos_int_caret { 188 | compatible = "zmk,behavior-macro"; 189 | #binding-cells = <0>; 190 | bindings = 191 | <&kp CARET &kp SPACE>; 192 | }; 193 | 194 | // action: " 195 | m_mi_d: macro_macos_int_double_quote { 196 | compatible = "zmk,behavior-macro"; 197 | #binding-cells = <0>; 198 | bindings = 199 | <&kp DQT &kp SPACE>; 200 | }; 201 | 202 | // action: ' 203 | m_mi_s: macro_macos_int_single_quote { 204 | compatible = "zmk,behavior-macro"; 205 | #binding-cells = <0>; 206 | bindings = 207 | <&kp SQT &kp SPACE>; 208 | }; 209 | -------------------------------------------------------------------------------- /config/os/macos/macros/layers.dtsi: -------------------------------------------------------------------------------- 1 | TO_MACRO(m, DEV) //to_mDEV 2 | TO_MACRO(m, AXN) //to_mAXN 3 | TO_MACRO(m, FNK) //to_mFNK 4 | TO_MACRO(m, STG) //to_mSTG 5 | 6 | MOTO_MACRO(m, AXN, BAS) //mo_mAXN_to_mBAS 7 | MOTO_MACRO(m, AXN, DEV) //mo_mAXN_to_mDEV 8 | MOTO_MACRO(m, STG, BAS) //mo_mSTG_to_mBAS 9 | MOTO_MACRO(m, DEV, BAS) //mo_mDEV_to_mBAS 10 | MOTO_MACRO(m, FNK, AXN) //mo_mFNK_to_mAXN 11 | 12 | cw_mCAPS: cw_mCAPS { 13 | compatible = "zmk,behavior-macro"; 14 | #binding-cells = <0>; 15 | tap-ms = ; 16 | bindings 17 | = <&kp LS(H_mCWR)> 18 | , <&kp CAPS>; 19 | }; 20 | 21 | cw_mON: cw_mON { 22 | compatible = "zmk,behavior-macro"; 23 | #binding-cells = <0>; 24 | bindings 25 | = <&kp LA(H_mCWR)> 26 | , <&cw>; 27 | }; 28 | 29 | cw_mOFF: cw_mOFF { 30 | compatible = "zmk,behavior-macro"; 31 | #binding-cells = <0>; 32 | bindings 33 | = <&kp LS(LC(H_mCWR))> 34 | , <&kp K_CANCEL>; 35 | }; -------------------------------------------------------------------------------- /config/os/macos/morph/actions.dtsi: -------------------------------------------------------------------------------- 1 | // tap: ⇺ 2 | // shift: ⎗ 3 | mp_ma_prev: morph_mac_action_prev { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&kp RC(PG_UP)>, <&kp LC(LG(LEFT))>; 8 | }; 9 | 10 | // tap: ⇻ 11 | // shift: ⎘ 12 | mp_ma_next: morph_mac_action_next { 13 | compatible = "zmk,behavior-mod-morph"; 14 | #binding-cells = <0>; 15 | mods = <(MOD_LSFT|MOD_RSFT)>; 16 | bindings = <&kp RC(PG_DN)>, <&kp LC(LG(RIGHT))>; 17 | }; 18 | 19 | // tap: paste 20 | // shift: paste without format 21 | mp_ma_paste: morph_mac_action_paste { 22 | compatible = "zmk,behavior-mod-morph"; 23 | #binding-cells = <0>; 24 | mods = <(MOD_LSFT|MOD_RSFT)>; 25 | bindings = <&kp RG(V)>, <&kp RS(RG(V))>; 26 | }; 27 | 28 | -------------------------------------------------------------------------------- /config/os/macos/morph/base.dtsi: -------------------------------------------------------------------------------- 1 | // tap: ' 2 | // shift: " 3 | mp_mk_q: morph_mac_key_quote { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&m_mi_s>, <&m_mi_d>; 8 | }; 9 | 10 | // tap: BACKSPACE 11 | // shift: CAPS_LOCK 12 | mp_mk_bc: morph_mac_key_backspace_caps { 13 | compatible = "zmk,behavior-mod-morph"; 14 | #binding-cells = <0>; 15 | mods = <(MOD_LSFT|MOD_RSFT)>; 16 | bindings = , <&cw_mCAPS>; 17 | }; 18 | -------------------------------------------------------------------------------- /config/os/macos/morph/dev.dtsi: -------------------------------------------------------------------------------- 1 | //mp_mDEV_pound 2 | MORPH_KA( 3 | m, 4 | DEV, 5 | pound, 6 | pound, 7 | MOD_LALT, 8 | &kp POUND, // tap: # 9 | &kp LA(N0) // alt: ° 10 | ) 11 | 12 | //mp_mDEV_money 13 | MORPH_KA( 14 | m, 15 | DEV, 16 | money, 17 | money, 18 | MOD_LALT, 19 | &kp DLLR, // tap: $ 20 | &kp LA(LS(N2)) // alt: € 21 | ) 22 | 23 | //mp_mDEV_lb 24 | MORPH_KA( 25 | m, 26 | DEV, 27 | lb, 28 | left_brackets, 29 | MOD_LALT, 30 | &kp LBKT, // tap: [ 31 | &kp LA(BSLH) // alt: « 32 | ) 33 | 34 | //mp_mDEV_rb 35 | MORPH_KA( 36 | m, 37 | DEV, 38 | rb, 39 | right_brackets, 40 | MOD_LALT|MOD_RALT, 41 | &kp RBKT, // tap: ] 42 | &kp LA(LS(BSLH)) // alt: » 43 | ) 44 | 45 | // mp_mDEV_qs 46 | MORPH_KA( 47 | m, 48 | DEV, 49 | qs, 50 | question_symbol, 51 | MOD_LALT, 52 | &kp QMARK, // tap: ? 53 | &kp LA(LS(FSLH)) // alt: ¿ 54 | ) 55 | 56 | // mp_mDEV_es 57 | MORPH_KA( 58 | m, 59 | DEV, 60 | es, 61 | exclamation_symbol, 62 | MOD_LALT, 63 | &kp EXCL, // tap: ! 64 | &kp LA(N1) // alt: ¡ 65 | ) 66 | 67 | // mp_mDEV_s 68 | MORPH_KA( 69 | m, 70 | DEV, 71 | s, 72 | slash, 73 | MOD_LALT|MOD_RALT, 74 | &kp FSLH, // tap: / 75 | &kp LA(LS(A)) // alt: /* block comment */ 76 | ) 77 | 78 | //mp_mDEV_ql 79 | MORPH_KS( 80 | m, 81 | DEV, 82 | ql, 83 | question_logical, 84 | &m_md_oco, // tap: ?. 85 | &m_md_cto // shift: ?░:░ 86 | ) 87 | -------------------------------------------------------------------------------- /config/os/macos/morph/int.dtsi: -------------------------------------------------------------------------------- 1 | // tap: a 2 | // alt: á 3 | // alt+shift: Á 4 | mp_mi_as: morph_macos_a_shift { 5 | compatible = "zmk,behavior-mod-morph"; 6 | #binding-cells = <0>; 7 | mods = <(MOD_LSFT|MOD_RSFT)>; 8 | bindings = <&m_mi_a>, <&m_mi_as>; 9 | }; 10 | mp_mi_a: morph_macos_a { 11 | compatible = "zmk,behavior-mod-morph"; 12 | #binding-cells = <0>; 13 | mods = <(MOD_LALT|MOD_RALT)>; 14 | bindings = <&kp A>, <&mp_mi_as>; 15 | }; 16 | 17 | // tap: e 18 | // alt: é 19 | // alt+shift: É 20 | mp_mi_es: morph_macos_e_shift { 21 | compatible = "zmk,behavior-mod-morph"; 22 | #binding-cells = <0>; 23 | mods = <(MOD_LSFT|MOD_RSFT)>; 24 | bindings = <&m_mi_e>, <&m_mi_es>; 25 | }; 26 | mp_mi_e: morph_macos_e { 27 | compatible = "zmk,behavior-mod-morph"; 28 | #binding-cells = <0>; 29 | mods = <(MOD_LALT|MOD_RALT)>; 30 | bindings = <&kp E>, <&mp_mi_es>; 31 | }; 32 | 33 | // tap: i 34 | // alt: í 35 | // alt+shift: Í 36 | mp_mi_is: morph_macos_i_shift { 37 | compatible = "zmk,behavior-mod-morph"; 38 | #binding-cells = <0>; 39 | mods = <(MOD_LSFT|MOD_RSFT)>; 40 | bindings = <&m_mi_i>, <&m_mi_is>; 41 | }; 42 | mp_mi_i: morph_macos_i { 43 | compatible = "zmk,behavior-mod-morph"; 44 | #binding-cells = <0>; 45 | mods = <(MOD_LALT|MOD_RALT)>; 46 | bindings = <&kp I>, <&mp_mi_is>; 47 | }; 48 | 49 | // tap: o 50 | // alt: ó 51 | // alt+shift: Ó 52 | mp_mi_os: morph_macos_o_shift { 53 | compatible = "zmk,behavior-mod-morph"; 54 | #binding-cells = <0>; 55 | mods = <(MOD_LSFT|MOD_RSFT)>; 56 | bindings = <&m_mi_o>, <&m_mi_os>; 57 | }; 58 | mp_mi_o: morph_macos_o { 59 | compatible = "zmk,behavior-mod-morph"; 60 | #binding-cells = <0>; 61 | mods = <(MOD_LALT|MOD_RALT)>; 62 | bindings = <&kp O>, <&mp_mi_os>; 63 | }; 64 | 65 | // tap: u 66 | // alt: ú 67 | // alt+shift: Ú 68 | mp_mi_us: morph_macos_u_shift { 69 | compatible = "zmk,behavior-mod-morph"; 70 | #binding-cells = <0>; 71 | mods = <(MOD_LSFT|MOD_RSFT)>; 72 | bindings = <&m_mi_u>, <&m_mi_us>; 73 | }; 74 | mp_mi_u: morph_macos_u { 75 | compatible = "zmk,behavior-mod-morph"; 76 | #binding-cells = <0>; 77 | mods = <(MOD_LALT|MOD_RALT)>; 78 | bindings = <&kp U>, <&mp_mi_us>; 79 | }; 80 | 81 | // tap: n 82 | // alt: ñ 83 | // alt+shift: Ñ 84 | mp_mi_ns: morph_macos_n_shift { 85 | compatible = "zmk,behavior-mod-morph"; 86 | #binding-cells = <0>; 87 | mods = <(MOD_LSFT|MOD_RSFT)>; 88 | bindings = <&m_mi_n>, <&m_mi_ns>; 89 | }; 90 | mp_mi_n: morph_macos_n { 91 | compatible = "zmk,behavior-mod-morph"; 92 | #binding-cells = <0>; 93 | mods = <(MOD_LALT|MOD_RALT)>; 94 | bindings = <&kp N>, <&mp_mi_ns>; 95 | }; 96 | 97 | // tap: y 98 | // alt: ü 99 | // alt+shift: Ü 100 | mp_mi_ys: morph_macos_y_shift { 101 | compatible = "zmk,behavior-mod-morph"; 102 | #binding-cells = <0>; 103 | mods = <(MOD_LSFT|MOD_RSFT)>; 104 | bindings = <&m_mi_y>, <&m_mi_ys>; 105 | }; 106 | mp_mi_y: morph_macos_y { 107 | compatible = "zmk,behavior-mod-morph"; 108 | #binding-cells = <0>; 109 | mods = <(MOD_LALT|MOD_RALT)>; 110 | bindings = <&kp Y>, <&mp_mi_ys>; 111 | }; 112 | 113 | -------------------------------------------------------------------------------- /config/os/macos/morph/layers.dtsi: -------------------------------------------------------------------------------- 1 | mp_m_stg: morph_mac_stg_layer { 2 | compatible = "zmk,behavior-mod-morph"; 3 | #binding-cells = <0>; 4 | mods = <(MOD_LSFT|MOD_RSFT)>; 5 | bindings = <&mo_mSTG_to_mBAS>, <&to_mSTG>; 6 | }; 7 | 8 | mp_m_dev: morph_mac_dev_layer { 9 | compatible = "zmk,behavior-mod-morph"; 10 | #binding-cells = <0>; 11 | mods = <(MOD_LSFT|MOD_RSFT)>; 12 | bindings = <&mo_mDEV_to_mBAS>, <&to_mDEV>; 13 | }; 14 | -------------------------------------------------------------------------------- /config/os/macos/morph/settings.dtsi: -------------------------------------------------------------------------------- 1 | // tap: zoom reset 2 | // shift: zoom reset vscode 3 | mp_ma_zoom_reset: morph_mac_action_zoom_reset { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&kp RG(N0)>, <&kp RG(KP_N0)>; 8 | }; 9 | 10 | // mp_mSTG_f 11 | MORPH_KS( 12 | m, 13 | STG, 14 | f, 15 | files, 16 | &kp LA(LG(SPACE)), // tap: finder 17 | &kp LS(LG(DOT)) // shift: show/hide system files 18 | ) 19 | 20 | // mp_mSTG_screenshot 21 | MORPH_KAS( 22 | m, 23 | STG, 24 | screenshot, 25 | screenshot, 26 | MOD_LALT, 27 | &kp RS(RG(N5)), // tap: screenshot and recording options 28 | &kp RS(RG(N4)), // alt: screenshot of selected area 29 | &kp RS(RG(N3)) // shift: screenshot of screen 30 | ) 31 | // ctrl: adding ctrl key copy to clipboard instead of saving a file 32 | 33 | // mp_mSTG_topleft 34 | MORPH_KA( 35 | m, 36 | STG, 37 | topleft, 38 | topleft, 39 | MOD_LALT, 40 | &kp LS(LG(E)), // tap: ide: explorer 41 | &kp LS(LA(LG(LC(LEFT)))) // alt: rectangle top left 42 | ) 43 | 44 | // mp_mSTG_up 45 | MORPH_KA( 46 | m, 47 | STG, 48 | up, 49 | up, 50 | MOD_LALT, 51 | &kp LS(LC(G)), // tap: ide: source control 52 | &kp LS(LA(LG(UP))) // alt: rectangle top half 53 | ) 54 | 55 | // mp_mSTG_topright 56 | MORPH_KA( 57 | m, 58 | STG, 59 | topright, 60 | topright, 61 | MOD_LALT, 62 | &kp LS(LG(D)), // tap: ide: debugger 63 | &kp LS(LA(LG(LC(RIGHT)))) // alt: rectangle top right 64 | ) 65 | 66 | // mp_mSTG_left 67 | MORPH_KA( 68 | m, 69 | STG, 70 | left, 71 | left, 72 | MOD_LALT, 73 | &kp LG(B), // tap: ide: toggle primary side bar 74 | &kp LA(LG(LS(LEFT))) // alt: rectangle left 75 | ) 76 | 77 | // mp_mSTG_rectangle 78 | MORPH_KAS( 79 | m, 80 | STG, 81 | rectangle, 82 | rectangle, 83 | MOD_LALT, 84 | &kp LA(LC(F)), // tap: maximize 85 | &kp LA(LC(BACKSPACE)), // alt: restore 86 | &kp LS(LA(LC(F))) // shift: center 87 | ) 88 | 89 | // mp_mSTG_right 90 | MORPH_KA( 91 | m, 92 | STG, 93 | right, 94 | right, 95 | MOD_LALT, 96 | &kp LA(LG(B)), // tap: ide: toggle secondary side bar 97 | &kp LA(LG(LS(RIGHT))) // alt: rectangle right 98 | ) 99 | 100 | // mp_mSTG_downleft 101 | MORPH_KA( 102 | m, 103 | STG, 104 | downleft, 105 | downleft, 106 | MOD_LALT, 107 | &none, // tap: none 108 | &kp LA(LG(LC(LEFT))) // alt: rectangle down left 109 | ) 110 | 111 | // mp_mSTG_down 112 | MORPH_KA( 113 | m, 114 | STG, 115 | down, 116 | down, 117 | MOD_LALT, 118 | &kp LG(J), // tap: ide: toggle panel bottom bar 119 | &kp LS(LA(LG(DOWN))) // alt: rectangle right 120 | ) 121 | 122 | // mp_mSTG_downright 123 | MORPH_KA( 124 | m, 125 | STG, 126 | downright, 127 | downright, 128 | MOD_LALT, 129 | &none, // tap: none 130 | &kp LA(LG(LC(RIGHT))) // alt: rectangle down right 131 | ) 132 | 133 | // mp_mSTG_m 134 | MORPH_KS( 135 | m, 136 | STG, 137 | m, 138 | mute, 139 | &kp C_MUTE, // tap: volume mute 140 | &kp LS(LA(LC(LG(M)))) // shift: mic mute 141 | ) 142 | -------------------------------------------------------------------------------- /config/os/shared/general.dtsi: -------------------------------------------------------------------------------- 1 | /* Mod Tap */ 2 | &mt { 3 | tapping-term-ms = ; 4 | quick-tap-ms = ; // repeat on tap-into-hold 5 | flavor = "tap-preferred"; 6 | hold-trigger-key-positions = <0>; // tap on interrupt 7 | }; 8 | -------------------------------------------------------------------------------- /config/os/shared/hold/shared.dtsi: -------------------------------------------------------------------------------- 1 | hm: homerow_mods { 2 | compatible = "zmk,behavior-hold-tap"; 3 | #binding-cells = <2>; 4 | tapping-term-ms = ; 5 | quick-tap-ms = ; 6 | flavor = HR_FLAVOR; 7 | bindings = <&kp>, <&kp>; 8 | }; 9 | 10 | tokp: to_kp { 11 | compatible = "zmk,behavior-hold-tap"; 12 | #binding-cells = <2>; 13 | tapping-term-ms = ; 14 | flavor = "hold-preferred"; 15 | bindings = <&to>, <&kp>; 16 | }; 17 | 18 | moto: mo_to { 19 | compatible = "zmk,behavior-hold-tap"; 20 | #binding-cells = <2>; 21 | tapping-term-ms = ; 22 | flavor = "hold-preferred"; 23 | bindings = <&mo>, <&to>; 24 | }; 25 | -------------------------------------------------------------------------------- /config/os/shared/keys.dtsi: -------------------------------------------------------------------------------- 1 | /* KEY POSITIONS 2 | 3 | ╭─────────────────────────────╮ ╭─────────────────────────────╮ 4 | │ 0 1 2 3 4 5 │ │ 6 7 8 9 10 11 │ 5 | │ 12 13 14 15 16 17 │ │ 18 19 20 21 22 23 │ 6 | │ 24 25 26 27 28 29 │ │ 30 31 32 33 34 35 │ 7 | ╰─────────────╮ 36 37 38 │ │ 39 40 41 ╭─────────────╯ 8 | ╰───────────────╯ ╰───────────────╯ 9 | 10 | */ 11 | 12 | /* KEY NAME 13 | 14 | ╭──────────────────────────────╮ ╭──────────────────────────────╮ 15 | │ LU0 LU1 LU2 LU3 LU4 LU5 │ │ RU0 RU1 RU2 RU3 RU4 RU5 │ 16 | │ LM0 LM1 LM2 LM3 LM4 LM5 │ │ RM0 RM1 RM2 RM3 RM4 RM5 │ 17 | │ LD0 LD1 LD2 LD3 LD4 LD5 │ │ RD0 RD1 RD2 RD3 RD4 RD5 │ 18 | ╰─────────────╮ LT2 LT1 LT0 │ │ RT0 RT1 RT2 ╭─────────────╯ 19 | ╰────────────────╯ ╰────────────────╯ 20 | 21 | */ 22 | 23 | /* Shared Keys */ 24 | #define KEY_SPC &kp SPACE 25 | #define NAV_BSPC &mt LC(BSPC) BSPC // tap: bspc | long-tap: delete word backward 26 | #define NAV_DEL &mt LC(DEL) DEL // tap: del | long-tap: delete word forward 27 | -------------------------------------------------------------------------------- /config/os/shared/macros/layers.dtsi: -------------------------------------------------------------------------------- 1 | TO_MACRO(m, BAS) //to_mBAS 2 | TO_MACRO(w, BAS) //to_wBAS 3 | TO_MACRO(a, BAS) //to_aBAS 4 | -------------------------------------------------------------------------------- /config/os/shared/macros/settings.dtsi: -------------------------------------------------------------------------------- 1 | m_s_b1: macro_stg_bluetooth_1 { 2 | compatible = "zmk,behavior-macro"; 3 | #binding-cells = <0>; 4 | bindings = 5 | <&bt BT_SEL 0 &to_mBAS>; 6 | }; 7 | 8 | m_s_b2: macro_stg_bluetooth_2 { 9 | compatible = "zmk,behavior-macro"; 10 | #binding-cells = <0>; 11 | bindings = 12 | <&bt BT_SEL 1 &to_mBAS>; 13 | }; 14 | 15 | m_s_b3: macro_stg_bluetooth_3 { 16 | compatible = "zmk,behavior-macro"; 17 | #binding-cells = <0>; 18 | bindings = 19 | <&bt BT_SEL 2 &to_wBAS>; 20 | }; 21 | 22 | m_s_b4: macro_stg_bluetooth_4 { 23 | compatible = "zmk,behavior-macro"; 24 | #binding-cells = <0>; 25 | bindings = 26 | <&bt BT_SEL 3 &to_wBAS>; 27 | }; 28 | 29 | m_s_b5: macro_stg_bluetooth_5 { 30 | compatible = "zmk,behavior-macro"; 31 | #binding-cells = <0>; 32 | bindings = 33 | <&bt BT_SEL 4 &to_aBAS>; 34 | }; 35 | 36 | m_s_b6: macro_stg_bluetooth_6 { 37 | compatible = "zmk,behavior-macro"; 38 | #binding-cells = <0>; 39 | bindings = 40 | <&bt BT_SEL 5 &to_aBAS>; 41 | }; 42 | 43 | // mp_sSTG_cb 44 | MORPH_KAS( 45 | s, 46 | STG, 47 | cb, 48 | clear_bluetooth, 49 | MOD_LALT, 50 | &studio_unlock, // tap: zmk studio unlock 51 | &bt BT_CLR, // alt: clear current profile 52 | &bt BT_CLR_ALL // shift: clear all profiles 53 | ) 54 | -------------------------------------------------------------------------------- /config/os/shared/morph/num.dtsi: -------------------------------------------------------------------------------- 1 | // tap: - 2 | // shift: _ 3 | mp_k_m: morph_key_minus { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&kp MINUS>, <&kp UNDER>; 8 | }; -------------------------------------------------------------------------------- /config/os/shared/morph/shared.dtsi: -------------------------------------------------------------------------------- 1 | cw: caps_word { 2 | compatible = "zmk,behavior-caps-word"; 3 | #binding-cells = <0>; 4 | continue-list = ; 5 | }; 6 | 7 | // tap: BACKSPACE 8 | // shift: CAPS_LOCK 9 | mp_bc: morph_backspace_caps { 10 | compatible = "zmk,behavior-mod-morph"; 11 | #binding-cells = <0>; 12 | mods = <(MOD_LSFT|MOD_RSFT)>; 13 | bindings = , <&kp CAPS>; 14 | }; 15 | 16 | // tap: , 17 | // shift: ; 18 | mp_cs: morph_comma_semi { 19 | compatible = "zmk,behavior-mod-morph"; 20 | #binding-cells = <0>; 21 | mods = <(MOD_LSFT|MOD_RSFT)>; 22 | bindings = <&kp COMMA>, <&kp SEMICOLON>; 23 | }; 24 | 25 | // tap: . 26 | // shift: : 27 | mp_dc: morph_dot_colon { 28 | compatible = "zmk,behavior-mod-morph"; 29 | #binding-cells = <0>; 30 | mods = <(MOD_LSFT|MOD_RSFT)>; 31 | bindings = <&kp DOT>, <&kp COLON>; 32 | }; 33 | -------------------------------------------------------------------------------- /config/os/shared/times.dtsi: -------------------------------------------------------------------------------- 1 | /* Home Row */ 2 | #define HR_FLAVOR "balanced" 3 | #define HR_TAPPING 220 4 | #define HR_QUICK_TAP 125 5 | 6 | /* Mod Tap */ 7 | #define MT_TAPPING 220 8 | #define MT_QUICK_TAP 200 9 | 10 | /* Hold Tap Preferred */ 11 | #define HP_TAPPING 220 12 | #define HP_QUICK_TAP 200 13 | 14 | /* Macro */ 15 | #define MC_WAIT_START 400 16 | #define MC_WAIT 100 17 | #define MC_TAP 200 18 | #define MC_LAYERS 0 19 | 20 | /* Key Positions */ 21 | #define KP_RIGHT 6 7 8 9 10 11 18 19 20 21 22 23 30 31 32 33 34 35 39 40 41 22 | #define KP_LEFT 0 1 2 3 4 5 12 13 14 15 16 17 24 25 26 27 28 29 36 37 38 23 | -------------------------------------------------------------------------------- /config/os/windows/combos/base.dtsi: -------------------------------------------------------------------------------- 1 | combo_wCW_on { 2 | bindings = <&cw_wON>; 3 | key-positions = <16 19>; 4 | slow-release; 5 | layers = ; 6 | }; 7 | 8 | combo_wCW_off { 9 | bindings = <&cw_wOFF>; 10 | key-positions = <14 21>; 11 | slow-release; 12 | layers = ; 13 | }; -------------------------------------------------------------------------------- /config/os/windows/combos/help.dtsi: -------------------------------------------------------------------------------- 1 | combo_windows_help-wBAS { 2 | bindings = <&kp LG(LC(F_wBAS))>; 3 | key-positions = <12 23>; 4 | slow-release; 5 | layers = ; 6 | }; 7 | 8 | combo_windows_help-wDEV { 9 | bindings = <&kp LG(LC(F_wDEV))>; 10 | key-positions = <12 23>; 11 | slow-release; 12 | layers = ; 13 | }; 14 | 15 | combo_windows_help-wAXN { 16 | bindings = <&kp LG(LC(F_wAXN))>; 17 | key-positions = <12 23>; 18 | slow-release; 19 | layers = ; 20 | }; 21 | 22 | combo_windows_help-wFNK { 23 | bindings = <&kp LG(LC(F_wFNK))>; 24 | key-positions = <12 23>; 25 | slow-release; 26 | layers = ; 27 | }; 28 | 29 | combo_windows_help-wSTG { 30 | bindings = <&kp LG(LC(F_wSTG))>; 31 | key-positions = <12 23>; 32 | slow-release; 33 | layers = ; 34 | }; -------------------------------------------------------------------------------- /config/os/windows/hold/base.dtsi: -------------------------------------------------------------------------------- 1 | HR_HOLD(w, BAS, RS, mp_wi_n) //hm_wBAS_RS 2 | HR_HOLD(w, BAS, RA, mp_wi_e) //hm_wBAS_RA 3 | HR_HOLD(w, BAS, LC, mp_wi_a) //hm_wBAS_LC 4 | HR_HOLD(w, BAS, RC, mp_wi_i) //hm_wBAS_RC 5 | HR_HOLD(w, BAS, RG, mp_wi_o) //hm_wBAS_RG 6 | -------------------------------------------------------------------------------- /config/os/windows/hold/dev.dtsi: -------------------------------------------------------------------------------- 1 | HR_HOLD(w, DEV, RS, mp_wDEV_es) //hm_wDEV_RS 2 | HR_HOLD(w, DEV, RA, mp_wDEV_lb) //hm_wDEV_RA 3 | HR_HOLD(w, DEV, RC, mp_wDEV_rb) //hm_wDEV_RC 4 | -------------------------------------------------------------------------------- /config/os/windows/hold/layers.dtsi: -------------------------------------------------------------------------------- 1 | to_wBAS_kp: to_wBAS_kp { 2 | compatible = "zmk,behavior-hold-tap"; 3 | #binding-cells = <2>; 4 | tapping-term-ms = ; 5 | flavor = "hold-preferred"; 6 | bindings = <&to_wBAS>, <&kp>; 7 | }; 8 | 9 | MOTO_HOLD(w, AXN, BAS, FNK) //mo_wAXNwBAS_to_wFNK 10 | MOTO_HOLD(w, AXN, BAS, AXN) //mo_wAXNwBAS_to_wAXN 11 | MOTO_HOLD(w, DEV, BAS, DEV) //mo_wDEVwBAS_to_wDEV 12 | MOTO_HOLD(w, AXN, DEV, BAS) //mo_wAXNwDEV_to_wBAS 13 | MOTO_HOLD(w, AXN, DEV, AXN) //mo_wAXNwDEV_to_wAXN 14 | MOTO_HOLD(w, FNK, AXN, FNK) //mo_wFNKwAXN_to_wFNK 15 | -------------------------------------------------------------------------------- /config/os/windows/keymap.dtsi: -------------------------------------------------------------------------------- 1 | windows_base_layer { 2 | #define WB13 &hm_wBAS_LC LCMD 0 //A 3 | #define WB14 &hm LCTRL R 4 | #define WB15 &hm LALT S 5 | #define WB16 &hm LSHFT T 6 | 7 | #define WB19 &hm_wBAS_RS RSHFT 0 //N 8 | #define WB20 &hm_wBAS_RA LALT 0 //E 9 | #define WB21 &hm_wBAS_RC RCTRL 0 //I 10 | #define WB22 &hm_wBAS_RG RCMD 0 //O 11 | 12 | #define WB35 &mp_w_stg 13 | 14 | #define WB36 &mp_w_dev 15 | #define WB38 &mo_wAXNwBAS_to_wAXN 0 0 16 | #define WB39 &mo_wAXNwBAS_to_wFNK 0 0 17 | #define WB41 &mp_w_dev 18 | 19 | display-name = "wBAS"; 20 | bindings = < 21 | WKY_ESC &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &mp_wi_u &mp_wi_y &mp_k_m NAV_DEL 22 | &mp_wk_bc WB13 WB14 WB15 WB16 &kp G &kp M WB19 WB20 WB21 WB22 NAV_BSPC 23 | WKY_TAB &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &mp_cs &mp_dc &mp_wk_q WB35 24 | WB36 KEY_SPC WB38 WB39 WKY_RET WB41 25 | >; 26 | }; 27 | 28 | windows_dev_layer { 29 | #define WD13 &hm LCMD AMPS 30 | #define WD14 &hm LCTRL LBRC 31 | #define WD15 &hm LALT RBRC 32 | #define WD16 &hm LSHFT EQUAL 33 | 34 | #define WD19 &hm_wDEV_RS RSHFT 0 35 | #define WD20 &hm_wDEV_RA LALT 0 36 | #define WD21 &hm_wDEV_RC RCTRL 0 37 | #define WD22 &hm RCMD PIPE 38 | 39 | #define WD38 &mo_wAXNwDEV_to_wBAS 0 0 40 | #define WD39 &mo_wAXNwDEV_to_wAXN 0 0 41 | 42 | display-name = "wDEV"; 43 | bindings = < 44 | WKY_ESC &kp AT &mp_wDEV_pound &mp_wDEV_money &kp PLUS &m_wi_d &m_wi_t &kp MINUS &kp UNDER &kp PRCNT &m_wi_c NAV_DEL 45 | &mp_wk_bc WD13 WD14 WD15 WD16 &m_wi_s &m_wi_g WD19 WD20 WD21 WD22 NAV_BSPC 46 | WKY_TAB &kp LC(R) &kp LPAR &kp RPAR &kp ASTRK &kp BSLH &mp_wDEV_s &mp_wDEV_qs &kp LT &kp GT &mp_wDEV_ql &kp F12 47 | &mp_cs KEY_SPC WD38 WD39 WKY_RET &mp_dc 48 | >; 49 | }; 50 | 51 | windows_act_num_layer { 52 | #define WA01 &kp LA(LS(RIGHT)) // tap: expand selection 53 | #define WA05 &kp LC(F) // tap: find 54 | #define WA13 &hm LCMD LA(LS(LEFT)) // tap: shrink selection 55 | #define WA14 &hm LCTRL LEFT 56 | #define WA15 &hm LALT DOWN 57 | #define WA16 &hm LSHFT RIGHT 58 | #define WA17 &kp LC(H) // tap: replace 59 | 60 | #define WA19 &hm LSHFT N4 61 | #define WA20 &hm LALT N5 62 | #define WA21 &hm LCTRL N6 63 | #define WA22 &hm LCMD EQUAL 64 | 65 | #define WA35 &hm LG(LC(F4)) LG(LC(D)) // tap: create | hold: close (virtual desktop) 66 | 67 | #define WA38 &to_wBAS 68 | #define WA39 &mo_wFNKwAXN_to_wFNK 0 0 69 | 70 | #define WKY_UNDO &kp RC(Z) // tap: undo 71 | #define WKY_REDO &kp RC(Y) // tap: redo 72 | #define WKY_CUT &kp RC(X) // tap: cut 73 | #define WKY_COPY &kp RC(C) // tap: copy 74 | #define WKY_PASTE &kp RC(V) // tap: paste | shift: paste without format 75 | 76 | display-name = "wAXN"; 77 | bindings = < 78 | WKY_ESC WA01 &mp_wa_prev &kp UP &mp_wa_next WA05 &kp KP_PLUS &kp N7 &kp N8 &kp N9 &kp KP_MULTIPLY NAV_DEL 79 | &mp_wk_bc WA13 WA14 WA15 WA16 WA17 &kp N0 WA19 WA20 WA21 WA22 NAV_BSPC 80 | WKY_TAB WKY_UNDO WKY_CUT WKY_COPY WKY_PASTE WKY_REDO &mp_k_m &kp N1 &kp N2 &kp N3 &kp KP_DIVIDE WA35 81 | &mp_cs KEY_SPC WA38 WA39 WKY_RET &mp_dc 82 | >; 83 | }; 84 | 85 | windows_functions_layer { 86 | #define WK13 &hm LCMD F5 87 | #define WK14 &hm LCTRL F6 88 | #define WK15 &hm LALT F7 89 | #define WK16 &hm LSHFT F8 90 | 91 | #define WK19 &hm RSHFT HOME 92 | #define WK20 &hm LALT PG_DN 93 | #define WK21 &hm RCTRL END 94 | #define WK22 &kp RCMD 95 | 96 | #define WK38 &to_wBAS 97 | #define WK39 &to_wAXN 98 | 99 | display-name = "wFNK"; 100 | bindings = < 101 | WKY_ESC &kp F9 &kp F10 &kp F11 &kp F12 &none &none &none &kp PG_UP &none &none NAV_DEL 102 | &mp_wk_bc WK13 WK14 WK15 WK16 &none &none WK19 WK20 WK21 WK22 NAV_BSPC 103 | WKY_TAB &kp F1 &kp F2 &kp F3 &kp F4 &none &none &none &none &none &none &none 104 | &mp_cs KEY_SPC WK38 WK39 WKY_RET &mp_dc 105 | >; 106 | }; 107 | 108 | windows_settings_layer { 109 | #define WS10 &kp LG(LS(GRAVE)) // tap: fancy zones 110 | #define WS11 &kp LC(LS(ESC)) // tap: task manager 111 | #define WS12 &kp LG(SPACE) // tap: input source 112 | #define WS24 &mp_sSTG_cb // tap: none | shift: clear current profile | alt: clear all profiles 113 | 114 | #define WS22 &kp RG(PAUSE_BREAK) // tap: system info 115 | #define WS23 &kp RG(I) // tap: windows settings 116 | #define WS34 &kp LC(LA(DEL)) // tap: windows security 117 | 118 | #define WS04 &kp LG(LS(C)) // tap: color picker 119 | #define WS05 &kp RC(PLUS) // tap: zoom in 120 | #define WS16 &mp_mSTG_screenshot 121 | #define WS17 &mp_wa_zoom_reset // tap: zoom reset | shift: zoom reset on vscode 122 | #define WS28 &kp LG(E) // tap: file explorer 123 | #define WS29 &kp RC(MINUS) // tap: zoom out 124 | 125 | #define WS07 &kp LA(LG(SQT)) // tap: magnifier in 126 | #define WS18 &kp LA(LG(N8)) // tap: magnifier reset 127 | #define WS19 &hm RSHFT C_PREV 128 | #define WS20 &hm LALT C_PP 129 | #define WS30 &kp LA(LG(MINUS)) // tap: magnifier out 130 | 131 | display-name = "wSTG"; 132 | bindings = < 133 | WKY_ESC &m_s_b1 &m_s_b2 &none WS04 WS05 WS07 &kp C_VOL_DN &kp C_MUTE &kp C_VOL_UP WS10 WS11 134 | WS12 &m_s_b3 &m_s_b4 &none WS16 WS17 WS18 WS19 WS20 &kp C_NEXT WS22 WS23 135 | WS24 &m_s_b5 &m_s_b6 &none WS28 WS29 WS30 &none &none &none WS34 &none 136 | &kp C_BRI_DN KEY_SPC &to_wBAS &to_wAXN WKY_RET &kp C_BRI_UP 137 | >; 138 | }; 139 | 140 | -------------------------------------------------------------------------------- /config/os/windows/keys.dtsi: -------------------------------------------------------------------------------- 1 | /* Shared Keys */ 2 | #define WKY_ESC &to_wBAS_kp 0 ESC // tap: esc | long-tap: BAS layer 3 | #define WKY_RET &mt F2 RET // tap: return | long-tap: rename (like macOs) 4 | #define WKY_TAB &mt RIGHT TAB // tap: tab | long-tap: right (terminal autocompletion) 5 | -------------------------------------------------------------------------------- /config/os/windows/layers.dtsi: -------------------------------------------------------------------------------- 1 | /* windows */ 2 | #define wBAS 5 3 | #define wDEV 6 4 | #define wAXN 7 5 | #define wFNK 8 6 | #define wSTG 9 7 | 8 | /* Helpers */ 9 | #define H_wCWR F13 10 | #define F_wBAS LS(F14) 11 | #define F_wDEV LS(F15) 12 | #define F_wAXN LS(F16) 13 | #define F_wFNK LS(F17) 14 | #define F_wSTG LS(F18) 15 | -------------------------------------------------------------------------------- /config/os/windows/macros/dev.dtsi: -------------------------------------------------------------------------------- 1 | // action: ?░:░ 2 | m_wd_cto: macro_windows_conditional_ternary_operator { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | bindings 6 | = <&none> 7 | , <¯o_wait_time MC_WAIT> 8 | , <&kp QMARK &kp SPACE &kp SPACE &kp COLON &kp SPACE> 9 | , <&kp LEFT &kp LEFT &kp LEFT>; 10 | }; 11 | 12 | // action: ?. 13 | m_wd_oco: macro_windows_optional_chaining_operator { 14 | compatible = "zmk,behavior-macro"; 15 | #binding-cells = <0>; 16 | bindings 17 | = <&kp QMARK &kp DOT>; 18 | }; 19 | -------------------------------------------------------------------------------- /config/os/windows/macros/int.dtsi: -------------------------------------------------------------------------------- 1 | // action: ` 2 | m_wi_g: macro_windows_int_grave { 3 | compatible = "zmk,behavior-macro"; 4 | #binding-cells = <0>; 5 | bindings = 6 | <&kp GRAVE &kp SPACE>; 7 | }; 8 | 9 | // action: ~ 10 | m_wi_t: macro_windows_int_tilde { 11 | compatible = "zmk,behavior-macro"; 12 | #binding-cells = <0>; 13 | bindings = 14 | <&kp TILDE &kp SPACE>; 15 | }; 16 | 17 | // action: ^ 18 | m_wi_c: macro_windows_int_caret { 19 | compatible = "zmk,behavior-macro"; 20 | #binding-cells = <0>; 21 | bindings = 22 | <&kp CARET &kp SPACE>; 23 | }; 24 | 25 | // action: " 26 | m_wi_d: macro_windows_int_double_quote { 27 | compatible = "zmk,behavior-macro"; 28 | #binding-cells = <0>; 29 | bindings = 30 | <&kp DQT &kp SPACE>; 31 | }; 32 | 33 | // action: ' 34 | m_wi_s: macro_windows_int_single_quote { 35 | compatible = "zmk,behavior-macro"; 36 | #binding-cells = <0>; 37 | bindings = 38 | <&kp SQT &kp SPACE>; 39 | }; 40 | -------------------------------------------------------------------------------- /config/os/windows/macros/layers.dtsi: -------------------------------------------------------------------------------- 1 | TO_MACRO(w, DEV) //to_wDEV 2 | TO_MACRO(w, AXN) //to_wAXN 3 | TO_MACRO(w, FNK) //to_wFNK 4 | TO_MACRO(w, STG) //to_wSTG 5 | 6 | MOTO_MACRO(w, AXN, BAS) //mo_wAXN_to_wBAS 7 | MOTO_MACRO(w, AXN, DEV) //mo_wAXN_to_wDEV 8 | MOTO_MACRO(w, STG, BAS) //mo_wSTG_to_wBAS 9 | MOTO_MACRO(w, DEV, BAS) //mo_wDEV_to_wBAS 10 | MOTO_MACRO(w, FNK, AXN) //mo_wFNK_to_wAXN 11 | 12 | cw_wCAPS: cw_wCAPS { 13 | compatible = "zmk,behavior-macro"; 14 | #binding-cells = <0>; 15 | tap-ms = ; 16 | bindings 17 | = <&kp LS(H_wCWR)> 18 | , <&kp CAPS>; 19 | }; 20 | 21 | cw_wON: cw_wON { 22 | compatible = "zmk,behavior-macro"; 23 | #binding-cells = <0>; 24 | bindings 25 | = <&kp LA(H_wCWR)> 26 | , <&cw>; 27 | }; 28 | 29 | cw_wOFF: cw_wOFF { 30 | compatible = "zmk,behavior-macro"; 31 | #binding-cells = <0>; 32 | bindings 33 | = <&kp LS(LC(H_wCWR))> 34 | , <&kp K_CANCEL>; 35 | }; -------------------------------------------------------------------------------- /config/os/windows/morph/actions.dtsi: -------------------------------------------------------------------------------- 1 | // tap: ⇺ 2 | // shift: ⎗ 3 | mp_wa_prev: morph_windows_action_prev { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&kp RC(PG_UP)>, <&kp LC(LG(LEFT))>; 8 | }; 9 | 10 | // tap: ⇻ 11 | // shift: ⎘ 12 | mp_wa_next: morph_windows_action_next { 13 | compatible = "zmk,behavior-mod-morph"; 14 | #binding-cells = <0>; 15 | mods = <(MOD_LSFT|MOD_RSFT)>; 16 | bindings = <&kp RC(PG_DN)>, <&kp LC(LG(RIGHT))>; 17 | }; 18 | -------------------------------------------------------------------------------- /config/os/windows/morph/base.dtsi: -------------------------------------------------------------------------------- 1 | // tap: ' 2 | // shift: " 3 | mp_wk_q: morph_windows_key_quote { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&m_wi_s>, <&m_wi_d>; 8 | }; 9 | 10 | // tap: BACKSPACE 11 | // shift: CAPS_LOCK 12 | mp_wk_bc: morph_windows_key_backspace_caps { 13 | compatible = "zmk,behavior-mod-morph"; 14 | #binding-cells = <0>; 15 | mods = <(MOD_LSFT|MOD_RSFT)>; 16 | bindings = , <&cw_wCAPS>; 17 | }; 18 | -------------------------------------------------------------------------------- /config/os/windows/morph/dev.dtsi: -------------------------------------------------------------------------------- 1 | //mp_wDEV_pound 2 | MORPH_KA( 3 | w, 4 | DEV, 5 | pound, 6 | pound, 7 | MOD_LALT, 8 | &kp POUND, // tap: # 9 | &kp LC(LS(SEMICOLON)) // alt: ° 10 | ) 11 | 12 | //mp_wDEV_money 13 | MORPH_KA( 14 | w, 15 | DEV, 16 | money, 17 | money, 18 | MOD_LALT, 19 | &kp DLLR, // tap: $ 20 | &kp LC(N5) // alt: € 21 | ) 22 | 23 | //mp_wDEV_lb 24 | MORPH_KA( 25 | w, 26 | DEV, 27 | lb, 28 | left_brackets, 29 | MOD_LALT, 30 | &kp LBKT, // tap: [ 31 | &kp LC(LBKT) // alt: « 32 | ) 33 | 34 | //mp_wDEV_rb 35 | MORPH_KA( 36 | w, 37 | DEV, 38 | rb, 39 | right_brackets, 40 | MOD_LALT|MOD_RALT, 41 | &kp RBKT, // tap: ] 42 | &kp LC(RBKT) // alt: » 43 | ) 44 | 45 | // mp_wDEV_qs 46 | MORPH_KA( 47 | w, 48 | DEV, 49 | qs, 50 | question_symbol, 51 | MOD_LALT, 52 | &kp QMARK, // tap: ? 53 | &kp LC(FSLH) // alt: ¿ 54 | ) 55 | 56 | // mp_wDEV_es 57 | MORPH_KA( 58 | w, 59 | DEV, 60 | es, 61 | exclamation_symbol, 62 | MOD_LALT, 63 | &kp EXCL, // tap: ! 64 | &kp LC(N1) // alt: ¡ 65 | ) 66 | 67 | // mp_wDEV_s 68 | MORPH_KA( 69 | w, 70 | DEV, 71 | s, 72 | slash, 73 | MOD_LALT|MOD_RALT, 74 | &kp FSLH, // tap: / 75 | &kp LA(LS(A)) // alt: /* block comment */ 76 | ) 77 | 78 | //mp_wDEV_ql 79 | MORPH_KS( 80 | w, 81 | DEV, 82 | ql, 83 | question_logical, 84 | &m_wd_oco, // tap: ?. 85 | &m_wd_cto // shift: ?░:░ 86 | ) 87 | -------------------------------------------------------------------------------- /config/os/windows/morph/int.dtsi: -------------------------------------------------------------------------------- 1 | mp_wi_a: morph_windows_a { 2 | compatible = "zmk,behavior-mod-morph"; 3 | #binding-cells = <0>; 4 | mods = <(MOD_LALT)>; 5 | bindings = <&kp A>, <&kp LC(A)>; 6 | keep-mods = <(MOD_LALT)>; 7 | }; 8 | 9 | mp_wi_e: morph_windows_e { 10 | compatible = "zmk,behavior-mod-morph"; 11 | #binding-cells = <0>; 12 | mods = <(MOD_LALT)>; 13 | bindings = <&kp E>, <&kp LC(E)>; 14 | keep-mods = <(MOD_LALT)>; 15 | }; 16 | 17 | mp_wi_i: morph_windows_i { 18 | compatible = "zmk,behavior-mod-morph"; 19 | #binding-cells = <0>; 20 | mods = <(MOD_LALT)>; 21 | bindings = <&kp I>, <&kp LC(I)>; 22 | keep-mods = <(MOD_LALT)>; 23 | }; 24 | 25 | mp_wi_o: morph_windows_o { 26 | compatible = "zmk,behavior-mod-morph"; 27 | #binding-cells = <0>; 28 | mods = <(MOD_LALT)>; 29 | bindings = <&kp O>, <&kp LC(O)>; 30 | keep-mods = <(MOD_LALT)>; 31 | }; 32 | 33 | mp_wi_u: morph_windows_u { 34 | compatible = "zmk,behavior-mod-morph"; 35 | #binding-cells = <0>; 36 | mods = <(MOD_LALT)>; 37 | bindings = <&kp U>, <&kp LC(U)>; 38 | keep-mods = <(MOD_LALT)>; 39 | }; 40 | 41 | mp_wi_n: morph_windows_n { 42 | compatible = "zmk,behavior-mod-morph"; 43 | #binding-cells = <0>; 44 | mods = <(MOD_LALT)>; 45 | bindings = <&kp N>, <&kp LC(N)>; 46 | keep-mods = <(MOD_LALT)>; 47 | }; 48 | 49 | mp_wi_y: morph_windows_y { 50 | compatible = "zmk,behavior-mod-morph"; 51 | #binding-cells = <0>; 52 | mods = <(MOD_LALT)>; 53 | bindings = <&kp Y>, <&kp LC(Y)>; 54 | keep-mods = <(MOD_LALT)>; 55 | }; 56 | -------------------------------------------------------------------------------- /config/os/windows/morph/layers.dtsi: -------------------------------------------------------------------------------- 1 | mp_w_stg: morph_windows_stg_layer { 2 | compatible = "zmk,behavior-mod-morph"; 3 | #binding-cells = <0>; 4 | mods = <(MOD_LSFT|MOD_RSFT)>; 5 | bindings = <&mo_wSTG_to_wBAS>, <&to_wSTG>; 6 | }; 7 | 8 | mp_w_dev: morph_windows_dev_layer { 9 | compatible = "zmk,behavior-mod-morph"; 10 | #binding-cells = <0>; 11 | mods = <(MOD_LSFT|MOD_RSFT)>; 12 | bindings = <&mo_wDEV_to_wBAS>, <&to_wDEV>; 13 | }; 14 | -------------------------------------------------------------------------------- /config/os/windows/morph/settings.dtsi: -------------------------------------------------------------------------------- 1 | // tap: zoom reset 2 | // shift: zoom reset vscode 3 | mp_wa_zoom_reset: morph_windows_action_zoom_reset { 4 | compatible = "zmk,behavior-mod-morph"; 5 | #binding-cells = <0>; 6 | mods = <(MOD_LSFT|MOD_RSFT)>; 7 | bindings = <&kp RC(N0)>, <&kp RC(KP_N0)>; 8 | }; 9 | -------------------------------------------------------------------------------- /config/west.yml: -------------------------------------------------------------------------------- 1 | manifest: 2 | remotes: 3 | - name: zmkfirmware 4 | url-base: https://github.com/zmkfirmware 5 | projects: 6 | - name: zmk 7 | remote: zmkfirmware 8 | revision: main 9 | import: app/west.yml 10 | self: 11 | path: config 12 | -------------------------------------------------------------------------------- /docs/android.md: -------------------------------------------------------------------------------- 1 | # Android 2 | 3 | This is a WIP layout based on Colemak DHm for using on Android (with **en-US International** layout on host) that includes Spanish accents, and complemented with easy access to development symbols and JS/TS shortcuts. 4 | 5 | ![US International](/.github/images/layout/US-International.png) 6 | 7 | > **en-US International** layout have a bug with `alt` key that block his behavior. Some extra keys where not available. 8 | 9 | --- 10 | 11 | ## Menu 12 | 13 | - [Conventions](#conventions) 14 | - [Layers](#layers) 15 | - [BAS](#bas) 16 | - [DEV](#dev) 17 | - [AXN](#axn) 18 | - [STG](#stg) 19 | - [Notifications](#notifications) 20 | 21 | --- 22 | 23 | ## Conventions 24 | 25 | ### Icons 26 | 27 | Icons used to describe some modifiers and actions 28 | 29 | | Label | Description | 30 | | :----------: | ------------------------------------------------------------ | 31 | | | Win | 32 | | | Control | 33 | | | Alt | 34 | | | Shift | 35 | | 🄰 | Caps Lock | 36 | | | Esc | 37 | | | Tab | 38 | | | Return | 39 | | | [Hold Tap](https://zmk.dev/docs/behaviors/hold-tap#hold-tap) | 40 | 41 | ### Shared Modifiers 42 | 43 | | Label | Shortcut | Actions | 44 | | -------------: | --------------------------: | ----------------------------------------------------- | 45 | | | | Backspace | 46 | | \|⌫ | ⇪⌫ | Delete word backward | 47 | | | | Delete | 48 | | ⌦\| | ⇪⌦ | Delete word forward | 49 | | F2 | ⇪⏎ | Rename (like macOS) | 50 | | | ⇪↹ | left (terminal autocompletion) | 51 | | 🄰 | + | Caps lock | 52 | | ⇧⇧ | L⇧+R⇧ | [Caps word](https://zmk.dev/docs/behaviors/caps-word) | 53 | | ^^ | L^+R^ | Cancel caps | 54 | | ❖❖ | L❖+R❖ | Show current layout on screen | 55 | 56 | ⇧ [Back to menu](#menu) 57 | 58 | --- 59 | 60 | ## Layers 61 | 62 | ### BAS 63 | 64 | Letters, accents for Spanish language and quick shortcuts for most used symbols to "avoid" changing layers. 65 | 66 | ![BAS Layer](/.github/images/layers/android/BAS.png) 67 | 68 | #### Spanish 69 | 70 | | Label | Shortcut | 71 | | :----------: | --------------------------------------: | 72 | | á | +a | 73 | | Á | ++a | 74 | | é | +e | 75 | | É | ++e | 76 | | í | +i | 77 | | Í | ++i | 78 | | ó | +o | 79 | | Ó | ++o | 80 | | ú | +u | 81 | | Ú | ++u | 82 | | ü | ^+u | 83 | | Ü | +^+u | 84 | | ñ | +n | 85 | | Ñ | ++n | 86 | 87 | ⇧ [Back to menu](#menu) 88 | 89 | ### DEV 90 | 91 | Symbols and dev shortcuts for JS/TS. 92 | 93 | ![DEV Layer](/.github/images/layers/android/DEV.png) 94 | 95 | #### Browser DevTools 96 | 97 | | Label | Shortcut | Action | 98 | | -----------: | ------------------------: | --------------------------- | 99 | | | | Refresh | 100 | | | + | Hard refresh (clean cache) | 101 | 102 | #### VS Code 103 | 104 | | Label | Shortcut | Action | 105 | | ------------------: | -------------------------: | -------------------- | 106 | | // | +/ | Toggle line comment | 107 | 108 | ⇧ [Back to menu](#menu) 109 | 110 | ### AXN 111 | 112 | Quick navigation actions and numbers. Function keys works independently as a sub-layer to avoid shortcuts collisions. 113 | 114 | ![AXN Layer](/.github/images/layers/android/AXN.png) 115 | 116 | #### Navigation 117 | 118 | | Label | Shortcut | Action | 119 | | ------------: | ------------------------- | --------------------- | 120 | | | | Up | 121 | | | | Down | 122 | | | | Left | 123 | | | | Right | 124 | | | | Home | 125 | | | | End | 126 | | | ^+ | Beginning of document | 127 | | | ^+ | End of document | 128 | | | | Page up | 129 | | | | Page down | 130 | | | | Prev Tab | 131 | | | | Next Tab | 132 | 133 | #### Actions 134 | 135 | | Label | Shortcut | Action | 136 | | -------------: | -------------------------- | -------------------- | 137 | | <\| | | Expand selection | 138 | | \|> | | Shrink selection | 139 | | | | Undo | 140 | | | | Redo | 141 | | | | Cut | 142 | | | | Copy | 143 | | | | Paste | 144 | | | | Find | 145 | | | | Replace | 146 | 147 | ⇧ [Back to menu](#menu) 148 | 149 | ### STG 150 | 151 | Dedicated to Bluetooth and media controls. 152 | 153 | ![STG Layer](/.github/images/layers/android/STG.png) 154 | 155 | #### Actions 156 | 157 | | Label | Action | 158 | | -------------: | ----------------------- | 159 | | B#️⃣ | Jump to #️⃣ device | 160 | | | Clear Bluetooth | 161 | | 🌐 | Browser | 162 | | 🎤 | Assist | 163 | | 📅 | Calendar | 164 | | 🎼 | Music | 165 | | 📧 | Mail | 166 | | 📞 | Contacts | 167 | | | Home | 168 | | | Notifications | 169 | | | Apps | 170 | | | Shortcuts | 171 | 172 | #### Media 173 | 174 | | Label | Action | 175 | | ------------: | ----------- | 176 | | 🔊 | Volume up | 177 | | 🔇 | Mute | 178 | | 🔉 | Volume down | 179 | | ⏮️ | Prev | 180 | | ⏯️ | Play/Pause | 181 | | ⏭️ | Next | 182 | 183 | ⇧ [Back to menu](#menu) 184 | 185 | --- 186 | 187 | ## Notifications 188 | 189 | ### Prerequisites 190 | 191 | - Download and install [Automate](https://play.google.com/store/apps/details?id=com.llamalab.automate) 192 | 193 | ### Flows 194 | 195 | - Import the [`🅰️ Corne Caps.flo`](<../host/android/automate/🅰️ Corne Caps.flo>) and [`🏷️ Corne Layer.flo`](<../host/android/automate/🏷️ Corne Layer.flo>) flows located inside `host/android/automate` folder 196 | - Add asked permissions 197 | - Under `Flow > Settings > Privileges` menu check the `collect all the text you type` option 198 | - Run `Corne Caps` and `Corne Layer` 199 | - Under `Settings > Safety > Run on system startup` select `Resume running flows on system startup (boot)` 200 | 201 | ![Layers](/.github/images/examples/automate-layers.gif) 202 | ![Caps](/.github/images/examples/automate-caps.gif) 203 | 204 | #### Premium 205 | 206 | - Import the [`👁️ Corne Watch.flo`](<../host/android/automate/👁️ Corne Watch.flo>) flow located inside `host/android/automate` folder 207 | - Under `Settings > Workarounds > Bluetooth tethering workaround` select `Privileged service` 208 | - Stop `Corne Caps` and `Corne Layer` 209 | - Run `Corne Watch` (it will watch if the keyboard is connected and start or stop `Corne Caps` and `Corne Layer`) 210 | 211 | ![Watch Mode](/.github/images/examples/automate-watch.gif) 212 | 213 | ### Indicators 214 | 215 | Toast notifications: 216 | 217 | - CapsLock (On/Off) 218 | - CapsWord (On/Off) 219 | - Layer changing 220 | - Momentary layer activation and deactivation 221 | 222 | ⇧ [Back to menu](#menu) 223 | -------------------------------------------------------------------------------- /docs/macos.md: -------------------------------------------------------------------------------- 1 | # macOS 2 | 3 | This is a WIP layout based on Colemak DHm for using on macOS (with **en-US International** ANSI layout on host) that includes Spanish accents, and complemented with easy access to development symbols and JS/TS shortcuts. 4 | 5 | ![US International](/.github/images/layout/US-International.png) 6 | 7 | --- 8 | 9 | ## Menu 10 | 11 | - [Conventions](#conventions) 12 | - [Layers](#layers) 13 | - [BAS](bas) 14 | - [DEV](dev) 15 | - [AXN](axn) 16 | - [STG](stg) 17 | 18 | --- 19 | 20 | ## Conventions 21 | 22 | ### Icons 23 | 24 | Icons used to describe some modifiers and actions 25 | 26 | | Label | Description | 27 | | :----------: | ------------------------------------------------------------ | 28 | | | Command | 29 | | | Control | 30 | | | Alt | 31 | | | Shift | 32 | | 🄰 | Caps Lock | 33 | | | Esc | 34 | | | Tab | 35 | | | Return | 36 | | | Space | 37 | | | [Hold Tap](https://zmk.dev/docs/behaviors/hold-tap#hold-tap) | 38 | 39 | ### Shared Modifiers 40 | 41 | ### Text 42 | 43 | | Label | Shortcut | Actions | 44 | | -------------: | --------------------------: | ----------------------------------------------------- | 45 | | | | Backspace | 46 | | \|⌫ | ⇪⌫ | Delete word backward | 47 | | ⌫\| | + | Delete until beginning | 48 | | | | Delete | 49 | | ⌦\| | ⇪⌦ | Delete word forward | 50 | | \|⌦ | + | Delete until end | 51 | | | ⇪↹ | Left (terminal autocompletion) | 52 | | 🄰 | + | Caps lock | 53 | | ⇧⇧ | L⇧+R⇧ | [Caps word](https://zmk.dev/docs/behaviors/caps-word) | 54 | | ⌘⌘ | L^+R^ | Cancel caps | 55 | 56 | ### Files 57 | 58 | | Label | Shortcut | Actions | 59 | | -----------: | --------------------------------------: | ----------------------- | 60 | | | + | Move to trash | 61 | | | ++ | Delete file permanently | 62 | 63 | ### Layers 64 | 65 | | Label | Shortcut | Actions | 66 | | -------------: | --------------------------: | ------------------------------ | 67 | | ⌥⌥ | L⌘+R⌘ | Show current layout on screen | 68 | 69 | ⇧ [Back to menu](#menu) 70 | 71 | --- 72 | 73 | ## Layers 74 | 75 | ### BAS 76 | 77 | Letters, accents for Spanish language and quick shortcuts for most used symbols to "avoid" changing layers. 78 | 79 | ![BAS Layer](/.github/images/layers/macos/BAS.png) 80 | 81 | #### Spanish 82 | 83 | | Label | Shortcut | 84 | | :----------: | --------------------------------------: | 85 | | á | +a | 86 | | Á | ++a | 87 | | é | +e | 88 | | É | ++e | 89 | | í | +i | 90 | | Í | ++i | 91 | | ó | +o | 92 | | Ó | ++o | 93 | | ú | +u | 94 | | Ú | ++u | 95 | | ü | ^+u | 96 | | Ü | +^+u | 97 | | ñ | +n | 98 | | Ñ | ++n | 99 | 100 | ⇧ [Back to menu](#menu) 101 | 102 | ### DEV 103 | 104 | Symbols and dev shortcuts for JS/TS. 105 | 106 | ![DEV Layer](/.github/images/layers/macos/DEV.png) 107 | 108 | #### Symbols 109 | 110 | | Label | Shortcut | 111 | | :----------: | -------------------------: | 112 | | ° | +# | 113 | | | +$ | 114 | | « | +[ | 115 | | » | +] | 116 | | ¡ | +! | 117 | | ¿ | +? | 118 | 119 | #### Browser DevTools 120 | 121 | | Label | Shortcut | Action | 122 | | -----------: | ---------------------------: | -------------------------- | 123 | | | | Refresh | 124 | | | + | Hard refresh (clean cache) | 125 | | | | Open DevTools | 126 | 127 | #### VS Code 128 | 129 | | Label | Shortcut | Action | 130 | | ------------------: | --------------------------------------: | --------------------------- | 131 | | // | +/ | Toggle line comment | 132 | | /\* \*/ | +/ | Toggle block comment | 133 | 134 | ⇧ [Back to menu](#menu) 135 | 136 | ### AXN 137 | 138 | Quick navigation actions and numbers. Function keys works independently as a sub-layer to avoid shortcuts collisions. 139 | 140 | ![AXN Layer](/.github/images/layers/macos/AXN.png) 141 | 142 | #### Navigation 143 | 144 | | Label | Shortcut | Action | 145 | | ------------: | -------------------------- | --------------------- | 146 | | | | Up | 147 | | | | Down | 148 | | | | Left | 149 | | | | Right | 150 | | | | Home | 151 | | | | End | 152 | | | ^+ | Beginning of document | 153 | | | ^+ | End of document | 154 | | | | Page up | 155 | | | | Page down | 156 | | | | Prev Tab | 157 | | | | Next Tab | 158 | 159 | #### Actions 160 | 161 | | Label | Shortcut | Action | 162 | | -------------: | -------------------------- | -------------------- | 163 | | <\| | | Expand selection | 164 | | \|> | | Shrink selection | 165 | | | | Undo | 166 | | | | Redo | 167 | | | | Cut | 168 | | | | Copy | 169 | | | | Paste | 170 | | | + | Paste without format | 171 | | | | Find | 172 | | | | Replace | 173 | 174 | ⇧ [Back to menu](#menu) 175 | 176 | ### STG 177 | 178 | Dedicated to Bluetooth and media controls. 179 | 180 | ![STG Layer](/.github/images/layers/macos/STG.png) 181 | 182 | #### Actions 183 | 184 | | Label | Shortcut | Action | 185 | | --------------: | -------------------------- | ---------------------------- | 186 | | B#️⃣ | | Jump to #️⃣ device | 187 | | | | Input Source | 188 | | | | Clear Bluetooth | 189 | | Z+ | | Zoom in | 190 | | ZR | | Zoom reset | 191 | | ZR | +ZR | Zoom reset VSCode | 192 | | Z- | | Zoom out | 193 | | 🔅 | | Bright down | 194 | | 🔆 | | Bright up | 195 | | | | Application Window | 196 | | | | Mission Control | 197 | 198 | #### Tools 199 | 200 | | Label | Shortcut | Action | 201 | | -------------: | -------------------------- | ---------------------------- | 202 | | | | Show Color Picker | 203 | | 🜜 | + | Pick a color | 204 | | | | Capture screenshot options | 205 | | | + | Capture portion of the screen | 206 | | | + | Capture a window or menu | 207 | | | + | Capture area of the screen | 208 | | | | Finder (File Explorer) | 209 | | | + | Show/hide system files | 210 | 211 | > [!NOTE] 212 | > Combine `^` with `⇧` or `⌥` for sending to the clipboard instead of saving it to a file. 213 | 214 | #### Media 215 | 216 | | Label | Shortcut | Action | 217 | | ------------: | ------------------------- | ------------ | 218 | | 🔊 | | Volume up | 219 | | 🔇 | | Volume Mute | 220 | | 🎙️ | +🔇 | Mic Mute | 221 | | 🔉 | | Volume down | 222 | 223 | > Requires (MuteKey)[https://apps.apple.com/us/app/mutekey/id1509590766?mt=12] app 224 | 225 | ⇧ [Back to menu](#menu) 226 | -------------------------------------------------------------------------------- /docs/windows.md: -------------------------------------------------------------------------------- 1 | # Windows 2 | 3 | This is a WIP layout based on Colemak DHm for using on Windows (with **en-US International** layout on host) that includes Spanish accents, and complemented with easy access to development symbols and JS/TS shortcuts. 4 | 5 | ![US International](/.github/images/layout/US-International.png) 6 | 7 | --- 8 | 9 | ## Menu 10 | 11 | - [Conventions](#conventions) 12 | - [Layers](#layers) 13 | - [BAS](bas) 14 | - [DEV](dev) 15 | - [AXN](axn) 16 | - [STG](stg) 17 | - [Notifications](#notifications) 18 | - [Battery Indicators](#battery-indicators) 19 | 20 | --- 21 | 22 | ## Conventions 23 | 24 | ### Icons 25 | 26 | Icons used to describe some modifiers and actions 27 | 28 | | Label | Description | 29 | | :----------: | ------------------------------------------------------------ | 30 | | | Win | 31 | | | Control | 32 | | | Alt | 33 | | | Shift | 34 | | 🄰 | Caps Lock | 35 | | | Esc | 36 | | | Tab | 37 | | | Return | 38 | | | [Hold Tap](https://zmk.dev/docs/behaviors/hold-tap#hold-tap) | 39 | 40 | ### Shared Modifiers 41 | 42 | | Label | Shortcut | Actions | 43 | | -------------: | ---------------------------: | ----------------------------------------------------- | 44 | | | | Backspace | 45 | | \|⌫ | ⇪⌫ | Delete word backward | 46 | | | | Delete | 47 | | ⌦\| | ⇪⌫ | Delete word forward | 48 | | F2 | ⇪⏎ | Rename (like macOS) | 49 | | | ⇪↹ | Left (terminal autocompletion) | 50 | | 🄰 | + | Caps lock | 51 | | ⇧⇧ | L⇧+R⇧ | [Caps word](https://zmk.dev/docs/behaviors/caps-word) | 52 | | ^^ | L^+R^ | Cancel caps | 53 | | ❖❖ | L❖+R❖ | Show current layout on screen | 54 | 55 | ⇧ [Back to menu](#menu) 56 | 57 | --- 58 | 59 | ## Layers 60 | 61 | ### BAS 62 | 63 | Letters, accents for Spanish language and quick shortcuts for most used symbols to "avoid" changing layers. 64 | 65 | ![BAS Layer](/.github/images/layers/windows/BAS.png) 66 | 67 | #### Spanish 68 | 69 | | Label | Shortcut | 70 | | :----------: | --------------------------------------: | 71 | | á | +a | 72 | | Á | ++a | 73 | | é | +e | 74 | | É | ++e | 75 | | í | +i | 76 | | Í | ++i | 77 | | ó | +o | 78 | | Ó | ++o | 79 | | ú | +u | 80 | | Ú | ++u | 81 | | ü | ^+u | 82 | | Ü | +^+u | 83 | | ñ | +n | 84 | | Ñ | ++n | 85 | 86 | ⇧ [Back to menu](#menu) 87 | 88 | ### DEV 89 | 90 | Symbols and dev shortcuts for JS/TS. 91 | 92 | ![DEV Layer](/.github/images/layers/windows/DEV.png) 93 | 94 | #### Symbols 95 | 96 | | Label | Shortcut | 97 | | :-------------: | ---------------------------------------: | 98 | | ° | +# | 99 | | | +$ | 100 | | « | +[ | 101 | | » | +] | 102 | | ¡ | +! | 103 | | ¿ | +? | 104 | 105 | #### Browser DevTools 106 | 107 | | Label | Shortcut | Action | 108 | | -----------: | ---------------------------: | -------------------------- | 109 | | | | Refresh | 110 | | | + | Hard refresh (clean cache) | 111 | | | | Open DevTools | 112 | 113 | #### VS Code 114 | 115 | | Label | Shortcut | Action | 116 | | ------------------: | --------------------------------------: | --------------------------- | 117 | | // | +/ | Toggle line comment | 118 | | /\* \*/ | +/ | Toggle block comment | 119 | 120 | ⇧ [Back to menu](#menu) 121 | 122 | ### AXN 123 | 124 | Quick navigation actions and numbers. Function keys works independently as a sub-layer to avoid shortcuts collisions. 125 | 126 | ![AXN Layer](/.github/images/layers/windows/AXN.png) 127 | 128 | #### Navigation 129 | 130 | | Label | Shortcut | Action | 131 | | ------------: | -------------------------------------- | --------------------- | 132 | | | | Up | 133 | | | | Down | 134 | | | | Left | 135 | | | | Right | 136 | | | | Home | 137 | | | | End | 138 | | | ^+ | Beginning of document | 139 | | | ^+ | End of document | 140 | | | | Page up | 141 | | | | Page down | 142 | | | | Prev Tab | 143 | | | | Next Tab | 144 | | | | New virtual desktop | 145 | | | | Close virtual desktop | 146 | | | + | Prev desktop | 147 | | | + | Next desktop | 148 | 149 | #### Actions 150 | 151 | | Label | Shortcut | Action | 152 | | -------------: | -------------------------- | -------------------- | 153 | | <\| | | Expand selection | 154 | | \|> | | Shrink selection | 155 | | | | Undo | 156 | | | | Redo | 157 | | | | Cut | 158 | | | | Copy | 159 | | | | Paste | 160 | | | + | Paste without format | 161 | | | | Find | 162 | | | | Replace | 163 | 164 | ⇧ [Back to menu](#menu) 165 | 166 | ### STG 167 | 168 | Dedicated to Bluetooth and media controls. 169 | 170 | ![STG Layer](/.github/images/layers/windows/STG.png) 171 | 172 | #### Actions 173 | 174 | | Label | Shortcut | Action | 175 | | --------------: | -------------------------- | ---------------------- | 176 | | B#️⃣ | | Jump to #️⃣ device | 177 | | | | Input source | 178 | | | | Clear Bluetooth | 179 | | | | Print Screen | 180 | | | | Color Picker | 181 | | 🖿 | | File Explorer | 182 | | Z+ | | Zoom in | 183 | | ZR | | Zoom reset | 184 | | ZR | +ZR | Zoom reset VSCode | 185 | | Z- | | Zoom out | 186 | | M+ | | Magnifier in | 187 | | MR | | Magnifier reset | 188 | | M- | | Magnifier out | 189 | | 🔅 | | Bright down | 190 | | 🔆 | | Bright up | 191 | | | | Fancy Zones | 192 | | | | Task Manager | 193 | | | | System Info | 194 | | | | Windows Security | 195 | | | | Windows Settings | 196 | 197 | #### Media 198 | 199 | | Label | Action | 200 | | ------------: | ------------ | 201 | | 🔊 | Volume up | 202 | | 🔇 | Mute | 203 | | 🔉 | Volume down | 204 | | ⏮️ | Prev | 205 | | ⏯️ | Play/Pause | 206 | | ⏭️ | Next | 207 | 208 | ⇧ [Back to menu](#menu) 209 | 210 | --- 211 | 212 | ## Notifications 213 | 214 | ![Notifications](/.github/images/examples/ahk-notifications.gif) 215 | 216 | ### Prerequisites 217 | 218 | - Download and install [AutoHotKey](https://www.autohotkey.com/) v2 219 | 220 | ### Startup 221 | 222 | To automatically run the scripts at startup: 223 | 224 | - Create shortcuts to `startup.ahk` and `caps.ahk` scripts located inside `host/windows/ahk` folder 225 | - Press +r and run this command `shell:startup` 226 | - Move the shortcut to this folder 227 | 228 | ### Indicators 229 | 230 | Screencast mode notifications: 231 | 232 | - CapsLock (On/Off) 233 | - CapsWord (On/Off) 234 | - Layer changing 235 | - Momentary layer activation and deactivation 236 | - Tray icons with current layer 237 | - Current layer image as helper (close with ESC) 238 | 239 | ⇧ [Back to menu](#menu) 240 | 241 | --- 242 | 243 | ## Battery Indicators 244 | 245 | ![Battery](/.github/images/examples/battery.png) 246 | 247 | Needs [ZMK PR Battery BLE](https://github.com/zmkfirmware/zmk/pull/1243) and [ZMK Split Battery](https://github.com/Fukkei/zmk-split-battery) 248 | 249 | ⇧ [Back to menu](#menu) 250 | -------------------------------------------------------------------------------- /host/android/automate/🅰️ Corne Caps.flo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/host/android/automate/🅰️ Corne Caps.flo -------------------------------------------------------------------------------- /host/android/automate/🏷️ Corne Layer.flo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/host/android/automate/🏷️ Corne Layer.flo -------------------------------------------------------------------------------- /host/android/automate/👁️ Corne Watch.flo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deintech/corne-zmk-config/5648142366527659acbef8a9c10028a06c547b6b/host/android/automate/👁️ Corne Watch.flo -------------------------------------------------------------------------------- /host/windows/ahk/caps.ahk: -------------------------------------------------------------------------------- 1 | ; Modifiers 2 | ; ^ Ctrl 3 | ; ! Alt 4 | ; + Shift 5 | ; # Win 6 | 7 | ; #Warn ; Enable warnings to assist with detecting common errors. 8 | SendMode("Input") ; Recommended for new scripts due to its superior speed and reliability. 9 | SetWorkingDir(A_ScriptDir) ; Ensures a consistent starting directory. 10 | #SingleInstance force 11 | Persistent 12 | 13 | ChangeCapsIcon("OFF") 14 | A_IconTip := "Caps Lock: OFF" 15 | 16 | #Include "shared.ahk" 17 | 18 | ~*CapsLock:: 19 | { 20 | Sleep(10) ; drastically improves reliability on slower systems 21 | status := (GetKeyState("CapsLock", "T") ? "ON" : "OFF") 22 | ChangeCapsIcon(status) 23 | ; ShowMessage("CapsLock: " status) 24 | } 25 | 26 | +$F18:: 27 | { 28 | Sleep(10) ; drastically improves reliability on slower systems 29 | ChangeCapsIcon("CW-ON") 30 | ; ShowMessage("CapsWord: ON") 31 | ; TODO: identify if key was pressed using shift and then shof OFF icon 32 | Sleep(750 * 4) ; SPECIFY DISPLAY TIME (ms) 33 | ChangeCapsIcon("OFF") 34 | } 35 | 36 | ^+$F18:: 37 | { 38 | Sleep(10) ; drastically improves reliability on slower systems 39 | ChangeCapsIcon("CW-OFF") 40 | ; ShowMessage("CapsWord: OFF") 41 | Sleep(750 * 1) ; SPECIFY DISPLAY TIME (ms) 42 | ChangeCapsIcon("OFF") 43 | } 44 | -------------------------------------------------------------------------------- /host/windows/ahk/help.ahk: -------------------------------------------------------------------------------- 1 | #Include "shared.ahk" 2 | 3 | ; Modifiers 4 | ; ^ Ctrl 5 | ; ! Alt 6 | ; + Shift 7 | ; # Win 8 | 9 | ^!+$F19:: 10 | { 11 | ShowHelp("BAS") 12 | } 13 | 14 | ^!+$F20:: 15 | { 16 | ShowHelp("DEV") 17 | } 18 | 19 | ^!+$F21:: 20 | ^!+$F22:: 21 | { 22 | ShowHelp("AXN") 23 | } 24 | 25 | ^!+$F23:: 26 | { 27 | ShowHelp("STG") 28 | } 29 | -------------------------------------------------------------------------------- /host/windows/ahk/keys.ahk: -------------------------------------------------------------------------------- 1 | ; Modifiers 2 | ; ^ Ctrl 3 | ; ! Alt 4 | ; + Shift 5 | ; # Win 6 | 7 | ; Settings 8 | #HotIf WinActive("ahk_exe code.exe") 9 | ^0::Send("^{Numpad0}") ; Zoom Reset 10 | #HotIf 11 | 12 | #HotIf WinActive("ahk_exe Tabby.exe") 13 | ^PgUp::Send("^+{Left}") ; Previous Tab 14 | ^PgDn::Send("^+{Right}") ; Next Tab 15 | #HotIf 16 | 17 | #HotIf WinActive("ahk_exe WindowsTerminal.exe") 18 | ^PgUp::Send("^+{Tab}") ; Previous Tab 19 | ^PgDn::Send("^{Tab}") ; Next Tab 20 | ^\::Send("!\") ; Split Pane Right 21 | ^/::Send("!/") ; Split Pane Down 22 | #HotIf 23 | -------------------------------------------------------------------------------- /host/windows/ahk/layer.ahk: -------------------------------------------------------------------------------- 1 | #Include "shared.ahk" 2 | 3 | +$F19:: 4 | { 5 | Sleep(10) ; drastically improves reliability on slower systems 6 | ChangeLayerIcon("BAS") 7 | ; ShowMessage("BAS") 8 | } 9 | 10 | +$F20:: 11 | { 12 | Sleep(10) ; drastically improves reliability on slower systems 13 | ChangeLayerIcon("DEV") 14 | ; ShowMessage("DEV") 15 | } 16 | 17 | +$F21:: 18 | { 19 | Sleep(10) ; drastically improves reliability on slower systems 20 | ChangeLayerIcon("AXN") 21 | ; ShowMessage("AXN") 22 | } 23 | 24 | +$F22:: 25 | { 26 | Sleep(10) ; drastically improves reliability on slower systems 27 | ChangeLayerIcon("FNK") 28 | ; ShowMessage("FNK") 29 | } 30 | 31 | +$F23:: 32 | { 33 | Sleep(10) ; drastically improves reliability on slower systems 34 | ChangeLayerIcon("STG") 35 | ; ShowMessage("STG") 36 | } 37 | -------------------------------------------------------------------------------- /host/windows/ahk/shared.ahk: -------------------------------------------------------------------------------- 1 | ChangeCapsIcon(status) 2 | { 3 | ico := "../../../.github/images/icons/windows/caps/" status ".png" 4 | 5 | if FileExist(ico) { 6 | TraySetIcon(ico) 7 | } else { 8 | TraySetIcon("*") 9 | } 10 | } 11 | 12 | ChangeLayerIcon(lyr) 13 | { 14 | ico := "../../../.github/images/icons/windows/layers/" lyr ".png" 15 | 16 | if (lyr = "KBD") { 17 | msg := "Waiting..." 18 | } else { 19 | msg := lyr . " Layer" 20 | } 21 | 22 | if FileExist(ico) { 23 | TraySetIcon(ico) 24 | A_IconTip := msg 25 | } else { 26 | TraySetIcon("*") 27 | A_IconTip := "Waiting..." 28 | } 29 | } 30 | 31 | GetMessage(lyr) 32 | { 33 | if (lyr = "BAS" or lyr = "DEV" or lyr = "AXN" or lyr = "FNK" or lyr = "STG") { 34 | msg := lyr . " Layer" 35 | } else { 36 | msg := lyr 37 | } 38 | return msg 39 | } 40 | 41 | ShowTooltip(lyr) 42 | { 43 | ToolTip() ; remove 44 | msg := GetMessage(lyr) 45 | 46 | ToolTip(msg) 47 | Sleep(750) ; SPECIFY DISPLAY TIME (ms) 48 | ToolTip() ; remove 49 | } 50 | 51 | ShowMessage(lyr) 52 | { 53 | msgGui := Gui() 54 | msgGui.Hide() 55 | 56 | msg := GetMessage(lyr) 57 | height := 80 58 | width := 384 59 | 60 | msgGui.Opt("-Caption +LastFound +ToolWindow") ; +ToolWindow avoids a taskbar button and an alt-tab menu item. 61 | msgGui.BackColor := "344140" 62 | msgGui.SetFont("s30 Bold", "Verdana") 63 | msgGui.Add("Text", "x7 y7 w" . width . " h" . height . " Center c0E0E0E BackgroundTrans", msg) 64 | msgGui.Add("Text", "x7 y13 w" . width . " h" . height . " Center c0E0E0E BackgroundTrans", msg) 65 | msgGui.Add("Text", "x13 y13 w" . width . " h" . height . " Center c0E0E0E BackgroundTrans", msg) 66 | msgGui.Add("Text", "x13 y7 w" . width . " h" . height . " Center c0E0E0E BackgroundTrans", msg) 67 | msgGui.Add("Text", "x10 y10 w" . width . " h" . height . " Center cFEFEFE BackgroundTrans", msg) 68 | WinSetRegion("0-0 w" width " h" height " R15-15") 69 | ; WinSet, transparent, 180 70 | 71 | ; WinGetPos(, , , &TrayWidth, "ahk_class Shell_TrayWnd") 72 | WinGetPos(, , , &TrayHeight, "ahk_class Shell_TrayWnd") 73 | ; xpos := A_ScreenWidth-width-TrayWidth // Left Align 74 | xpos := (A_ScreenWidth/2)-(width/2) 75 | ypos := A_ScreenHeight-120-TrayHeight 76 | 77 | WinSetAlwaysOnTop() 78 | msgGui.Show("w" . width . " h" . height . " x" . xpos . " y" . ypos . " NA") ; NA shows the window without activating it 79 | Sleep(750) ; SPECIFY DISPLAY TIME (ms) 80 | msgGui.Destroy() 81 | } 82 | 83 | ShowHelp(lyr) 84 | { 85 | showGui := Gui() 86 | showGui.Hide() 87 | 88 | img := "../../../.github/images/layers/windows/" . lyr . ".png" 89 | msg := lyr . " Layer" 90 | 91 | height := 525 92 | width := 1150 93 | 94 | showGui.Opt("-Caption +LastFound +ToolWindow") ; +ToolWindow avoids a taskbar button and an alt-tab menu item. 95 | showGui.BackColor := "344140" 96 | showGui.MarginX := "0", showGui.MarginY := "0" 97 | showGui.Add("Picture", "w" . width . " h" . height, img) 98 | showGui.Title := msg 99 | showGui.Show("w" . width . " h" . height . " xCenter yCenter") 100 | WinSetAlwaysOnTop() 101 | WinSetRegion("0-0 w" width " h" height " R15-15") 102 | ; WinSet, transparent, 200 103 | 104 | showGui.OnEvent("Close", Close) 105 | showGui.OnEvent("Escape", Close) 106 | 107 | Close(*) 108 | { 109 | showGui.Destroy() ; Destroy the about box. 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /host/windows/ahk/startup.ahk: -------------------------------------------------------------------------------- 1 | ; #Warn ; Enable warnings to assist with detecting common errors. 2 | SendMode("Input") ; Recommended for new scripts due to its superior speed and reliability. 3 | SetWorkingDir(A_ScriptDir) ; Ensures a consistent starting directory. 4 | #SingleInstance force 5 | Persistent 6 | 7 | ChangeLayerIcon("KBD") 8 | 9 | ; Combos 10 | #Include "keys.ahk" 11 | 12 | ; Notifications 13 | #Include "layer.ahk" 14 | 15 | ; Help 16 | #Include "help.ahk" 17 | --------------------------------------------------------------------------------