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 documentationpull/2330/head
							parent
							
								
									2917e55bd4
								
							
						
					
					
						commit
						2cf6bfe9ac
					
				| @ -0,0 +1,292 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | NQN is not-quite-neo | ||||||
|  | A layout based on neo2 | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #include "action_layer.h" | ||||||
|  | #include "version.h" | ||||||
|  | 
 | ||||||
|  | #include "nqn-keys-on-quertz-de-latin1.h" | ||||||
|  | #include "nqn-basic-layout.h" | ||||||
|  | 
 | ||||||
|  | // Since our quirky block definitions are basically a list of comma separated 
 | ||||||
|  | // arguments, we need a wrapper in order for these definitions to be 
 | ||||||
|  | // expanded before being used as arguments to the LAYOUT_xxx macro.
 | ||||||
|  | #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) | ||||||
|  | 
 | ||||||
|  | #ifdef LEADER_TIMEOUT | ||||||
|  | #undef LEADER_TIMEOUT | ||||||
|  | #endif | ||||||
|  | #define LEADER_TIMEOUT 300 | ||||||
|  | 
 | ||||||
|  | #define TAP_ONCE(code)  \ | ||||||
|  |   register_code (code); \ | ||||||
|  |   unregister_code (code) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // Automatic number generation of important keywords
 | ||||||
