diff options
Diffstat (limited to 'keyboards/keebio/bdn9/keymaps/brandonschlack/keymap.c')
-rw-r--r-- | keyboards/keebio/bdn9/keymaps/brandonschlack/keymap.c | 393 |
1 files changed, 393 insertions, 0 deletions
diff --git a/keyboards/keebio/bdn9/keymaps/brandonschlack/keymap.c b/keyboards/keebio/bdn9/keymaps/brandonschlack/keymap.c new file mode 100644 index 0000000000..443e8d0ae9 --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/brandonschlack/keymap.c @@ -0,0 +1,393 @@ +/* Copyright 2020 Brandon Schlack + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include QMK_KEYBOARD_H +#include "brandonschlack.h" + +/** + * Layer Names + */ +enum bdn9_layers { + _REEDER = 0, + _MEDIA, + _NAVI, + _KARABINER, + LR_NAV, + LR_REVIEW, + LR_EDIT +}; + +#define _AUDIO 13 +#define _LIGHT 14 + +/** + * Keycodes & Macros + */ +#define DF_REDR DF(_REEDER) // Set Default Layer to Reeder shortcuts +#define DF_MEDA DF(_MEDIA) // Set Default Layer to Media controls +#define DF_NAVI DF(_NAVI) // Set Default Layer to Navigation shortcuts +#define DF_KBNR DF(_KARABINER) // Set Default Layer to Basic Macro keys + +enum bdn9_keycodes { + TG_LNAV = KEYMAP_SAFE_RANGE, + TG_REVW, + TG_EDIT +}; + +/** + * Tap Dances + * + * Use tap dance for layer changes + */ +enum bdn9_dances { + TD_DTAP_ADIO = 0, + TD_DTAP_LGHT, + TD_DTAP_ADJT +}; +// Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_DTAP_ADIO] = ACTION_TAP_DANCE_TRIGGER_LAYER(DOUBLE_TAP, _AUDIO), + [TD_DTAP_LGHT] = ACTION_TAP_DANCE_TRIGGER_LAYER(DOUBLE_TAP, _LIGHT), + [TD_DTAP_ADJT] = ACTION_TAP_DANCE_TRIGGER_LAYER(DOUBLE_TAP, _ADJUST), +}; +// Tap Dance Aliases +#if defined(RGBLIGHT_ENABLE) +#define DTP_AVC TD(TD_DTAP_LGHT) // +#elif defined(AUDIO_ENABLE) +#define DTP_AVC TD(TD_DTAP_ADIO) +#endif +#define DTP_ADJ TD(TD_DTAP_ADJT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + Layer: Reeder + ┌───────────┐ ┌───────────┐ + │ Items │ │ Subs │ + │ Prv Nxt │ │ Prv Nxt │ + ├────────┬──┴──┴──┬────────┤ + │ VwBrsw │ Star │ Sync │ + ├────────┼────────┼────────┤ + │ CmdTab │ TgRead │ Clear │ + ├────────┼────────┼────────┤ + │ VwStard│ VwUnrd │ VwAll │ + └────────┴────────┴────────┘ + */ + [_REEDER] = LAYOUT( + KC_H, KC_S, KC_R, + CMD_TAB, KC_M, DTP_AVC, + G(KC_1), G(KC_2), DTP_ADJ + ), + /* + Layer: Media + ┌───────────┐ ┌───────────┐ + │ Vol │ │ Track │ + │ Prv Nxt │ │ Prv Nxt │ + ├────────┬──┴──┴──┬────────┤ + │ Mute │ Player │ Sync │ + ├────────┼────────┼────────┤ + │ YT<10s │ YT Ply │ YT>10s │ + ├────────┼────────┼────────┤ + │ Left │ Spce │ Rght │ + └────────┴────────┴────────┘ + */ + [_MEDIA] = LAYOUT( + KC_MUTE, MC_PLYR, KC_MPLY, + KC_J, KC_K, DTP_AVC, + KC_LEFT, KC_SPC, DTP_ADJ + ), + /* + Layer: Navigation + ┌───────────┐ ┌───────────┐ + │ Scroll │ │ Tab │ + │ Up Dn │ │ Prv Nxt │ + ├────────┬──┴──┴──┬────────┤ + │ ReOTab │ CmdTab │ ClsTab │ + ├────────┼────────┼────────┤ + │ PgDn │ Up │ PgUp │ + ├────────┼────────┼────────┤ + │ Left │ Down │ Rght │ + └────────┴────────┴────────┘ + */ + [_NAVI] = LAYOUT( + REO_TAB, CMD_TAB, CLS_TAB, + KC_PGDN, KC_UP, DTP_AVC, + KC_LEFT, KC_DOWN, DTP_ADJ + ), + /* + Layer: Macro/Karabiner + ┌───────────┐ ┌───────────┐ + │ │ │ │ + │ - + │ │ . = │ + ├────────┬──┴──┴──┬────────┤ + │ 1 │ 2 │ 3 │ + ├────────┼────────┼────────┤ + │ 4 │ 5 │ 6 │ + ├────────┼────────┼────────┤ + │ 7 │ 8 │ 9 │ + └────────┴────────┴────────┘ + */ + [_KARABINER] = LAYOUT( + KC_P1, KC_P2, KC_P3, + KC_P4, KC_P5, DTP_AVC, + KC_P7, KC_P8, DTP_ADJ + ), + /* + Layer: Lightroom Navigation + ┌───────────┐ ┌───────────┐ + │ Thumbnail │ │ Scrl Grid │ + │ Dec Inc │ │ Up Dn │ + ├────────┬──┴──┴──┬────────┤ + │ TgRevw │CylGrdVw│ TgEdit │ + ├────────┼────────┼────────┤ + │ Start │ Up │ End │ + ├────────┼────────┼────────┤ + │ Left │ Down │ Rght │ + └────────┴────────┴────────┘ + */ + [LR_NAV] = LAYOUT( + TG_REVW, KC_J, TG_EDIT, + KC_HOME, KC_UP, DTP_AVC, + KC_LEFT, KC_DOWN, DTP_ADJ + ), + /* + Layer: Review/Rate + ┌───────────┐ ┌───────────┐ + │ Stars │ │ Flag │ + │ Dec Inc │ │ Dec Inc │ + ├────────┬──┴──┴──┬────────┤ + │ TgLNav │ Yellow │ TgEdit │ + ├────────┼────────┼────────┤ + │ NoStar │ Green │ UnFlag │ + ├────────┼────────┼────────┤ + │ Left │ Blue │ Rght │ + └────────┴────────┴────────┘ + */ + [LR_REVIEW] = LAYOUT( + TG_LNAV, KC_7, TG_EDIT, + KC_0, KC_8, DTP_AVC, + KC_LEFT, KC_6, DTP_ADJ + ), + /* + Layer: Edit/Develop + ┌───────────┐ ┌───────────┐ + │ Sliders │ │ Value │ + │ Prv Nxt │ │ Dec Inc │ + ├────────┬──┴──┴──┬────────┤ + │ TgRevw │ Bf/Aft │ TgLNav │ + ├────────┼────────┼────────┤ + │ FlgRjt │ Undo │ FlgPkd │ + ├────────┼────────┼────────┤ + │ Left │ Redo │ Rght │ + └────────┴────────┴────────┘ + */ + [LR_EDIT] = LAYOUT( + TG_REVW, KC_BSLS, TG_LNAV, + KC_X, MC_UNDO, DTP_AVC, + KC_LEFT, MC_REDO, DTP_ADJ + ), + /* + Layer: Light + ┌───────────┐ ┌───────────┐ + │ RGB Hue │ │ RGB Sat │ + │ Prv Nxt │ │ Dec Inc │ + ├────────┬──┴──┴──┬────────┤ + │ RGBTgl │ Val+ │ TgLNav │ + ├────────┼────────┼────────┤ + │ Mode- │ Val- │ Mode+ │ + ├────────┼────────┼────────┤ + │ LyrTgl │ NxtThm │ XXXX │ + └────────┴────────┴────────┘ + */ + [_LIGHT] = LAYOUT( + RGB_TOG, RGB_VAI, TG_LGHT, + RGB_RMOD,RGB_VAD, RGB_MOD, + RGB_LYR, RGB_THM, XXXXXXX + ), + /* + Layer: ADJUST + ┌───────────┐ ┌───────────┐ + │ XXXX │ │ XXXX │ + │ │ │ │ + ├────────┬──┴──┴──┬────────┤ + │ MAKE │ Reeder │ Light │ + ├────────┼────────┼────────┤ + │ Media │ Navi │ Macro │ + ├────────┼────────┼────────┤ + │ LR Rvw │ LR Nav │ LR Edt │ + └────────┴────────┴────────┘ + */ + [_ADJUST] = LAYOUT( + QM_MAKE, DF_REDR, TG_LGHT, + DF_MEDA, DF_NAVI, DF_KBNR, + TG_REVW, TG_LNAV, TG_EDIT + ), +}; + +void keyboard_post_init_keymap(void){ + // Debug to Console by default + debug_enable = true; +} + +/** + * Encoder + */ +const uint16_t PROGMEM encoders[][2][2] = { + [_REEDER] = {{ KC_K, KC_J }, { KC_P, KC_N }}, + [_MEDIA] = {{ KC_VOLD, KC_VOLU }, { KC_MPRV, KC_MNXT }}, + [_NAVI] = {{ MC_WH_U, MC_WH_D }, { PRV_TAB, NXT_TAB }}, + [_KARABINER] = {{ KC_PMNS, KC_PPLS }, { KC_PDOT, KC_PEQL }}, + [LR_NAV] = {{ KC_MINS, KC_EQL }, { KC_PGDN, KC_PGUP }}, + [LR_REVIEW] = {{ KC_LBRC, KC_RBRC }, { G(KC_DOWN), G(KC_UP) }}, + [LR_EDIT] = {{ KC_COMM, KC_DOT }, { KC_MINS, KC_EQL }}, +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + uint8_t layer = get_highest_layer(layer_state); + + switch (layer) { + case _AUDIO: + #ifdef AUDIO_ENABLE + #endif + break; + case _LIGHT: + #ifdef RGBLIGHT_ENABLE + switch (index) { + case 0: + if (clockwise) { + rgblight_increase_hue(); + } else { + rgblight_decrease_hue(); + } + break; + case 1: + if (clockwise) { + rgblight_increase_sat(); + } else { + rgblight_decrease_sat(); + } + break; + } + #endif + break; + default: + tap_code16(pgm_read_word(&encoders[layer][index][clockwise])); + break; + } +} + +/** + * Keycodes + */ +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TG_LNAV: + if (!record->event.pressed) { + tap_code(KC_G); + layer_move(LR_NAV); + } + break; + case TG_REVW: + if (!record->event.pressed) { + tap_code(KC_E); + layer_move(LR_REVIEW); + } + break; + case TG_EDIT: + if (!record->event.pressed) { + tap_code(KC_D); + layer_move(LR_EDIT); + } + break; + } + return true; +} + +/** + * Layer Switch + */ +layer_state_t layer_state_set_keymap (layer_state_t state) { + switch (get_highest_layer(state)) { + case LR_NAV: + #if defined(RGBLIGHT_ENABLE) + rgb_layer_helper(HSV_TEAL); + #endif + break; + case LR_REVIEW: + #if defined(RGBLIGHT_ENABLE) + rgb_layer_helper(HSV_CYAN); + #endif + break; + case LR_EDIT: + #if defined(RGBLIGHT_ENABLE) + rgb_layer_helper(HSV_AZURE); + #endif + break; + default: + break; + } + return state; +} + +/** + * Tap Dances + */ +void process_tap_dance_keycode (bool reset, uint8_t toggle_layer) { + uint16_t keycode = 0; + switch (toggle_layer) { + case _LIGHT: + switch (get_highest_layer(layer_state)) { + case _REEDER: + case _MEDIA: + keycode = KC_L; + break; + case _NAVI: + keycode = KC_PGUP; + break; + case _KARABINER: + keycode = KC_P6; + break; + case LR_NAV: + keycode = KC_END; + case LR_REVIEW: + keycode = KC_U; + case LR_EDIT: + keycode = KC_P; + break; + } + break; + case _ADJUST: + switch (get_highest_layer(layer_state)) { + case _REEDER: + keycode = G(KC_3); + break; + case _KARABINER: + keycode = KC_P9; + break; + case _MEDIA: + case _NAVI: + case LR_NAV: + case LR_REVIEW: + case LR_EDIT: + keycode = KC_RGHT; + break; + } + break; + } + if (!reset) { + register_code16(keycode); + } else { + unregister_code16(keycode); + } +} |