diff options
| author | jola5 <jola5@users.noreply.github.com> | 2018-02-02 07:21:41 +0100 |
|---|---|---|
| committer | Jack Humbert <jack.humb@gmail.com> | 2018-02-02 01:21:41 -0500 |
| commit | 2cf6bfe9ac10663181aa3ba32087da956bb7ec1e (patch) | |
| tree | 24d8ee8993770542be82e55066cc4813cbbf67a8 | |
| parent | 2917e55bd4c8e25d79981ec997037b89478d402c (diff) | |
| download | qmk_firmware-2cf6bfe9ac10663181aa3ba32087da956bb7ec1e.tar.gz qmk_firmware-2cf6bfe9ac10663181aa3ba32087da956bb7ec1e.zip | |
Not quite neo (#2318)
* planck with a not-quite-neo layout for a de-DE OS/SW keymap
* ergodox infinity with a not-quite-neo layout for a de-DE OS/SW keymap
* add documentation
| -rw-r--r-- | keyboards/ergodox_infinity/keymaps/not-quite-neo/keymap.c | 292 | ||||
| -rw-r--r-- | keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md | 5 | ||||
| -rw-r--r-- | keyboards/ergodox_infinity/keymaps/not-quite-neo/rules.mk | 2 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/not-quite-neo/config.h | 6 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/not-quite-neo/keymap.c | 129 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/not-quite-neo/readme.md | 5 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/not-quite-neo/rules.mk | 29 | ||||
| -rw-r--r-- | users/not-quite-neo/nqn-basic-layout.h | 124 | ||||
| -rw-r--r-- | users/not-quite-neo/nqn-common.h | 14 | ||||
| -rw-r--r-- | users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h | 73 | ||||
| -rw-r--r-- | users/not-quite-neo/readme.md | 24 |
11 files changed, 703 insertions, 0 deletions
diff --git a/keyboards/ergodox_infinity/keymaps/not-quite-neo/keymap.c b/keyboards/ergodox_infinity/keymaps/not-quite-neo/keymap.c new file mode 100644 index 000000000..8cf51842a --- /dev/null +++ b/keyboards/ergodox_infinity/keymaps/not-quite-neo/keymap.c | |||
| @@ -0,0 +1,292 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | |||
| 3 | /* | ||
| 4 | NQN is not-quite-neo | ||
| 5 | A layout based on neo2 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #include "action_layer.h" | ||
| 9 | #include "version.h" | ||
| 10 | |||
| 11 | #include "nqn-keys-on-quertz-de-latin1.h" | ||
| 12 | #include "nqn-basic-layout.h" | ||
| 13 | |||
| 14 | // Since our quirky block definitions are basically a list of comma separated | ||
| 15 | // arguments, we need a wrapper in order for these definitions to be | ||
| 16 | // expanded before being used as arguments to the LAYOUT_xxx macro. | ||
| 17 | #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) | ||
| 18 | |||
| 19 | #ifdef LEADER_TIMEOUT | ||
| 20 | #undef LEADER_TIMEOUT | ||
| 21 | #endif | ||
| 22 | #define LEADER_TIMEOUT 300 | ||
| 23 | |||
| 24 | #define TAP_ONCE(code) \ | ||
| 25 | register_code (code); \ | ||
| 26 | unregister_code (code) | ||
| 27 | |||
| 28 | |||
| 29 | // Automatic number generation of important keywords | ||
| 30 | enum my_keycodes{ | ||
| 31 | // Layer numbers follow the neo2 terminology, i.e. base layer = layer 1 | ||
| 32 | L01 = 0, | ||
| 33 | /* L02, SHIFT is not (yet) implemented as a fully customizable layer */ | ||
| 34 | L03, | ||
| 35 | L04, | ||
| 36 | L05, | ||
| 37 | /* L06, UNSPECIFIED not (yet) needed */ | ||
| 38 | LFN | ||
| 39 | }; | ||
| 40 | |||
| 41 | |||
| 42 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 43 | /* L01 -> default: BASE LAYER | ||
| 44 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 45 | * | TAB | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | BACKSP | | ||
| 46 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 47 | * | ESC | | LEADR| | LEADR| | ENTER | | ||
| 48 | * |--------+ | | | | +--------| | ||
| 49 | * | L03 | L01_LEFT |------| |------| L01_RIGHT | L03 | | ||
| 50 | * |--------+ | LFN | | LFN | +--------| | ||
| 51 | * | SHIFT | | | | | | SHIFT | | ||
| 52 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 53 | * | CTRL | GUI | ALT | L05 | L04 | | L04 | L05 | ALTGR| LFN | CTRL | | ||
| 54 | * `----------------------------------' `----------------------------------' | ||
| 55 | * ,-------------. ,-------------. | ||
| 56 | * | HOME | END | | LEFT | RIGHT| | ||
| 57 | * ,------|------|------| |------+------+------. | ||
| 58 | * | | | PGUP | | UP | | | | ||
| 59 | * | SPACE| SHIFT|------| |------| SHIFT| SPACE| | ||
| 60 | * | | | PGDN | | DOWN | | | | ||
| 61 | * `--------------------' `--------------------' | ||
| 62 | */ | ||
| 63 | [L01] = LAYOUT_ergodox_wrapper( | ||
| 64 | KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, | ||
| 65 | KC_ESC, L01_LEFT_01, KC_LEAD, | ||
| 66 | MO(L03), L01_LEFT_02, | ||
| 67 | KC_LSHIFT, L01_LEFT_03, MO(LFN), | ||
| 68 | KC_LCTRL,KC_LGUI,KC_LALT, MO(L05), MO(L04), | ||
| 69 | XXXXXXX, XXXXXXX, | ||
| 70 | KC_PGUP, | ||
| 71 | KC_SPACE,KC_LSHIFT,KC_PGDN, | ||
| 72 | //-- | ||
| 73 | XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPACE, | ||
| 74 | KC_LEAD, L01_RIGHT_01, KC_ENTER, | ||
| 75 | L01_RIGHT_02, MO(L03), | ||
| 76 | MO(LFN), L01_RIGHT_03, KC_RSHIFT, | ||
| 77 | MO(L04), MO(L05), KC_RALT, MO(LFN), KC_RCTRL, | ||
| 78 | KC_LEFT, KC_RIGHT, | ||
| 79 | KC_UP, | ||
| 80 | KC_DOWN, KC_RSHIFT, KC_SPACE | ||
| 81 | ), | ||
| 82 | |||
| 83 | |||
| 84 | /* | ||
| 85 | L02 -> MO(L02): SHIFT (as a layer not used, not defined, not reachable) | ||
| 86 | */ | ||
| 87 | |||
| 88 | |||
| 89 | /* L03 -> MO(L03): PROGRAMMING | ||
| 90 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 91 | * | | | | | | | | | | | | | | | | | ||
| 92 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 93 | * | | | | | | | | | ||
| 94 | * |--------+ | | | | +--------| | ||
| 95 | * | | L03_LEFT |------| |------| L03_RIGHT | | | ||
| 96 | * |--------+ | | | | +--------| | ||
| 97 | * | | | | | | | | | ||
| 98 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 99 | * | | | | | | | | | | | | | ||
| 100 | * `----------------------------------' `----------------------------------' | ||
| 101 | * ,-------------. ,-------------. | ||
| 102 | * | | | | | | | ||
| 103 | * ,------|------|------| |------+------+------. | ||
| 104 | * | | | | | | | | | ||
| 105 | * | | |------| |------| | | | ||
| 106 | * | | | | | | | | | ||
| 107 | * `--------------------' `--------------------' | ||
| 108 | */ | ||
| 109 | [L03] = LAYOUT_ergodox_wrapper( | ||
| 110 | _______, _______, _______, _______, _______, _______, _______, | ||
| 111 | _______, L03_LEFT_01, _______, | ||
| 112 | _______, L03_LEFT_02, | ||
| 113 | _______, L03_LEFT_03, _______, | ||
| 114 | _______, _______, _______, _______, _______, | ||
| 115 | _______, _______, | ||
| 116 | _______, | ||
| 117 | _______, _______, _______, | ||
| 118 | //-- | ||
| 119 | _______, _______, _______, _______, _______, _______, _______, | ||
| 120 | _______, L03_RIGHT_01, _______, | ||
| 121 | L03_RIGHT_02, _______, | ||
| 122 | _______, L03_RIGHT_03, _______, | ||
| 123 | _______, _______, _______, _______, _______, | ||
| 124 | _______, _______, | ||
| 125 | _______, | ||
| 126 | _______, _______, _______ | ||
| 127 | ), | ||
| 128 | |||
| 129 | /* L04 -> MO(L04): NAVIGATION AND NUMBERS | ||
| 130 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 131 | * | | | | | | | | | | | | | | | | | ||
| 132 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 133 | * | | | | | | | | | ||
| 134 | * |--------+ | | | | +--------| | ||
| 135 | * | | L04_LEFT |------| |------| L04_RIGHT | | | ||
| 136 | * |--------+ | | | | +--------| | ||
| 137 | * | | | | | | | | | ||
| 138 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 139 | * | | | | | | | | | | | | | ||
| 140 | * `----------------------------------' `----------------------------------' | ||
| 141 | * ,-------------. ,-------------. | ||
| 142 | * | | | | | | | ||
| 143 | * ,------|------|------| |------+------+------. | ||
| 144 | * | | | | | | | | | ||
| 145 | * | 0 | |------| |------| | 0 | | ||
| 146 | * | | | | | | | | | ||
| 147 | * `--------------------' `--------------------' | ||
| 148 | */ | ||
| 149 | [L04] = LAYOUT_ergodox_wrapper( | ||
| 150 | _______, _______, _______, _______, _______, _______, _______, | ||
| 151 | _______, L04_LEFT_01, _______, | ||
| 152 | _______, L04_LEFT_02, | ||
| 153 | _______, L04_LEFT_03, _______, | ||
| 154 | _______, _______, _______, _______, _______, | ||
| 155 | _______, _______, | ||
| 156 | _______, | ||
| 157 | KC_0, _______, _______, | ||
| 158 | //-- | ||
| 159 | _______, _______, _______, _______, _______, _______, _______, | ||
| 160 | _______, L04_RIGHT_01, _______, | ||
| 161 | L04_RIGHT_02, _______, | ||
| 162 | _______, L04_RIGHT_03, _______, | ||
| 163 | _______, _______, _______, _______, _______, | ||
| 164 | _______, _______, | ||
| 165 | _______, | ||
| 166 | _______, _______, KC_0 | ||
| 167 | ), | ||
| 168 | |||
| 169 | |||
| 170 | /* L05 -> MO(L05): ALTERNATE | ||
| 171 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 172 | * | | | | | | | | | | | | | | | | | ||
| 173 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 174 | * | | | | | | | | | ||
| 175 | * |--------+ | | | | +--------| | ||
| 176 | * | | L05_LEFT |------| |------| L05_RIGHT | | | ||
| 177 | * |--------+ | | | | +--------| | ||
| 178 | * | | | | | | | | | ||
| 179 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 180 | * | | | | | | | | | | | | | ||
| 181 | * `----------------------------------' `----------------------------------' | ||
| 182 | * ,-------------. ,-------------. | ||
| 183 | * | | | | | | | ||
| 184 | * ,------|------|------| |------+------+------. | ||
| 185 | * | | | | | | | | | ||
| 186 | * | | |------| |------| | | | ||
| 187 | * | | | | | | | | | ||
| 188 | * `--------------------' `--------------------' | ||
| 189 | */ | ||
| 190 | [L05] = LAYOUT_ergodox_wrapper( | ||
| 191 | _______, _______, _______, _______, _______, _______, _______, | ||
| 192 | _______, L05_LEFT_01, _______, | ||
| 193 | _______, L05_LEFT_02, | ||
| 194 | _______, L05_LEFT_03, _______, | ||
| 195 | _______, _______, _______, _______, _______, | ||
| 196 | _______, _______, | ||
| 197 | _______, | ||
| 198 | _______, _______, _______, | ||
| 199 | //-- | ||
| 200 | _______, _______, _______, _______, _______, _______, _______, | ||
| 201 | _______, L05_RIGHT_01, _______, | ||
| 202 | L05_RIGHT_02, _______, | ||
| 203 | _______, L05_RIGHT_03, _______, | ||
| 204 | _______, _______, _______, _______, _______, | ||
| 205 | _______, _______, | ||
| 206 | _______, | ||
| 207 | _______, _______, _______ | ||
| 208 | ), | ||
| 209 | |||
| 210 | |||
| 211 | /* | ||
| 212 | L06 -> <TBD>: UNSPECIFIED | ||
| 213 | */ | ||
| 214 | |||
| 215 | |||
| 216 | /* LFN -> MO(FN): FUNCTION | ||
| 217 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 218 | * | RESET | | | | | | | | | | | | | | RESET | | ||
| 219 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 220 | * | | | | | | | BACKSPC| | ||
| 221 | * |--------+ | | | | +--------| | ||
| 222 | * | | L06_LEFT |------| |------| L06_RIGHT | INSERT | | ||
| 223 | * |--------+ | | | | +--------| | ||
| 224 | * | | | | | | | DELETE | | ||
| 225 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 226 | * | | | | | | | VOL+ | VOL- | MUTE | | | | ||
| 227 | * `----------------------------------' `----------------------------------' | ||
| 228 | * ,-------------. ,-------------. | ||
| 229 | * | | | | | | | ||
| 230 | * ,------|------|------| |------+------+------. | ||
| 231 | * | | | | | | | | | ||
| 232 | * | | |------| |------| | | | ||
| 233 | * | | | | | | | | | ||
| 234 | * `--------------------' `--------------------' | ||
| 235 | */ | ||
| 236 | [LFN] = LAYOUT_ergodox_wrapper( | ||
| 237 | RESET, _______, _______, _______, _______, _______, _______, | ||
| 238 | _______, L06_LEFT_01, _______, | ||
| 239 | _______, L06_LEFT_02, | ||
| 240 | _______, L06_LEFT_03, _______, | ||
| 241 | _______, _______, _______, _______, _______, | ||
| 242 | _______, _______, | ||
| 243 | _______, | ||
| 244 | _______, _______, _______, | ||
| 245 | //-- | ||
| 246 | _______, _______, _______, _______, _______, _______, RESET, | ||
| 247 | _______, L06_RIGHT_01, KC_BSPACE, | ||
| 248 | L06_RIGHT_02, KC_INSERT, | ||
| 249 | _______, L06_RIGHT_03, KC_DELETE, | ||
| 250 | KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, | ||
| 251 | _______, _______, | ||
| 252 | _______, | ||
| 253 | _______, _______, _______ | ||
| 254 | ) | ||
| 255 | |||
| 256 | }; | ||
| 257 | |||
| 258 | |||
| 259 | // Runs just one time when the keyboard initializes. | ||
| 260 | void matrix_init_user(void) { | ||
| 261 | set_unicode_input_mode(UC_LNX); | ||
| 262 | }; | ||
| 263 | |||
| 264 | |||
| 265 | LEADER_EXTERNS(); | ||
| 266 | |||
| 267 | // Runs constantly in the background, in a loop. | ||
| 268 | void matrix_scan_user(void) { | ||
| 269 | LEADER_DICTIONARY() { | ||
| 270 | leading = false; | ||
| 271 | leader_end(); | ||
| 272 | |||
| 273 | SEQ_ONE_KEY (KC_1) { | ||
| 274 | // ¯\_(ツ)_/¯ | ||
| 275 | unicode_input_start(); register_hex(0xaf); unicode_input_finish(); | ||
| 276 | register_code (KC_RALT); TAP_ONCE (KC_MINS); unregister_code (KC_RALT); | ||
| 277 | register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT); | ||
| 278 | unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); | ||
| 279 | register_code (KC_RSFT); TAP_ONCE (KC_9); TAP_ONCE(KC_7); unregister_code (KC_RSFT); | ||
| 280 | unicode_input_start (); register_hex(0xaf); unicode_input_finish(); | ||
| 281 | } | ||
| 282 | |||
| 283 | SEQ_ONE_KEY (KC_2) { | ||
| 284 | // 凸(ツ)凸 | ||
| 285 | unicode_input_start(); register_hex(0x51F8); unicode_input_finish(); | ||
| 286 | register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT); | ||
| 287 | unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); | ||
| 288 | register_code (KC_RSFT); TAP_ONCE (KC_9); unregister_code (KC_RSFT); | ||
| 289 | unicode_input_start (); register_hex(0x51F8); unicode_input_finish(); | ||
| 290 | } | ||
| 291 | } | ||
| 292 | } | ||
diff --git a/keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md b/keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md new file mode 100644 index 000000000..3fcb4edf0 --- /dev/null +++ b/keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | # not-quite-neo | ||
| 2 | |||
| 3 | This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support multiple keyboards. | ||
| 4 | |||
| 5 | Refer to the [readme.md](../../../../users/not-quite-neo/readme.md) of the generic parts of the implementation. \ No newline at end of file | ||
diff --git a/keyboards/ergodox_infinity/keymaps/not-quite-neo/rules.mk b/keyboards/ergodox_infinity/keymaps/not-quite-neo/rules.mk new file mode 100644 index 000000000..75624bb8c --- /dev/null +++ b/keyboards/ergodox_infinity/keymaps/not-quite-neo/rules.mk | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | BACKLIGHT_ENABLE = yes | ||
| 2 | UNICODE_ENABLE = yes \ No newline at end of file | ||
diff --git a/keyboards/planck/keymaps/not-quite-neo/config.h b/keyboards/planck/keymaps/not-quite-neo/config.h new file mode 100644 index 000000000..7fa3bf328 --- /dev/null +++ b/keyboards/planck/keymaps/not-quite-neo/config.h | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | #ifndef CONFIG_USER_H | ||
| 2 | #define CONFIG_USER_H | ||
| 3 | |||
| 4 | #include "../../config.h" | ||
| 5 | |||
| 6 | #endif | ||
diff --git a/keyboards/planck/keymaps/not-quite-neo/keymap.c b/keyboards/planck/keymaps/not-quite-neo/keymap.c new file mode 100644 index 000000000..8ea7679e3 --- /dev/null +++ b/keyboards/planck/keymaps/not-quite-neo/keymap.c | |||
| @@ -0,0 +1,129 @@ | |||
| 1 | /* | ||
| 2 | NQN is not-quite-neo | ||
| 3 | A layout based on the | ||
| 4 | */ | ||
| 5 | |||
| 6 | |||
| 7 | #include "planck.h" | ||
| 8 | #include "nqn-keys-on-quertz-de-latin1.h" | ||
| 9 | #include "nqn-basic-layout.h" | ||
| 10 | |||
| 11 | |||
| 12 | // Automatic number generation of important keywords | ||
| 13 | enum my_keycodes{ | ||
| 14 | // Layer numbers follow the neo2 terminology, i.e. base layer = layer 1 | ||
| 15 | L01 = 0, | ||
| 16 | /* L02, SHIFT is not (yet) implemented as a fully customizable layer */ | ||
| 17 | L03, | ||
| 18 | L04, | ||
| 19 | L05, | ||
| 20 | /* L06, UNSPECIFIED not (yet) needed */ | ||
| 21 | LFN | ||
| 22 | }; | ||
| 23 | |||
| 24 | |||
| 25 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 26 | /* L01 -> default: BASE LAYER | ||
| 27 | * ,-----------------------------------------------------------------------------------. | ||
| 28 | * | ESC | | | ENTER| | ||
| 29 | * |------+ | +------| | ||
| 30 | * | L03 | L01_LEFT | L01_RIGHT | L03 | | ||
| 31 | * |------+ | +------| | ||
| 32 | * | SHIFT| | | SHIFT| | ||
| 33 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 34 | * | CTLR | GUI | ALT | L05 | L04 | SPACE| SPACE| L04 | L05 | ALTGR| LFN | CTLR | | ||
| 35 | * `-----------------------------------------------------------------------------------' | ||
| 36 | */ | ||
| 37 | [L01] = { | ||
| 38 | {KC_ESC, L01_LEFT_01, L01_RIGHT_01, KC_ENTER}, | ||
| 39 | {MO(L03), L01_LEFT_02, L01_RIGHT_02, MO(L03)}, | ||
| 40 | {KC_LSHIFT, L01_LEFT_03, L01_RIGHT_03, KC_RSFT}, | ||
| 41 | {KC_LCTRL,KC_LGUI, KC_LALT, MO(L05), MO(L04), KC_SPC, KC_SPC, MO(L04), MO(L05), KC_RALT, MO(LFN), KC_RCTRL} | ||
| 42 | }, | ||
| 43 | |||
| 44 | |||
| 45 | /* | ||
| 46 | L02 -> MO(L02): SHIFT (as a layer not used, not defined, not reachable) | ||
| 47 | */ | ||
| 48 | |||
| 49 | |||
| 50 | /* L03 -> MO(L03): PROGRAMMING | ||
| 51 | * ,-----------------------------------------------------------------------------------. | ||
| 52 | * | | | | | | ||
| 53 | * |------+ | +------| | ||
| 54 | * | | L03_LEFT | L03_RIGHT | | | ||
| 55 | * |------+ | +------| | ||
| 56 | * | | | | | | ||
| 57 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 58 | * | | | | | | | | | | | | | | ||
| 59 | * `-----------------------------------------------------------------------------------' | ||
| 60 | */ | ||
| 61 | [L03] = { | ||
| 62 | {_______, L03_LEFT_01, L03_RIGHT_01, _______}, | ||
| 63 | {_______, L03_LEFT_02, L03_RIGHT_02, _______}, | ||
| 64 | {_______, L03_LEFT_03, L03_RIGHT_03, _______}, | ||
| 65 | {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||
| 66 | }, | ||
| 67 | |||
| 68 | |||
| 69 | /* L04 -> MO(L04): NAVIGATION AND NUMBERS | ||
| 70 | * ,-----------------------------------------------------------------------------------. | ||
| 71 | * | | | | | | ||
| 72 | * |------+ | +------| | ||
| 73 | * | | L04_LEFT | L04_RIGHT | | | ||
| 74 | * |------+ | +------| | ||
| 75 | * | | | | | | ||
| 76 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 77 | * | | | | | | | 0 | | | | | | | ||
| 78 | * `-----------------------------------------------------------------------------------' | ||
| 79 | */ | ||
| 80 | [L04] = { | ||
| 81 | {_______, L04_LEFT_01, L04_RIGHT_01, _______}, | ||
| 82 | {_______, L04_LEFT_02, L04_RIGHT_02, _______}, | ||
| 83 | {_______, L04_LEFT_03, L04_RIGHT_03, _______}, | ||
| 84 | {_______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______, _______} | ||
| 85 | }, | ||
| 86 | |||
| 87 | |||
| 88 | /* L05 -> MO(L05): ALTERNATE | ||
| 89 | * ,-----------------------------------------------------------------------------------. | ||
| 90 | * | | | | | | ||
| 91 | * |------+ | +------| | ||
| 92 | * | | L05_LEFT | L05_RIGHT | | | ||
| 93 | * |------+ | +------| | ||
| 94 | * | | | | | | ||
| 95 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 96 | * | | | | | | | | | | | | | | ||
| 97 | * `-----------------------------------------------------------------------------------' | ||
| 98 | */ | ||
| 99 | [L05] = { | ||
| 100 | {_______, L05_LEFT_01, L05_RIGHT_01, _______}, | ||
| 101 | {_______, L05_LEFT_02, L05_RIGHT_02, _______}, | ||
| 102 | {_______, L05_LEFT_03, L05_RIGHT_03, _______}, | ||
| 103 | {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||
| 104 | }, | ||
| 105 | |||
| 106 | |||
| 107 | /* | ||
| 108 | L06 -> <TBD>: UNSPECIFIED | ||
| 109 | */ | ||
| 110 | |||
| 111 | |||
| 112 | /* LFN -> MO(FN): FUNCTION | ||
| 113 | * ,-----------------------------------------------------------------------------------. | ||
| 114 | * | RESET| | | BACKS| | ||
| 115 | * |------+ | +------| | ||
| 116 | * | | L06_LEFT | L06_RIGHT |INSERT| | ||
| 117 | * |------+ | +------| | ||
| 118 | * | | | |DELETE| | ||
| 119 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 120 | * |VOICE-|VOICE+|MUS ON|MUS OF| LIGHT| | | VOL+ | VOL- | MUTE | | | | ||
| 121 | * `-----------------------------------------------------------------------------------' | ||
| 122 | */ | ||
| 123 | [LFN] = { | ||
| 124 | {RESET, L06_LEFT_01, L06_RIGHT_01, KC_BSPC}, | ||
| 125 | {_______, L06_LEFT_02, L06_RIGHT_02, KC_INS}, | ||
| 126 | {_______, L06_LEFT_03, L06_RIGHT_03, KC_DEL}, | ||
| 127 | {MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______} | ||
| 128 | } | ||
| 129 | }; | ||
diff --git a/keyboards/planck/keymaps/not-quite-neo/readme.md b/keyboards/planck/keymaps/not-quite-neo/readme.md new file mode 100644 index 000000000..3fcb4edf0 --- /dev/null +++ b/keyboards/planck/keymaps/not-quite-neo/readme.md | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | # not-quite-neo | ||
| 2 | |||
| 3 | This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support multiple keyboards. | ||
| 4 | |||
| 5 | Refer to the [readme.md](../../../../users/not-quite-neo/readme.md) of the generic parts of the implementation. \ No newline at end of file | ||
diff --git a/keyboards/planck/keymaps/not-quite-neo/rules.mk b/keyboards/planck/keymaps/not-quite-neo/rules.mk new file mode 100644 index 000000000..316a3ea7b --- /dev/null +++ b/keyboards/planck/keymaps/not-quite-neo/rules.mk | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | # Based on Zach's Planck Makefile | ||
| 2 | # Max .hex size is about 28636 bytes | ||
| 3 | |||
| 4 | # Build Options | ||
| 5 | # change to "no" to disable the options, or define them in the Makefile in | ||
| 6 | # the appropriate keymap folder that will get included automatically | ||
| 7 | # | ||
| 8 | TAP_DANCE_ENABLE = no # Enable TapDance functionality | ||
| 9 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | ||
| 10 | MOUSEKEY_ENABLE = no # Mouse keys(+4700) | ||
| 11 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
| 12 | CONSOLE_ENABLE = no # Console for debug(+400) | ||
| 13 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
| 14 | NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
| 15 | USB_6KRO_ENABLE = no # 6key Rollover | ||
| 16 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
| 17 | MIDI_ENABLE = no # MIDI controls | ||
| 18 | AUDIO_ENABLE = no # Audio output on port C6 | ||
| 19 | #VARIABLE_TRACE = no # Debug changes to variable values | ||
| 20 | UNICODE_ENABLE = no # Unicode (can't be used with unicodemap) | ||
| 21 | UNICODEMAP_ENABLE = no # Enable extended unicode | ||
| 22 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | ||
| 23 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. | ||
| 24 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | ||
| 25 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | ||
| 26 | |||
| 27 | ifndef QUANTUM_DIR | ||
| 28 | include ../../../../Makefile | ||
| 29 | endif | ||
diff --git a/users/not-quite-neo/nqn-basic-layout.h b/users/not-quite-neo/nqn-basic-layout.h new file mode 100644 index 000000000..d1b9a1c47 --- /dev/null +++ b/users/not-quite-neo/nqn-basic-layout.h | |||
| @@ -0,0 +1,124 @@ | |||
| 1 | #ifndef NQN_BASIC_LAYOUT_H | ||
| 2 | #define NQN_BASIC_LAYOUT_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | This is the basic NQN layout | ||
| 6 | |||
| 7 | It consists of a block of 5x3, 5x4, 6x3, or 6x4 for each hand. This allows us | ||
| 8 | to use these blocks for a variety of keyboards like the planck, preonic and | ||
| 9 | even splits like the ergodox. | ||
| 10 | |||
| 11 | You can see that we use some quirky preprocessor defines to achive what we | ||
| 12 | desire. In the future I would like to see qmk taking a more generic approach | ||
| 13 | like the KLL. | ||
| 14 | |||
| 15 | The naming convention for these blocks is | ||
| 16 | L<LAYER>_<SIDE>_<ROW> | ||
| 17 | |||
| 18 | The LAYER is a number following the neo2 manner starting at 1 for the base | ||
| 19 | layer, 2 is shift, 3 is for special chars etc. | ||
| 20 | |||
| 21 | SIDE is, well either the left or right side/half of a keyboard. | ||
| 22 | |||
| 23 | The ROW is starting from the top, numbering beginning at 1. | ||
| 24 | */ | ||
| 25 | |||
| 26 | |||
| 27 | #include "nqn-common.h" | ||
| 28 | |||
| 29 | |||
| 30 | /* | ||
| 31 | * | ||
| 32 | * LEFT RIGHT | ||
| 33 | * ,----------------------------------. ,----------------------------------. | ||
| 34 | * 01 | x | v | l | c | w | | k | h | g | f | q | | ||
| 35 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 36 | * 02 | u | i | a | e | o | | s | n | r | t | d | | ||
| 37 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 38 | * 03 | y | < | # | p | z | | b | m | , | . | j | | ||
| 39 | * `----------------------------------' `----------------------------------' | ||
| 40 | */ | ||
| 41 | #define L01_LEFT_01 KC_X, KC_V, KC_L, KC_C, KC_W | ||
| 42 | #define L01_LEFT_02 KC_U, KC_I, KC_A, KC_E, KC_O | ||
| 43 | #define L01_LEFT_03 N_Y, N_LT, N_HS, KC_P, N_Z | ||
| 44 | #define L01_RIGHT_02 KC_S, KC_N, KC_R, KC_T, KC_D | ||
| 45 | #define L01_RIGHT_01 KC_K, KC_H, KC_G, KC_F, KC_Q | ||
| 46 | #define L01_RIGHT_03 KC_B, KC_M, KC_COMM, KC_DOT, KC_J | ||
| 47 | |||
| 48 | |||
| 49 | /* | ||
| 50 | * | ||
| 51 | * LEFT RIGHT | ||
| 52 | * ,----------------------------------. ,----------------------------------. | ||
| 53 | * 01 | … | _ | [ | ] | ^ | | ! | < | > | = | & | | ||
| 54 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 55 | * 02 | \ | / | { | } | * | | ? | ( | ) | - | @ | | ||
| 56 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 57 | * 03 | # | $ | | | ~ | ` | | + | % | " | ' | ° | | ||
| 58 | * `----------------------------------' `----------------------------------' | ||
| 59 | */ | ||
| 60 | #define L03_LEFT_01 N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC | ||
| 61 | #define L03_LEFT_02 N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR | ||
| 62 | #define L03_LEFT_03 N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE | ||
| 63 | #define L03_RIGHT_01 N_EXKL, N_LT, N_GT, N_EQ, N_AMP | ||
| 64 | #define L03_RIGHT_02 N_QUES, N_LPARN, N_RPARN, N_MINS, N_AT | ||
| 65 | #define L03_RIGHT_03 N_PLUS, N_PERC, N_QUOT, N_SING, N_DEGRE | ||
| 66 | |||
| 67 | |||
| 68 | /* | ||
| 69 | * | ||
| 70 | * LEFT RIGHT | ||
| 71 | * ,----------------------------------. ,----------------------------------. | ||
| 72 | * 01 | PAGEU| BACKS| UP | DELET| PAGED| | / | 7 | 8 | 9 | - | | ||
| 73 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 74 | * 02 | HOME | LEFT | DOWN | RIGHT| END | | * | 4 | 5 | 6 | + | | ||
| 75 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 76 | * 03 | ESC | TAB | INSRT| ENTER| UNDO | | ENTER| 1 | 2 | 3 | , | | ||
| 77 | * `----------------------------------' `----------------------------------' | ||
| 78 | */ | ||
| 79 | #define L04_LEFT_01 KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN | ||
| 80 | #define L04_LEFT_02 KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END | ||
| 81 | #define L04_LEFT_03 KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO | ||
| 82 | #define L04_RIGHT_01 KC_KP_SLASH, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS | ||
| 83 | #define L04_RIGHT_02 KC_KP_ASTERISK, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS | ||
| 84 | #define L04_RIGHT_03 KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT | ||
| 85 | |||
| 86 | |||
| 87 | /* | ||
| 88 | * LEFT RIGHT | ||
| 89 | * ,----------------------------------. ,----------------------------------. | ||
| 90 | * 01 | | | | | | | | | | | | | ||
| 91 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 92 | * 02 | ü | | ä | € | ö | | ß | | | | | | ||
| 93 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 94 | * 03 | | | | | | | | µ | | | | | ||
| 95 | * `----------------------------------' `----------------------------------' | ||
| 96 | */ | ||
| 97 | #define L05_LEFT_01 _______, _______, _______, _______, _______ | ||
| 98 | #define L05_LEFT_02 N_UE, _______, N_AE, N_EURO, N_OE | ||
| 99 | #define L05_LEFT_03 _______, _______, _______, _______, _______ | ||
| 100 | #define L05_RIGHT_01 _______, _______, _______, _______, _______ | ||
| 101 | #define L05_RIGHT_02 N_SS, _______, _______, _______, _______ | ||
| 102 | #define L05_RIGHT_03 _______, N_MU, _______, _______, _______ | ||
| 103 | |||
| 104 | |||
| 105 | /* | ||
| 106 | * | ||
| 107 | * LEFT RIGHT | ||
| 108 | * ,----------------------------------. ,----------------------------------. | ||
| 109 | * 01 | F1 | F2 | F3 | F4 | | | MAIL | MUSIC| FILES| CALC | PASTE| | ||
| 110 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 111 | * 02 | F5 | F6 | F7 | F8 | | | PREV |PLAY/P| NEXT | STOP | COPY | | ||
| 112 | * |------+------+------+------+------| |------+------+------+------+------| | ||
| 113 | * 03 | F9 | F10 | F11 | F12 | | | PRINT| SCROL| PAUSE| NUMLK| CUT | | ||
| 114 | * `----------------------------------' `----------------------------------' | ||
| 115 | */ | ||
| 116 | #define L06_LEFT_01 KC_F1, KC_F2, KC_F3, KC_F4, _______ | ||
| 117 | #define L06_LEFT_02 KC_F5, KC_F6, KC_F7, KC_F8, _______ | ||
| 118 | #define L06_LEFT_03 KC_F9, KC_F10, KC_F11, KC_F12, _______ | ||
| 119 | #define L06_RIGHT_01 KC_MAIL, KC_MSEL, KC_MY_COMPUTER, KC_CALCULATOR, N_PASTE | ||
| 120 | #define L06_RIGHT_02 KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, N_COPY | ||
| 121 | #define L06_RIGHT_03 KC_PSCR, KC_SLCK, KC_PAUS, KC_NLCK, N_CUT | ||
| 122 | |||
| 123 | |||
| 124 | #endif | ||
diff --git a/users/not-quite-neo/nqn-common.h b/users/not-quite-neo/nqn-common.h new file mode 100644 index 000000000..a04dc7a18 --- /dev/null +++ b/users/not-quite-neo/nqn-common.h | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | #ifndef NQN_COMMON_H | ||
| 2 | #define NQN_COMMON_H | ||
| 3 | |||
| 4 | |||
| 5 | /* | ||
| 6 | This file holds some commen NQN definitions | ||
| 7 | */ | ||
| 8 | |||
| 9 | |||
| 10 | #define _______ KC_TRNS | ||
| 11 | #define XXXXXXX KC_NO | ||
| 12 | |||
| 13 | |||
| 14 | #endif | ||
diff --git a/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h b/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h new file mode 100644 index 000000000..8276cf207 --- /dev/null +++ b/users/not-quite-neo/nqn-keys-on-quertz-de-latin1.h | |||
| @@ -0,0 +1,73 @@ | |||
| 1 | #ifndef NQN_KEYS_ON_QUERTZ_DE_LATIN1_H | ||
| 2 | #define NQN_KEYS_ON_QUERTZ_DE_LATIN1_H | ||
| 3 | |||
| 4 | |||
| 5 | /* | ||
| 6 | This file defines the desierd NQN keys if you use a software (operating sysetm) | ||
| 7 | configured for a QUERTZ layout (de-latin1). | ||
| 8 | |||
| 9 | These chars can be created by using ALTGR on linux and a few of them on windows | ||
| 10 | with a German de-latin1 layout (depending on desktop environment and/or | ||
| 11 | application). | ||
| 12 | ′¹²³¼½¬{[]}\¸ | ||
| 13 | @ł€¶ŧ←↓→øþ¨~ | ||
| 14 | æſðđŋħ̣ĸł˝^’ | ||
| 15 | |»«¢„“”µ·…– | ||
| 16 | |||
| 17 | Additionally, there are some common chars that we dit not yet define: | ||
| 18 | § | ||
| 19 | */ | ||
| 20 | |||
| 21 | |||
| 22 | #include "nqn-common.h" | ||
| 23 | |||
| 24 | |||
| 25 | // NQN key definitions in no particular order | ||
| 26 | #define N_LT KC_NONUS_BSLASH | ||
| 27 | #define N_HS KC_NONUS_HASH | ||
| 28 | #define N_DOTS RALT(KC_DOT) // … | ||
| 29 | #define N_USC LSFT(KC_SLASH) // _ | ||
| 30 | #define N_LSQBR RALT(KC_8) // [ | ||
| 31 | #define N_RSQBR RALT(KC_9) // ] | ||
| 32 | #define N_CIRC KC_GRAVE // ^ | ||
| 33 | #define N_EXKL LSFT(KC_1) // ! | ||
| 34 | #define N_GT LSFT(KC_NONUS_BSLASH) // > | ||
| 35 | #define N_EQ LSFT(KC_0) // = | ||
| 36 | #define N_AMP LSFT(KC_6) // & | ||
| 37 | #define N_BSLS RALT(KC_MINS) // \ backslash | ||
| 38 | #define N_SLSH LSFT(KC_7) // / | ||
| 39 | #define N_LCUBR RALT(KC_7) // { | ||
| 40 | #define N_RCUBR RALT(KC_0) // } | ||
| 41 | #define N_ASTR LSFT(KC_RBRC) // * | ||
| 42 | #define N_QUES LSFT(KC_MINS) // ? | ||
| 43 | #define N_LPARN LSFT(KC_8) // ( | ||
| 44 | #define N_RPARN LSFT(KC_9) // ) | ||
| 45 | #define N_MINS KC_SLASH // - | ||
| 46 | #define N_COLN LSFT(KC_DOT) // : | ||
| 47 | #define N_HASH KC_BSLASH // # | ||
| 48 | #define N_DLR LSFT(KC_4) // $ | ||
| 49 | #define N_PIPE RALT(KC_NONUS_BSLASH) // | | ||
| 50 | #define N_TILD RALT(KC_RBRC) // ~ | ||
| 51 | #define N_GRAVE LSFT(KC_EQUAL) // ` | ||
| 52 | #define N_PLUS KC_RBRC // + | ||
| 53 | #define N_PERC LSFT(KC_5) // % | ||
| 54 | #define N_QUOT LSFT(KC_2) // " | ||
| 55 | #define N_SING LSFT(KC_BSLASH) // ' | ||
| 56 | #define N_SEMI LSFT(KC_COMM) // ; | ||
| 57 | #define N_EURO RALT(KC_E) // € | ||
| 58 | #define N_AT RALT(KC_Q) // @ | ||
| 59 | #define N_Z KC_Y | ||
| 60 | #define N_Y KC_Z | ||
| 61 | #define N_AE KC_QUOTE // ä | ||
| 62 | #define N_OE KC_SCOLON // ö | ||
| 63 | #define N_UE KC_LBRACKET // ü | ||
| 64 | #define N_MU RALT(KC_M) // µ | ||
| 65 | #define N_SS KC_MINS // ß | ||
| 66 | #define N_DEGRE LSFT(KC_GRAVE) // ° | ||
| 67 | #define N_PASTE LCTL(KC_V) // CTRL+V | ||
| 68 | #define N_COPY LCTL(KC_C) // CTRL+C | ||
| 69 | #define N_CUT LCTL(KC_X) // CTRL+X | ||
| 70 | #define N_UNDO LCTL(N_Z) // CTRL+Z | ||
| 71 | |||
| 72 | |||
| 73 | #endif | ||
diff --git a/users/not-quite-neo/readme.md b/users/not-quite-neo/readme.md new file mode 100644 index 000000000..85a29ecc6 --- /dev/null +++ b/users/not-quite-neo/readme.md | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | # not-quite-neo | ||
| 2 | |||
| 3 | This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support both a ergodox (infinity) and a planck keyboard. Some sacrifices needed to be made, hence this layout is not-quite-neo. | ||
| 4 | |||
| 5 | ## Use case | ||
| 6 | My use case is simple: | ||
| 7 | |||
| 8 | * I want to use neo2 (or a keymap as close as possible) on any computer I can plug my keyboards in. Because installing the neo2 SW driver is often not a acceptable solution. | ||
| 9 | * Since most computers I work on (colleagues, family, etc.) use a de-DE keymap, I can not use the official neo2 implementation, because it relies on a us layout and I often times do not even posses the administration rights to change that. | ||
| 10 | * neo2 makes use of most of the keys of a standard 104 key keyboard, especially for supporting the planck I needed to deviate from the original neo2 layout in order to fit everything I wanted. | ||
| 11 | |||
| 12 | Therefore, I put all reusable code in the users/not-quite-neo directory and created a custom not-quite-neo keymap for the planck and the ergodox infinity keyboard respectively. | ||
| 13 | |||
| 14 | ## Pitfalls | ||
| 15 | Mind, since neo2 is a SW driver supported layout it offers a lot of features that are hard to support in hardware (especially the fancy utf stuff with math symbols and greek letters etc.). | ||
| 16 | |||
| 17 | Right now this implementation only incompletely supports neo2 layers 1 to 4. | ||
| 18 | |||
| 19 | The biggest difference is probably the support for the German Umlauts ä, ö, ü and the ß. Since we rely on a smaller number of keys some glyphs needed to be created otherwise. See the implementation in [nqn-basic-layout.h](nqn-basic-layout.h) for details. | ||
| 20 | |||
| 21 | ## Keyboards and keymaps | ||
| 22 | |||
| 23 | You can find the *not-quite-neo* keymap for the ergodox infinity under [qmk_firmware/keyboards/ergodox_infinity/keymaps/not-quite-neo/](../../keyboards/ergodox_infinity/keymaps/not-quite-neo/readme.md). Respectively the keymap for the planck resides in [qmk_firmware/keyboards/planck/keymaps/not-quite-neo/](../../keyboards/planck/keymaps/not-quite-neo/readme.md) | ||
| 24 | . \ No newline at end of file | ||
