| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- #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();
- }
- }
- }
|