|  | enum my_keycodes{ | ||||||
|  |     // Layer numbers follow the neo2 terminology, i.e. base layer = layer 1
 | ||||||
|  |     L01 = 0, | ||||||
|  |     /* L02, SHIFT is not (yet) implemented as a fully customizable layer */ | ||||||
|  |     L03, | ||||||
|  |     L04, | ||||||
|  |     L05, | ||||||
|  |     /* L06, UNSPECIFIED not (yet) needed */ | ||||||
|  |     LFN | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  | /* L01 -> default: BASE LAYER
 | ||||||
|  |  * ,--------------------------------------------------.           ,--------------------------------------------------. | ||||||
|  |  * | TAB    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  | BACKSP | | ||||||
|  |  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| | ||||||
|  |  * | ESC    |                                  | LEADR|           | LEADR|                                  | ENTER  | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * | L03    |             L01_LEFT             |------|           |------|             L01_RIGHT            | L03    | | ||||||
|  |  * |--------+                                  | LFN  |           | LFN  |                                  +--------| | ||||||
|  |  * | SHIFT  |                                  |      |           |      |                                  | SHIFT  | | ||||||
|  |  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' | ||||||
|  |  *   | CTRL | GUI  | ALT  | L05  | L04  |                                       | L04  | L05  | ALTGR| LFN  | CTRL | | ||||||
|  |  *   `----------------------------------'                                       `----------------------------------' | ||||||
|  |  *                                        ,-------------.       ,-------------. | ||||||
|  |  *                                        | HOME | END  |       | LEFT | RIGHT| | ||||||
|  |  *                                 ,------|------|------|       |------+------+------. | ||||||
|  |  *                                 |      |      | PGUP |       | UP   |      |      | | ||||||
|  |  *                                 | SPACE| SHIFT|------|       |------| SHIFT| SPACE| | ||||||
|  |  *                                 |      |      | PGDN |       | DOWN |      |      | | ||||||
|  |  *                                 `--------------------'       `--------------------' | ||||||
|  |  */ | ||||||
|  | [L01] = LAYOUT_ergodox_wrapper( | ||||||
|  |   KC_TAB,  KC_1,   KC_2,    KC_3,    KC_4,    KC_5,    XXXXXXX, | ||||||
|  |   KC_ESC,                 L01_LEFT_01,                 KC_LEAD, | ||||||
|  |   MO(L03),                L01_LEFT_02, | ||||||
|  |   KC_LSHIFT,              L01_LEFT_03,                 MO(LFN), | ||||||
|  |   KC_LCTRL,KC_LGUI,KC_LALT, MO(L05), MO(L04), | ||||||
|  |                                               XXXXXXX, XXXXXXX, | ||||||
|  |                                                        KC_PGUP, | ||||||
|  |                                      KC_SPACE,KC_LSHIFT,KC_PGDN, | ||||||
|  |   //--
 | ||||||
|  |   XXXXXXX,  KC_6,   KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPACE, | ||||||
|  |   KC_LEAD,                L01_RIGHT_01,                 KC_ENTER, | ||||||
|  |                           L01_RIGHT_02,                 MO(L03), | ||||||
|  |   MO(LFN),                L01_RIGHT_03,                 KC_RSHIFT, | ||||||
|  |                     MO(L04), MO(L05), KC_RALT, MO(LFN), KC_RCTRL, | ||||||
|  |   KC_LEFT, KC_RIGHT, | ||||||
|  |   KC_UP, | ||||||
|  |   KC_DOWN, KC_RSHIFT, KC_SPACE | ||||||
|  | ), | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | L02 -> MO(L02): SHIFT (as a layer not used, not defined, not reachable) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* L03 -> MO(L03): PROGRAMMING
 | ||||||
|  |  * ,--------------------------------------------------.           ,--------------------------------------------------. | ||||||
|  |  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        | | ||||||
|  |  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  |        | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |             L03_LEFT             |------|           |------|             L03_RIGHT            |        | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  |        | | ||||||
|  |  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' | ||||||
|  |  *   |      |      |      |      |      |                                       |      |      |      |      |      | | ||||||
|  |  *   `----------------------------------'                                       `----------------------------------' | ||||||
|  |  *                                        ,-------------.       ,-------------. | ||||||
|  |  *                                        |      |      |       |      |      | | ||||||
|  |  *                                 ,------|------|------|       |------+------+------. | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 |      |      |------|       |------|      |      | | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 `--------------------'       `--------------------' | ||||||
|  |  */ | ||||||
|  | [L03] = LAYOUT_ergodox_wrapper( | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L03_LEFT_01,                 _______, | ||||||
|  |   _______,                 L03_LEFT_02, | ||||||
|  |   _______,                 L03_LEFT_03,                 _______, | ||||||
|  |   _______, _______, _______, _______, _______, | ||||||
|  |                                                _______, _______, | ||||||
|  |                                                         _______, | ||||||
|  |                                       _______, _______, _______, | ||||||
|  |   //--
 | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L03_RIGHT_01,                _______, | ||||||
|  |                            L03_RIGHT_02,                _______, | ||||||
|  |   _______,                 L03_RIGHT_03,                _______, | ||||||
|  |                     _______, _______, _______, _______, _______, | ||||||
|  |   _______, _______, | ||||||
|  |   _______, | ||||||
|  |   _______, _______, _______ | ||||||
|  | ), | ||||||
|  | 
 | ||||||
|  | /* L04 -> MO(L04): NAVIGATION AND NUMBERS
 | ||||||
|  |  * ,--------------------------------------------------.           ,--------------------------------------------------. | ||||||
|  |  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        | | ||||||
|  |  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  |        | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |             L04_LEFT             |------|           |------|             L04_RIGHT            |        | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  |        | | ||||||
|  |  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' | ||||||
|  |  *   |      |      |      |      |      |                                       |      |      |      |      |      | | ||||||
|  |  *   `----------------------------------'                                       `----------------------------------' | ||||||
|  |  *                                        ,-------------.       ,-------------. | ||||||
|  |  *                                        |      |      |       |      |      | | ||||||
|  |  *                                 ,------|------|------|       |------+------+------. | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 | 0    |      |------|       |------|      | 0    | | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 `--------------------'       `--------------------' | ||||||
|  |  */ | ||||||
|  | [L04] = LAYOUT_ergodox_wrapper( | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L04_LEFT_01,                 _______, | ||||||
|  |   _______,                 L04_LEFT_02, | ||||||
|  |   _______,                 L04_LEFT_03,                 _______, | ||||||
|  |   _______, _______, _______, _______, _______, | ||||||
|  |                                                _______, _______, | ||||||
|  |                                                         _______, | ||||||
|  |                                       KC_0,    _______, _______, | ||||||
|  |   //--
 | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L04_RIGHT_01,                _______, | ||||||
|  |                            L04_RIGHT_02,                _______, | ||||||
|  |   _______,                 L04_RIGHT_03,                _______, | ||||||
|  |                     _______, _______, _______, _______, _______, | ||||||
|  |   _______, _______, | ||||||
|  |   _______, | ||||||
|  |   _______, _______, KC_0 | ||||||
|  | ), | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* L05 -> MO(L05): ALTERNATE
 | ||||||
|  |  * ,--------------------------------------------------.           ,--------------------------------------------------. | ||||||
|  |  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        | | ||||||
|  |  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  |        | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |             L05_LEFT             |------|           |------|             L05_RIGHT            |        | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  |        | | ||||||
|  |  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' | ||||||
|  |  *   |      |      |      |      |      |                                       |      |      |      |      |      | | ||||||
|  |  *   `----------------------------------'                                       `----------------------------------' | ||||||
|  |  *                                        ,-------------.       ,-------------. | ||||||
|  |  *                                        |      |      |       |      |      | | ||||||
|  |  *                                 ,------|------|------|       |------+------+------. | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 |      |      |------|       |------|      |      | | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 `--------------------'       `--------------------' | ||||||
|  |  */ | ||||||
|  | [L05] = LAYOUT_ergodox_wrapper( | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L05_LEFT_01,                 _______, | ||||||
|  |   _______,                 L05_LEFT_02, | ||||||
|  |   _______,                 L05_LEFT_03,                 _______, | ||||||
|  |   _______, _______, _______, _______, _______, | ||||||
|  |                                                _______, _______, | ||||||
|  |                                                         _______, | ||||||
|  |                                       _______, _______, _______, | ||||||
|  |   //--
 | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L05_RIGHT_01,                _______, | ||||||
|  |                            L05_RIGHT_02,                _______, | ||||||
|  |   _______,                 L05_RIGHT_03,                _______, | ||||||
|  |                     _______, _______, _______, _______, _______, | ||||||
|  |   _______, _______, | ||||||
|  |   _______, | ||||||
|  |   _______, _______, _______ | ||||||
|  | ), | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | L06 -> <TBD>: UNSPECIFIED | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* LFN -> MO(FN): FUNCTION
 | ||||||
|  |  * ,--------------------------------------------------.           ,--------------------------------------------------. | ||||||
|  |  * | RESET  |      |      |      |      |      |      |           |      |      |      |      |      |      | RESET  | | ||||||
|  |  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  | BACKSPC| | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |             L06_LEFT             |------|           |------|             L06_RIGHT            | INSERT | | ||||||
|  |  * |--------+                                  |      |           |      |                                  +--------| | ||||||
|  |  * |        |                                  |      |           |      |                                  | DELETE | | ||||||
|  |  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' | ||||||
|  |  *   |      |      |      |      |      |                                       | VOL+ | VOL- | MUTE |      |      | | ||||||
|  |  *   `----------------------------------'                                       `----------------------------------' | ||||||
|  |  *                                        ,-------------.       ,-------------. | ||||||
|  |  *                                        |      |      |       |      |      | | ||||||
|  |  *                                 ,------|------|------|       |------+------+------. | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 |      |      |------|       |------|      |      | | ||||||
|  |  *                                 |      |      |      |       |      |      |      | | ||||||
|  |  *                                 `--------------------'       `--------------------' | ||||||
|  |  */ | ||||||
|  | [LFN] = LAYOUT_ergodox_wrapper( | ||||||
|  |   RESET,   _______, _______, _______, _______, _______, _______, | ||||||
|  |   _______,                 L06_LEFT_01,                 _______, | ||||||
|  |   _______,                 L06_LEFT_02, | ||||||
|  |   _______,                 L06_LEFT_03,                 _______, | ||||||
|  |   _______, _______, _______, _______, _______, | ||||||
|  |                                                _______, _______, | ||||||
|  |                                                         _______, | ||||||
|  |                                       _______, _______, _______, | ||||||
|  |   //--
 | ||||||
|  |   _______, _______, _______, _______, _______, _______, RESET, | ||||||
|  |   _______,                 L06_RIGHT_01,                KC_BSPACE, | ||||||
|  |                            L06_RIGHT_02,                KC_INSERT, | ||||||
|  |   _______,                 L06_RIGHT_03,                KC_DELETE, | ||||||
|  |                     KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, | ||||||
|  |   _______, _______, | ||||||
|  |   _______, | ||||||
|  |   _______, _______, _______ | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // Runs just one time when the keyboard initializes.
 | ||||||
|  | void matrix_init_user(void) { | ||||||
|  |   set_unicode_input_mode(UC_LNX); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | LEADER_EXTERNS(); | ||||||
|  | 
 | ||||||
|  | // Runs constantly in the background, in a loop.
 | ||||||
|  | void matrix_scan_user(void) { | ||||||
|  |   LEADER_DICTIONARY() { | ||||||
|  |     leading = false; | ||||||
|  |     leader_end(); | ||||||
|  | 
 | ||||||
|  |     SEQ_ONE_KEY (KC_1) { | ||||||
|  |       // ¯\_(ツ)_/¯
 | ||||||
|  |       unicode_input_start(); register_hex(0xaf); unicode_input_finish(); | ||||||
|  |       register_code (KC_RALT); TAP_ONCE (KC_MINS); unregister_code (KC_RALT); | ||||||
|  |       register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT); | ||||||
|  |       unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); | ||||||
|  |       register_code (KC_RSFT); TAP_ONCE (KC_9); TAP_ONCE(KC_7); unregister_code (KC_RSFT); | ||||||
|  |       unicode_input_start (); register_hex(0xaf); unicode_input_finish(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     SEQ_ONE_KEY (KC_2) { | ||||||
|  |       // 凸(ツ)凸
 | ||||||
|  |       unicode_input_start(); register_hex(0x51F8); unicode_input_finish(); | ||||||
|  |       register_code (KC_RSFT); TAP_ONCE (KC_8); unregister_code (KC_RSFT); | ||||||
|  |       unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); | ||||||
|  |       register_code (KC_RSFT); TAP_ONCE (KC_9); unregister_code (KC_RSFT); | ||||||
|  |       unicode_input_start (); register_hex(0x51F8); unicode_input_finish(); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | # not-quite-neo | ||||||
|  | 
 | ||||||
|  | This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support multiple keyboards.  | ||||||
|  | 
 | ||||||
|  | Refer to the [readme.md](../../../../users/not-quite-neo/readme.md) of the generic parts of the implementation. | ||||||
| @ -0,0 +1,2 @@ | |||||||
|  | BACKLIGHT_ENABLE = yes | ||||||
|  | UNICODE_ENABLE = yes | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | #ifndef CONFIG_USER_H | ||||||
|  | #define CONFIG_USER_H | ||||||
|  | 
 | ||||||
|  | #include "../../config.h" | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
| @ -0,0 +1,129 @@ | |||||||
|  | /*
 | ||||||
|  | NQN is not-quite-neo | ||||||
|  | A layout based on the | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "planck.h" | ||||||
|  | #include "nqn-keys-on-quertz-de-latin1.h" | ||||||
|  | #include "nqn-basic-layout.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // Automatic number generation of important keywords
 | ||||||
|  | enum my_keycodes{ | ||||||
|  |     // Layer numbers follow the neo2 terminology, i.e. base layer = layer 1
 | ||||||
|  |     L01 = 0, | ||||||
|  |     /* L02, SHIFT is not (yet) implemented as a fully customizable layer */ | ||||||
|  |     L03, | ||||||
|  |     L04, | ||||||
|  |     L05, | ||||||
|  |     /* L06, UNSPECIFIED not (yet) needed */ | ||||||
|  |     LFN | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  | /* L01 -> default: BASE LAYER
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * | ESC  |                                  |                                  | ENTER| | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * | L03  |             L01_LEFT             |             L01_RIGHT            | L03  | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * | SHIFT|                                  |                                  | SHIFT| | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * | CTLR | GUI  | ALT  | L05  | L04  | SPACE| SPACE| L04  | L05  | ALTGR| LFN  | CTLR | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [L01] = { | ||||||
|  |   {KC_ESC,                 L01_LEFT_01,                                 L01_RIGHT_01,                 KC_ENTER}, | ||||||
|  |   {MO(L03),                L01_LEFT_02,                                 L01_RIGHT_02,                 MO(L03)}, | ||||||
|  |   {KC_LSHIFT,              L01_LEFT_03,                                 L01_RIGHT_03,                 KC_RSFT}, | ||||||
|  |   {KC_LCTRL,KC_LGUI, KC_LALT, MO(L05), MO(L04), KC_SPC,  KC_SPC,  MO(L04), MO(L05), KC_RALT, MO(LFN), KC_RCTRL} | ||||||
|  | }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | L02 -> MO(L02): SHIFT (as a layer not used, not defined, not reachable) | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* L03 -> MO(L03): PROGRAMMING
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * |      |                                  |                                  |      | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |             L03_LEFT             |             L03_RIGHT            |      | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |                                  |                                  |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [L03] = { | ||||||
|  |   {_______,                L03_LEFT_01,                                 L03_RIGHT_01,                 _______}, | ||||||
|  |   {_______,                L03_LEFT_02,                                 L03_RIGHT_02,                 _______}, | ||||||
|  |   {_______,                L03_LEFT_03,                                 L03_RIGHT_03,                 _______}, | ||||||
|  |   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||||||
|  | }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* L04 -> MO(L04): NAVIGATION AND NUMBERS
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * |      |                                  |                                  |      | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |             L04_LEFT             |             L04_RIGHT            |      | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |                                  |                                  |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      | 0    |      |      |      |      |      | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [L04] = { | ||||||
|  |   {_______,                L04_LEFT_01,                                 L04_RIGHT_01,                 _______}, | ||||||
|  |   {_______,                L04_LEFT_02,                                 L04_RIGHT_02,                 _______}, | ||||||
|  |   {_______,                L04_LEFT_03,                                 L04_RIGHT_03,                 _______}, | ||||||
|  |   {_______, _______, _______, _______, _______, _______, KC_0,    _______, _______, _______, _______, _______} | ||||||
|  | }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* L05 -> MO(L05): ALTERNATE
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * |      |                                  |                                  |      | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |             L05_LEFT             |             L05_RIGHT            |      | | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |                                  |                                  |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [L05] = { | ||||||
|  |   {_______,                L05_LEFT_01,                                 L05_RIGHT_01,                 _______}, | ||||||
|  |   {_______,                L05_LEFT_02,                                 L05_RIGHT_02,                 _______}, | ||||||
|  |   {_______,                L05_LEFT_03,                                 L05_RIGHT_03,                 _______}, | ||||||
|  |   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||||||
|  | }, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | L06 -> <TBD>: UNSPECIFIED | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* LFN -> MO(FN): FUNCTION
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * | RESET|                                  |                                  | BACKS| | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |             L06_LEFT             |             L06_RIGHT            |INSERT| | ||||||
|  |  * |------+                                  |                                  +------| | ||||||
|  |  * |      |                                  |                                  |DELETE| | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |VOICE-|VOICE+|MUS ON|MUS OF| LIGHT|      |      | VOL+ | VOL- | MUTE |      |      | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [LFN] = { | ||||||
|  |   {RESET,                  L06_LEFT_01,                                 L06_RIGHT_01,                 KC_BSPC}, | ||||||
|  |   {_______,                L06_LEFT_02,                                 L06_RIGHT_02,                 KC_INS}, | ||||||
|  |   {_______,                L06_LEFT_03,                                 L06_RIGHT_03,                 KC_DEL}, | ||||||
|  |   {MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______} | ||||||
|  | } | ||||||
|  | }; | ||||||
| @ -0,0 +1,5 @@ | |||||||
|  | # not-quite-neo | ||||||
|  | 
 | ||||||
|  | This is my personal take on porting the [neo2 layout](https://www.neo-layout.org/) to support multiple keyboards.  | ||||||
|  | 
 | ||||||
|  | Refer to the [readme.md](../../../../users/not-quite-neo/readme.md) of the generic parts of the implementation. | ||||||
| @ -0,0 +1,29 @@ | |||||||
|  | # Based on Zach's Planck Makefile
 | ||||||
|  | # Max .hex size is about 28636 bytes
 | ||||||
|  | 
 | ||||||
|  | # Build Options
 | ||||||
|  | #   change to "no" to disable the options, or define them in the Makefile in
 | ||||||
|  | #   the appropriate keymap folder that will get included automatically
 | ||||||
|  | #
 | ||||||
|  | TAP_DANCE_ENABLE    = no   # Enable TapDance functionality | ||||||
|  | BOOTMAGIC_ENABLE    = no    # Virtual DIP switch configuration(+1000) | ||||||
|  | MOUSEKEY_ENABLE     = no    # Mouse keys(+4700) | ||||||
|  | EXTRAKEY_ENABLE     = yes    # Audio control and System control(+450) | ||||||
|  | CONSOLE_ENABLE      = no    # Console for debug(+400) | ||||||
|  | COMMAND_ENABLE      = no    # Commands for debug and configuration | ||||||
|  | NKRO_ENABLE         = yes   # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||||||
|  | USB_6KRO_ENABLE     = no    # 6key Rollover | ||||||
|  | BACKLIGHT_ENABLE    = no    # Enable keyboard backlight functionality | ||||||
|  | MIDI_ENABLE         = no    # MIDI controls | ||||||
|  | AUDIO_ENABLE        = no    # Audio output on port C6 | ||||||
|  | #VARIABLE_TRACE      = no    # Debug changes to variable values
 | ||||||
|  | UNICODE_ENABLE      = no    # Unicode (can't be used with unicodemap) | ||||||
|  | UNICODEMAP_ENABLE   = no   # Enable extended unicode | ||||||
|  | BLUETOOTH_ENABLE    = no    # Enable Bluetooth with the Adafruit EZ-Key HID | ||||||
|  | RGBLIGHT_ENABLE     = no    # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. | ||||||
|  | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||||
|  | SLEEP_LED_ENABLE    = no    # Breathing sleep LED during USB suspend | ||||||
|  | 
 | ||||||
|  | ifndef QUANTUM_DIR | ||||||
|  | 	include ../../../../Makefile | ||||||
|  | endif | ||||||
| @ -0,0 +1,124 @@ | |||||||
|  | #ifndef NQN_BASIC_LAYOUT_H | ||||||
|  | #define NQN_BASIC_LAYOUT_H | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | This is the basic NQN layout | ||||||
|  | 
 | ||||||
|  | It consists of a block of 5x3, 5x4, 6x3, or 6x4 for each hand. This allows us | ||||||
|  | to use these blocks for a variety of keyboards like the planck, preonic and | ||||||
|  | even splits like the ergodox. | ||||||
|  | 
 | ||||||
|  | You can see that we use some quirky preprocessor defines to achive what we | ||||||
|  | desire. In the future I would like to see qmk taking a more generic approach | ||||||
|  | like the KLL. | ||||||
|  | 
 | ||||||
|  | The naming convention for these blocks is | ||||||
|  |   L<LAYER>_<SIDE>_<ROW> | ||||||
|  | 
 | ||||||
|  |   The LAYER is a number following the neo2 manner starting at 1 for the base | ||||||
|  |   layer, 2 is shift, 3 is for special chars etc. | ||||||
|  | 
 | ||||||
|  |   SIDE is, well either the left or right side/half of a keyboard. | ||||||
|  | 
 | ||||||
|  |   The ROW is starting from the top, numbering beginning at 1. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "nqn-common.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * | ||||||
|  |  *                    LEFT                                  RIGHT | ||||||
|  |  *    ,----------------------------------.  ,----------------------------------. | ||||||
|  |  * 01 | x    | v    | l    | c    | w    |  | k    | h    | g    | f    | q    | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 02 | u    | i    | a    | e    | o    |  | s    | n    | r    | t    | d    | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 03 | y    | <    | #    | p    | z    |  | b    | m    | ,    | .    | j    | | ||||||
|  |  *    `----------------------------------'  `----------------------------------' | ||||||
|  |  */ | ||||||
|  | #define L01_LEFT_01  KC_X,    KC_V,    KC_L,    KC_C,    KC_W | ||||||
|  | #define L01_LEFT_02  KC_U,    KC_I,    KC_A,    KC_E,    KC_O | ||||||
|  | #define L01_LEFT_03  N_Y,     N_LT,    N_HS,    KC_P,    N_Z | ||||||
|  | #define L01_RIGHT_02 KC_S,    KC_N,    KC_R,    KC_T,    KC_D | ||||||
|  | #define L01_RIGHT_01 KC_K,    KC_H,    KC_G,    KC_F,    KC_Q | ||||||
|  | #define L01_RIGHT_03 KC_B,    KC_M,    KC_COMM, KC_DOT,  KC_J | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * | ||||||
|  |  *                    LEFT                                  RIGHT | ||||||
|  |  *    ,----------------------------------.  ,----------------------------------. | ||||||
|  |  * 01 | …    | _    | [    | ]    | ^    |  | !    | <    | >    | =    | &    | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 02 | \    | /    | {    | }    | *    |  | ?    | (    | )    | -    | @    | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 03 | #    | $    | |    | ~    | `    |  | +    | %    | "    | '    | °    | | ||||||
|  |  *    `----------------------------------'  `----------------------------------' | ||||||
|  |  */ | ||||||
|  | #define L03_LEFT_01  N_DOTS,  N_USC,   N_LSQBR, N_RSQBR, N_CIRC | ||||||
|  | #define L03_LEFT_02  N_BSLS,  N_SLSH,  N_LCUBR, N_RCUBR, N_ASTR | ||||||
|  | #define L03_LEFT_03  N_HASH,  N_DLR,   N_PIPE,  N_TILD,  N_GRAVE | ||||||
|  | #define L03_RIGHT_01 N_EXKL,  N_LT,    N_GT,    N_EQ,    N_AMP | ||||||
|  | #define L03_RIGHT_02 N_QUES,  N_LPARN, N_RPARN, N_MINS,  N_AT | ||||||
|  | #define L03_RIGHT_03 N_PLUS,  N_PERC,  N_QUOT,  N_SING,  N_DEGRE | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * | ||||||
|  |  *                    LEFT                                  RIGHT | ||||||
|  |  *    ,----------------------------------.  ,----------------------------------. | ||||||
|  |  * 01 | PAGEU| BACKS| UP   | DELET| PAGED|  | /    | 7    | 8    | 9    | -    | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 02 | HOME | LEFT | DOWN | RIGHT| END  |  | *    | 4    | 5    | 6    | +    | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 03 | ESC  | TAB  | INSRT| ENTER| UNDO |  | ENTER| 1    | 2    | 3    | ,    | | ||||||
|  |  *    `----------------------------------'  `----------------------------------' | ||||||
|  |  */ | ||||||
|  | #define L04_LEFT_01  KC_PGUP,        KC_BSPC, KC_UP,   KC_DEL,   KC_PGDN | ||||||
|  | #define L04_LEFT_02  KC_HOME,        KC_LEFT, KC_DOWN, KC_RIGHT, KC_END | ||||||
|  | #define L04_LEFT_03  KC_ESC,         KC_TAB,  KC_INS,  KC_ENTER, N_UNDO | ||||||
|  | #define L04_RIGHT_01 KC_KP_SLASH,    KC_KP_7, KC_KP_8, KC_KP_9,  KC_KP_MINUS | ||||||
|  | #define L04_RIGHT_02 KC_KP_ASTERISK, KC_KP_4, KC_KP_5, KC_KP_6,  KC_KP_PLUS | ||||||
|  | #define L04_RIGHT_03 KC_KP_ENTER,    KC_KP_1, KC_KP_2, KC_KP_3,  KC_KP_DOT | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  *                    LEFT                                  RIGHT | ||||||
|  |  *    ,----------------------------------.  ,----------------------------------. | ||||||
|  |  * 01 |      |      |      |      |      |  |      |      |      |      |      | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 02 | ü    |      | ä    | €    | ö    |  | ß    |      |      |      |      | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 03 |      |      |      |      |      |  |      | µ    |      |      |      | | ||||||
|  |  *    `----------------------------------'  `----------------------------------' | ||||||
|  |  */ | ||||||
|  | #define L05_LEFT_01  _______, _______, _______, _______, _______ | ||||||
|  | #define L05_LEFT_02  N_UE,    _______, N_AE,    N_EURO,  N_OE | ||||||
|  | #define L05_LEFT_03  _______, _______, _______, _______, _______ | ||||||
|  | #define L05_RIGHT_01 _______, _______, _______, _______, _______ | ||||||
|  | #define L05_RIGHT_02 N_SS,    _______, _______, _______, _______ | ||||||
|  | #define L05_RIGHT_03 _______, N_MU,    _______, _______, _______ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * | ||||||
|  |  *                    LEFT                                  RIGHT | ||||||
|  |  *    ,----------------------------------.  ,----------------------------------. | ||||||
|  |  * 01 | F1   | F2   | F3   | F4   |      |  | MAIL | MUSIC| FILES| CALC | PASTE| | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 02 | F5   | F6   | F7   | F8   |      |  | PREV |PLAY/P| NEXT | STOP | COPY | | ||||||
|  |  *    |------+------+------+------+------|  |------+------+------+------+------| | ||||||
|  |  * 03 | F9   | F10  | F11  | F12  |      |  | PRINT| SCROL| PAUSE| NUMLK| CUT  | | ||||||
|  |  *    `----------------------------------'  `----------------------------------' | ||||||
|  |  */ | ||||||
|  | #define L06_LEFT_01  KC_F1,   KC_F2,   KC_F3,   KC_F4,          _______ | ||||||
|  | #define L06_LEFT_02  KC_F5,   KC_F6,   KC_F7,   KC_F8,          _______ | ||||||
|  | #define L06_LEFT_03  KC_F9,   KC_F10,  KC_F11,  KC_F12,         _______ | ||||||
|  | #define L06_RIGHT_01 KC_MAIL, KC_MSEL, KC_MY_COMPUTER, KC_CALCULATOR, N_PASTE | ||||||
|  | #define L06_RIGHT_02 KC_MPRV, KC_MPLY, KC_MNXT,        KC_MSTP,       N_COPY | ||||||
|  | #define L06_RIGHT_03 KC_PSCR, KC_SLCK, KC_PAUS,        KC_NLCK,       N_CUT | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | #ifndef NQN_COMMON_H | ||||||
|  | #define NQN_COMMON_H | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  | This file holds some commen NQN definitions | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #define _______ KC_TRNS | ||||||
|  | #define XXXXXXX KC_NO | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | # not-quite-neo | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | ## Use case | ||||||
|  | My use case is simple: | ||||||
|  | 
 | ||||||
|  | * 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. | ||||||
|  | * 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. | ||||||
|  | * 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. | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | ## Pitfalls | ||||||
|  | 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.).  | ||||||
|  | 
 | ||||||
|  | Right now this implementation only incompletely supports neo2 layers 1 to 4. | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | ## Keyboards and keymaps | ||||||
|  | 
 | ||||||
|  | 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) | ||||||
|  |  . | ||||||
					Loading…
					
					
				
		Reference in new issue
	
	 jola5
						jola5