[Keymap] add brandonschlack userspace and keymaps (#10411)

This commit is contained in:
Brandon Schlack
2020-11-04 21:55:03 -08:00
committed by GitHub
parent 262a607334
commit f12dcb0659
80 changed files with 5712 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
/* 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/>.
*/
#pragma once
#define ENCODER_DIRECTION_FLIP
#undef RGBLIGHT_ANIMATIONS
#define RGBLIGHT_EFFECT_BREATHING // Only have Breathing Animation
/* Mouse Keys Configuration */
#define MK_3_SPEED
#define MK_W_INTERVAL_UNMOD 20

View File

@@ -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);
}
}

View File

@@ -0,0 +1,107 @@
# brandonschlack's Macropad/Lightroom layout for BDN9
##### 2 encoders required
![brandonschlack BDN9](https://i.imgur.com/pai9M0m.jpg)
I built this pad to match my Lightroom photo editing workflow using
[Lightroom Classic Keyboard shortcuts](https://helpx.adobe.com/lightroom-classic/help/keyboard-shortcuts.html), and added on general macropad layers along the way.
I use macOS, so shortcuts and macros are configured as such. Encoder functionality is in the header of the tables, as clockwise/counterclockwise.
---
## Macropad Layers
### Reeder Layer
This layer is used for browsing [Reeder](https://reederapp.com/), an awesome RSS reader for Mac
| Prev/Next Item | **Knobs** | Prev/Next Subscription |
| --- | --- | --- |
| Open Item in Browser | Star Item/Save for Later | Sync |
| Command+Tab | Toggle Read Status | Clear Read Items |
| Starred Items | Unread Items | All Items |
### Media Layer
This layer is used for media controls. Player button is a hotkey to focus the current media player with [BeardedSpice](https://beardedspice.github.io/)
| Volume Down/Up | **Knobs** | Prev/Next Track |
| --- | --- | --- |
| Mute | Current Player | Play/Pause |
| YouTube Rewind 10s (J) | YouTube Play/Pause (K) | YouTube Forward 10s (L) |
| Left | Space | Right |
### Navigation Layer
This layer is used for general window navigation around macOS
| Scroll Up/Down | **Knobs** | Next/Prev Tab |
| --- | --- | --- |
| Reopen Tab | Cmd+Tab | Close Tab |
| Page Down | Up | Page Up |
| Left | Down | Right |
### Macro Layer
This layer is used to send generic macro keys, meant to be remapped based on current app with [Karabiner](https://pqrs.org/osx/karabiner/)
| +/- | **Knobs** | =/. |
| --- | --- | --- |
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
## Lightroom Layers
### LR Navigation Layer
This layer is used for navigating Grid View in the Library Module.
| Inc/Dec Thumbnail Size | **Knobs** | Scroll Up/Dn Grid Thumbnails |
| --- | --- | --- |
| Review Layer | Cycle Grid View options | Edit Layer |
| Start of Grid View | Up | End of Grid View |
| Left | Down | Right |
### Lightroom Review Layer
This layer is used for Reviewing, Rating, and Culling images with the Loupe View in the Library Module.
| Inc/Dec Star Rating | **Knobs** | Inc/Dec Flag Status |
| --- | --- | --- |
| LR Navigation Layer | Yellow Label | Edit Layer |
| Remove Star Rating | Green Label | Unflag Photo |
| Left | Blue Label | Right |
### Lightroom Edit Layer
This layer is used for editing photos in the Develop Module
| Next/Prev Basic Panel Settings | **Knobs** | Inc/Dec Selected Slider |
| --- | --- | --- |
| Review Layer | Toggle Before View | LR Navigation Layer |
| Flag Rejected | Undo | Flag Picked |
| Left | Redo | Right |
## Meta Layers
### Light Layer
This layer is used to control lighting for the pad. Currently nothing is saved in EEPROM, so it will reset after power loss. Also currently my userspace layer colors take priority until I build out that feature. This layer is accessed with a double tap of the middle right key via [tap dance](https://docs.qmk.fm/#/feature_tap_dance). A triple tap of the middle right key will also toggle lights on/off.
| Inc/Dec RGB Hue | **Knobs** | Inc/Dec RGB Saturation |
| --- | --- | --- |
| RGB Toggle | RGB Value Increase | Toggle Layer Off |
| RGB Mode Prev | RGB Value Decrease | RGB Mode Next |
| RGB Layer Indication | Cycle RGB Themes | XXX |
### Adjust Layer
This layer is used as a meta layer for the pad. This layer is accessed with a double tap of the bottom right key via [tap dance](https://docs.qmk.fm/#/feature_tap_dance).
| XXX | **Knobs** | XXX |
| --- | --- | --- |
| MAKE | **Reeder** Layer | **Light** Layer |
| **Media** Layer | **Navigation** Layer | **Keypad** Layer |
| **Lightroom Review** Layer | **Lightroom Navigation** Layer | **Lightroom Edit** Layer |

View File

@@ -0,0 +1,11 @@
# Use macropad-specific defines, layers, functions. Flash bootloader with QM_MAKE
IS_MACROPAD = yes
# Use dfu bootloader for Elite-C
BOOTLOADER = atmel-dfu
# Build Options
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
COMMAND_ENABLE = no # Disable Command, breaks with Mouse Keys set to constant.
BACKLIGHT_ENABLE = no # No backlights installed
TAP_DANCE_ENABLE = yes # Use tap dance