qmk-keychron-q3-colemak-dh/keyboards/keebio/bdn9/keymaps/brandonschlack/keymap.c
Drashna Jaelre a0fed0ea17
Convert Encoder callbacks to be boolean functions (#12805)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-05-21 23:17:32 -07:00

395 lines
14 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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);
}
}