#include "keymap.h" #include "layers/layers.h" #ifdef ENABLE_HID_SPELLCHECK #include "features/hid_spellcheck.h" #endif #include "features/beta_rawhid.h" #ifdef ENABLE_AUTOCORRECT #include "features/autocorrect/autocorrect.h" #endif // Values that should not be saved to git. // Create a `secrets.h` in the keymap directory. // // It should contain the following: // #define SECRET_EMAIL "val" // #define SECRET_GMAIL "val" // #define SECRET_SCHOOL_EMAIL "val" #include "secrets.h" // Send a special character. // Returns false if character was caught, true otherwise. bool send_special_character(uint16_t keycode) { if ( (keycode > M_SPECIAL_TOP) && (keycode < M_SPECIAL_BOTTOM) ) { hid_send_special_char(keycode - M_SPECIAL_TOP - 1); return false; } return true; } LEADER_EXTERNS(); void leader_start(void) { ergodox_right_led_3_on(); } void leader_end(void) { ergodox_right_led_3_off(); } void matrix_scan_user(void) { LEADER_DICTIONARY() { leading = false; leader_end(); SEQ_TWO_KEYS(KC_E, KC_M) { SEND_STRING(SECRET_EMAIL); } SEQ_TWO_KEYS(KC_G, KC_M) { SEND_STRING(SECRET_GMAIL); } SEQ_TWO_KEYS(KC_L, KC_I) { SEND_STRING(SECRET_SCHOOL_EMAIL); } SEQ_TWO_KEYS(KC_P, KC_L) { layer_move(LAYER_PLAIN); } //SEQ_ONE_KEY(KC_F) {} // //SEQ_TWO_KEYS(KC_A, KC_S) { // register_code(KC_LGUI); // register_code(KC_S); // unregister_code(KC_S); // unregister_code(KC_LGUI); //} } } // Return FALSE to halt key processing, // Return TRUE to allow QMK to handle keypress. bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef ENABLE_HID_SPELLCHECK if (!process_spellcheck(keycode, record)) { return false; } #endif #ifdef ENABLE_AUTOCORRECT if (!process_autocorrection(keycode, record)) { return false; } #endif // Handle special chars if (record->event.pressed) { if (!send_special_character(keycode)) { return false; } } // Handle macros switch (keycode) { case M_RESETWM: if (record->event.pressed) { SEND_STRING(SS_LCTL(SS_LGUI(SS_LSFT(SS_TAP(X_R))))); } return false; case M_SHUTDOWN: if (record->event.pressed) { SEND_STRING(SS_LGUI(SS_TAP(X_P)) SS_DELAY(100) SS_TAP(X_Y) SS_DELAY(100) SS_TAP(X_ENTER)); } return false; case M_RU_CTRL: if (record->event.pressed) { layer_move(LAYER_MAIN); register_code16(KC_LCTRL); } else { unregister_code16(KC_LCTRL); layer_move(LAYER_RUSSIAN); } return false; case M_RU_ALT: if (record->event.pressed) { layer_move(LAYER_MAIN); register_code16(KC_LALT); } else { unregister_code16(KC_LALT); layer_move(LAYER_RUSSIAN); } return false; } return true; }