123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- /* 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 }},
- };
- bool 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;
- }
- return true;
- }
- /**
- * 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);
- }
- }
|