// pvinis ergodox ez // ,------------------------------------. ┌────┬────┬────┬────┬────┬────┬──────┐ // | | | | | | | | │ │ │ │ │ │ │ │ // |------+----+----+----+----+---------| ├────┼────┼────┼────┼────┼────┼──────┤ // | | | | | | | | │ │ │ │ │ │ │ │ // |------+----+----+----x----x----| | │ ├────╆━━━━╅────┼────┼────┼──────┤ // | | | | | | |----| ├────┤ ┃ ┃ │ │ │ │ // |------+----+----+----x----x----| | │ ├────╄━━━━╃────┼────┼────┼──────┤ // | | | | | | | | │ │ │ │ │ │ │ │ // `------+----+----+----+----+---------' └────┴────┼────┼────┼────┼────┼────┬─┘ // | | | | | | │ │ │ │ │ │ // `------------------------' └────┴────┴────┴────┴────┘ // ,---------. ┌────┬────┐ // | | | │ │ │ // ,----+----+----| ├────┼────┼────┐ // | | | | │ │ │ │ // | | |----| ├────┤ │ │ // | | | | │ │ │ │ // `--------------' └────┴────┴────┘ #include QMK_KEYBOARD_H #include "pvinis.h" #include "mousekey.h" // layers enum { MOUSE = 8, }; // extra keys enum { NONE = 30, TD_LAYR, // SYSCTL and MOUSE layer switch }; // application selection // this is sending ctrl-alt-gui-, and this is picked up by hammerspoon #define AP_SLCK ALLM(KC_S) #define AP_XCOD ALLM(KC_X) #define AP_MSGR ALLM(KC_M) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ,------------------------------------. ,------------------------------------. // |4xFLSH| | | | | |Opt | | | | | | | | | // |------+----+----+----+----+---------| |----+----+----+----+----+----+------| // | Tab | | | | | | | | | | | | | | | // |------+----+----+----x----x----| | | |----x----x----+----+----+------| // |EscCtl| | | | | |----| |----| | | | | | Ent | // |------+----+----+----x----x----| | | |----x----x----+----+----+------| // |LShift| | | | | | | | | | | | | |RShift| // `------+----+----+----+----+---------' `---------+----+----+----+----+------' // | | | |Cmd |LOWR| |RASE|RAlt| | | | // `------------------------' `------------------------' // ,---------. ,---------. // |QWER| | | | | // ,----+----+----| |----+----+----. // | Ba | L | | | | | | // | ck |Shi |----| |----| |Spc | // | spc| ft | | | | | | // `--------------' `--------------' [LR_BASE] = LAYOUT_ergodox_pretty_wrapper( // clang-format off TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT , KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, _______, _______, _______, KC_LGUI, SYMBOL , SYSCTL , KC_RALT, _______, _______, _______, QWERTY , CARPALX, _______, _______, _______, _______, KC_BSPC, _______, _______, _______, _______, KC_SPC // clang-format on ), // ,------------------------------------. ,------------------------------------. // | | NUMBERS_L | | | - | NUMBERS_R | = | // |------+----+----+----+----+---------| |----+----+----+----+----+----+------| // | | | [ | | ] | | | // |------+ | | | | +------| // | | QWERTY_L |----| |----| QWERTY_R | | // |------+ | ( | | ) | +------| // | | | | | | | | // `------+----+----+----+----+---------' `---------+----+----+----+----+------' // | | ` | | | | | | | | ' | | // `------------------------' `------------------------' // ,---------. ,---------. // | | | | | | // ,----+----+----| |----+----+----. // | | | | | | | | // | | |----| |----| | | // | | | | | | | | // `--------------' `--------------' // See `users/pvinis/pvinis.h` [LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper( // clang-format off _______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL , _______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______, _______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______, _______, _________________QWERTY_L3_________________, KC_LPRN, KC_RPRN, _________________QWERTY_R3_________________, _______, _______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_QUOT , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ // clang-format off ), // ,------------------------------------. ,------------------------------------. // | | NUMBERS_L | | | | NUMBERS_R | | // |------+----+----+----+----+---------| |----+----+----+----+----+----+------| // | | | | | | | | // |------+ | | | | +------| // | | CARPALX_L |----| |----| CARPALX_R | | // |------+ | | | | +------| // | | | | | | | | // `------+----+----+----+----+---------' `---------+----+----+----+----+------' // | | | | | | | | | | | | // `------------------------' `------------------------' // ,---------. ,---------. // | | | | | | // ,----+----+----| |----+----+----. // | | | | | | | | // | | |----| |----| | | // | | | | | | | | // `--------------' `--------------' // See `users/pvinis/pvinis.h` [LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper( // clang-format off _______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______, _______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______, _______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______, _______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ // clang-format on ), // See `users/pvinis/pvinis.h` [LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper( // clang-format off _______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______, _______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______, _______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______, _______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ // clang-format off ), // See `users/pvinis/pvinis.h` [LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper( // clang-format off _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______, _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ // clang-format on ), // See `users/pvinis/pvinis.h` [LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper( // clang-format off XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX // clang-format on ), /* MOUSE * a keymap to control my system. * * ,--------------------------------------------------. ,--------------------------------------------------. * | ^ | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | | | | | | | | | MsUp | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | |MidClk| * ,------|------|------| |------+------+------. * | | | | | |Left |Right | * | | |------| |------| Click| Click| * | | | ^ | | | | | * `--------------------' `--------------------' */ [MOUSE] = LAYOUT_ergodox_pretty( // clang-format off KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_MS_U ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO // clang-format on ), }; // keyboard initialization void keyboard_post_init_user_keymap(void) { ergodox_led_all_on(); for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) { ergodox_led_all_set(i); wait_ms(5); } wait_ms(1000); for (int i = LED_BRIGHTNESS_LO; i > 0; i--) { ergodox_led_all_set(i); wait_ms(10); } ergodox_led_all_off(); // restore default brightness for future use ergodox_led_all_set(LED_BRIGHTNESS_HI); } // light up leds based on the layer uint32_t layer_state_set_user_keymap(uint32_t state) { ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); switch (biton32(state)) { case LR_SYSCTL: ergodox_right_led_3_on(); // blue break; case LR_KBCTL: ergodox_right_led_1_on(); // red break; case LR_SYMBOL: ergodox_right_led_2_on(); // green break; default: break; } return state; } // tap dances // flash keyboard on 4x tap, with leds // void flash_each_tap(qk_tap_dance_state_t *state, void *user_data) { // switch (state->count) { // case 1: // ergodox_right_led_3_on(); // break; // case 2: // ergodox_right_led_2_on(); // break; // case 3: // ergodox_right_led_1_on(); // break; // case 4: // ergodox_right_led_3_off(); // wait_ms(50); // ergodox_right_led_2_off(); // wait_ms(50); // ergodox_right_led_1_off(); // break; // } // } // void flash_dance_finished(qk_tap_dance_state_t *state, void *user_data) { // if (state->count >= 4) { // reset_keyboard(); // reset_tap_dance(state); // } // } // void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) { // ergodox_right_led_1_off(); // wait_ms(50); // ergodox_right_led_2_off(); // wait_ms(50); // ergodox_right_led_3_off(); // } // SYSCTL on first tap, MOUSE ON second tap // void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) { // uint8_t layer = biton32(layer_state); // switch(state->count) { // case 1: // switch(layer) { // case LR_SYSCTL: // layer_off(LR_SYSCTL); // break; // case MOUSE: // layer_off(MOUSE); // break; // default: // layer_on(LR_SYSCTL); // break; // } // break; // case 2: // layer_on(MOUSE); // break; // } // } // qk_tap_dance_action_t tap_dance_actions[] = { // [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ), // [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ), // };