diff options
Diffstat (limited to 'keyboards/keebio/levinson/keymaps/issmirnov/keymap.c')
-rw-r--r-- | keyboards/keebio/levinson/keymaps/issmirnov/keymap.c | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c b/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c new file mode 100644 index 000000000..0023b8424 --- /dev/null +++ b/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c @@ -0,0 +1,124 @@ +#include "tap_tog.h" + +#ifdef AUDIO_ENABLE + #include "audio.h" + #include "sounds.h" +#endif + + +#ifdef RGBLIGHT_ENABLE + #include "rgb.h" +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// Run `./qmk show levinson` from parent dir to see this layer. +[_QWERTY] = LAYOUT_ortho_4x12_wrapper( +KC_ESC , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________ , APPS , +KC_TAB , _________________QWERTY_L2_________________, _________________QWERTY_R2_________________ , MO(_NAVI) , +OSMSFT , _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ , KC_QUOTE , +KC_LCTL , MODSFT , KC_LALT , KC_LGUI , KC_BSPACE , KC_SPC , KC_ENTER , KC_TAB , KC_UP , KC_DOWN , KC_LEFT , KC_RGHT +), // Note: visualizer expects this closing parens to be right at the start of the line. + +// Run `./qmk show levinson` from parent dir to see this layer. +[_SYMB] = LAYOUT_ortho_4x12_wrapper( +_______ , _________________SYMB_L1___________________, _________________SYMB_R1___________________ , KC_ESC , +_______ , _________________SYMB_L2___________________, _________________SYMB_R2___________________ , KC_DQT , +_______ , _________________SYMB_L3___________________, _________________SYMB_R3___________________ , KC_QUOTE , +_______ , ___________________BLANK___________________, _______ , _______ , KC_ESC , KC_COLN , KC_PERC , LOCK +), // Note: visualizer expects this closing parens to be right at the start of the line. + +// Run `./qmk show levinson` from parent dir to see this layer. +[_NUMP] = LAYOUT_ortho_4x12_wrapper( +_______ , _________________NUMP_L1___________________ , _________________NUMP_R1___________________ , RESET , +_______ , _________________NUMP_L2___________________ , _________________NUMP_R2___________________ , _______ , +_______ , _________________NUMP_L3___________________ , _________________NUMP_R3___________________ , _______ , +_______ , ___________________BLANK___________________ , _______ , _______ , _______ , _______ , TO(_OVERWATCH) , _______ +), // Note: visualizer expects this closing parens to be right at the start of the line. + +// Run `./qmk show levinson` from parent dir to see this layer. +[_OVERWATCH] = LAYOUT_ortho_4x12_wrapper( +______________OVERWATCH_L1_________________ , TO(0) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , EEP_RST , +______________OVERWATCH_L2_________________ , RGB_MODE_FORWARD , RGB_MODE_REVERSE , RGB_VAI , RGB_VAD , XXXXXXX , RGB_TOG , +______________OVERWATCH_L3_________________ , RGB_MODE_PLAIN , RGB_MODE_BREATHE , RGB_MODE_RAINBOW , RGB_MODE_SWIRL , RGB_MODE_SNAKE , RGB_MODE_XMAS , +______________OVERWATCH_L4_________________ , KC_SPACE, RGB_HUI , RGB_HUD , RGB_SAI , RGB_SAD , RGB_MODE_RGBTEST , RGB_MODE_GRADIENT +), // Note: visualizer expects this closing parens to be right at the start of the line. + +// Run `./qmk show levinson` from parent dir to see this layer. +[_NAVI] = LAYOUT_ortho_4x12_wrapper( +XXXXXXX , _________________NAVI_L1___________________ , _________________NAVI_R1___________________ , XXXXXXX , +XXXXXXX , _________________NAVI_L2___________________ , _________________NAVI_R2___________________ , XXXXXXX , +XXXXXXX , _________________NAVI_L3___________________ , _________________NAVI_R3___________________ , XXXXXXX , +XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , APPS , KC_LGUI , MODSFT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX +), // Note: visualizer expects this closing parens to be right at the start of the line. + +}; + +// called by QMK during key processing before the actual key event is handled. Useful for macros. +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOCK: + if (record->event.pressed) { + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); + } + return true; // Let QMK send the press/release events + break; + + case TAP_TOG_LAYER: + process_tap_tog(_SYMB,record); + return false; + break; + default: + tap_tog_count = 0; // reset counter. + tap_tog_layer_other_key_pressed = true; // always set this to true, TAP_TOG_LAYER handlers will handle interpreting this + break; + } + return true; +} + + +// Runs constantly in the background, in a loop every 100ms or so. +// Best used for LED status output triggered when user isn't actively typing. +void matrix_scan_user(void) { + #ifdef RGBLIGHT_ENABLE + matrix_scan_rgb(); + #endif // RGBLIGHT_ENABLE +} + +// only runs when when the layer is changed, good for updating LED's and clearing sticky state +// RGB modes: https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight.h +uint32_t layer_state_set_user(uint32_t state) { + #ifdef RGBLIGHT_ENABLE + layer_state_set_rgb(state); + #endif + uint8_t layer = biton32(state); + combo_enable(); // by default, enable combos. + switch (layer) { + case 0: + break; + case 1: + clear_mods(); + break; + case 2: + clear_mods(); + break; + case _OVERWATCH: + clear_mods(); + combo_disable(); // We don't want combos in overwatch + #ifdef AUDIO_ENABLE + // PLAY_SONG(song_overwatch); + #endif + break; + default: + break; + } + return state; +}; + +// Runs boot tasks for keyboard. +// Plays a welcome song and clears RGB state. +void matrix_init_user(void) { + #ifdef RGBLIGHT_ENABLE + keyboard_post_init_rgb(); + #endif +} |