mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						a871444743
					
				@ -30,32 +30,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
#undef RGBLED_NUM
 | 
			
		||||
#define RGBLED_NUM 8
 | 
			
		||||
#define RGBLIGHT_ANIMATIONS
 | 
			
		||||
#define RGBLIGHT_SLEEP
 | 
			
		||||
#define RGBLIGHT_HUE_STEP 8
 | 
			
		||||
#define RGBLIGHT_SAT_STEP 8
 | 
			
		||||
#define RGBLIGHT_VAL_STEP 8
 | 
			
		||||
 | 
			
		||||
#undef RGBLED_SPLIT
 | 
			
		||||
#define RGBLED_SPLIT { RGBLED_NUM, 0} // defined to sync animations
 | 
			
		||||
 | 
			
		||||
#define FORCE_NKRO // force NKRO on by default
 | 
			
		||||
 | 
			
		||||
#undef TAPPING_TERM
 | 
			
		||||
#define TAPPING_TERM 200
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if !defined(NO_DEBUG) && !defined(CONSOLE_ENABLE)
 | 
			
		||||
#define NO_DEBUG
 | 
			
		||||
#endif // !NO_DEBUG
 | 
			
		||||
#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
 | 
			
		||||
#define NO_PRINT
 | 
			
		||||
#endif // !NO_PRINT
 | 
			
		||||
 | 
			
		||||
#define NO_MUSIC_MODE
 | 
			
		||||
 | 
			
		||||
// Override caps lock indication from my userspace
 | 
			
		||||
//#undef NORMAL_MODE
 | 
			
		||||
//#define NORMAL_MODE 1
 | 
			
		||||
 | 
			
		||||
//#undef CAPS_LOCK_MODE
 | 
			
		||||
//#define CAPS_LOCK_MODE 28
 | 
			
		||||
#define RGBLED_SPLIT { RGBLED_NUM, 0}
 | 
			
		||||
 | 
			
		||||
@ -1,26 +1,24 @@
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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 "sethBarberee.h"
 | 
			
		||||
 | 
			
		||||
extern backlight_config_t backlight_config;
 | 
			
		||||
 | 
			
		||||
enum layers {
 | 
			
		||||
    _QWERTY,
 | 
			
		||||
    _LOWER,
 | 
			
		||||
    _RAISE,
 | 
			
		||||
    _ADJUST
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
  QWERTY = SAFE_RANGE,
 | 
			
		||||
  LOWER,
 | 
			
		||||
  RAISE,
 | 
			
		||||
  ADJUST,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define KC_ KC_TRNS
 | 
			
		||||
 | 
			
		||||
#define KC_LOWR LOWER
 | 
			
		||||
#define KC_RASE RAISE
 | 
			
		||||
#define KC_RST RESET
 | 
			
		||||
#define KC_BL_S BL_STEP
 | 
			
		||||
#define KC_RTOG RGB_TOG
 | 
			
		||||
@ -33,147 +31,54 @@ enum custom_keycodes {
 | 
			
		||||
#define KC_RVAD RGB_VAD
 | 
			
		||||
#define KC_VK VLK_TOG
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
  [_QWERTY] = LAYOUT_kc(
 | 
			
		||||
  //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | 
			
		||||
     ECAP, 1  , 2  , 3  , 4  , 5  ,                6  , 7  , 8  , 9  , 0  ,MINS,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
     TAB , Q  , W  , E  , R  , T  ,                Y  , U  , I  , O  , P  ,DEL ,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
     LSFT, A  , S  , D  , F  , G  ,                H  , J  , K  , L  ,SCLN,QUOT,
 | 
			
		||||
  //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | 
			
		||||
     LCTL, Z  , X  , C  , V  , B  , SPC,      RASE, N  , M  ,COMM,DOT ,SLSH,RSFT,
 | 
			
		||||
  //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | 
			
		||||
                       LGUI,LOWR, SPC,         BSPC ,ENT,LALT
 | 
			
		||||
  //                  `----+----+----'        `----+----+----'
 | 
			
		||||
  [_QWERTY] = LAYOUT_wrapper(
 | 
			
		||||
     KC_ECAP, ________________NUMBER_LEFT________________,                 ________________NUMBER_RIGHT_______________,      KC_MINS,
 | 
			
		||||
     KC_TAB , _________________QWERTY_L1_________________,                 _________________QWERTY_R1_________________,      KC_DEL ,
 | 
			
		||||
     KC_LSFT, _________________QWERTY_L2_________________,                 _________________QWERTY_R2_________________,
 | 
			
		||||
     KC_LCTL, _________________QWERTY_L3_________________, KC_SPC,         KC_RASE, _________________QWERTY_R3_________________,KC_RSFT,
 | 
			
		||||
                                        KC_LGUI, KC_LOWR, KC_SPC,           KC_BSPC , KC_ENT, KC_LALT
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_LOWER] = LAYOUT_kc(
 | 
			
		||||
  //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | 
			
		||||
     TILD,EXLM, AT ,HASH,DLR ,PERC,               CIRC,AMPR,ASTR,LPRN,RPRN,BSPC,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
     RST ,    ,    , UP ,    ,    ,               GRV , P7 , P8 , P9 ,    ,    ,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
     DEL ,    ,LEFT,DOWN,RGHT,LBRC,               RBRC, P4 , P5 , P6 ,PLUS,PIPE,
 | 
			
		||||
  //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | 
			
		||||
     BL_S,    ,    ,    ,    ,LCBR,LPRN,     RPRN,RCBR, P1 , P2 , P3 ,MINS,    ,
 | 
			
		||||
  //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | 
			
		||||
                           ,    ,LPRN ,         DEL ,    , P0
 | 
			
		||||
  //                  `----+----+----'        `----+----+----'
 | 
			
		||||
  [_LOWER] = LAYOUT(
 | 
			
		||||
     KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC,               KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC,
 | 
			
		||||
     KC_RST ,_______,_______, KC_UP ,_______,_______,               KC_GRV , KC_P7 , KC_P8 , KC_P9 ,_______,_______,
 | 
			
		||||
     KC_DEL ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_LBRC,               KC_RBRC, KC_P4 , KC_P5 , KC_P6 ,KC_PLUS,KC_PIPE,
 | 
			
		||||
     KC_BL_S,_______,_______,_______,_______,KC_LCBR,KC_LPRN,       KC_RPRN,KC_RCBR, KC_P1 , KC_P2 , KC_P3 ,KC_MINS,_______,
 | 
			
		||||
                                        _______,_______,KC_LPRN,       KC_DEL ,_______, KC_P0
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_RAISE] = LAYOUT_kc(
 | 
			
		||||
  //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | 
			
		||||
     F12 , F1 , F2 , F3 , F4 , F5 ,                F6 , F7 , F8 , F9 ,F10 ,F11 ,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
         ,    ,    ,    ,    ,    ,                  ,     ,    ,    ,    ,    ,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
         ,MPRV,MNXT,VOLU,PGUP,UNDS,               EQL ,HOME,    ,    ,    ,BSLS,
 | 
			
		||||
  //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | 
			
		||||
     MUTE,MSTP,MPLY,VOLD,PGDN,MINS,    ,         ,PLUS,END ,    ,    ,    ,    ,
 | 
			
		||||
  //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | 
			
		||||
                           ,    ,    ,             ,    ,
 | 
			
		||||
  //                  `----+----+----'        `----+----+----'
 | 
			
		||||
  [_RAISE] = LAYOUT(
 | 
			
		||||
     KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,              KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
 | 
			
		||||
     _______,_______,_______,_______,_______,_______,              _______, _______,_______,_______,_______,_______,
 | 
			
		||||
     _______,KC_MPRV,KC_MNXT,KC_VOLU,KC_PGUP,KC_UNDS,              KC_EQL ,KC_HOME,_______,_______,_______,KC_BSLS,
 | 
			
		||||
     KC_MUTE,KC_MSTP,KC_MPLY,KC_VOLD,KC_PGDN,KC_MINS,_______,      _______,KC_PLUS,KC_END ,_______,_______,_______,_______,
 | 
			
		||||
                                        _______,_______,_______,         _______,_______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_ADJUST] = LAYOUT_kc(
 | 
			
		||||
  [_ADJUST] = LAYOUT(
 | 
			
		||||
  //,----+----+----+----+----+----.              ,----+----+----+----+----+----.
 | 
			
		||||
         ,    ,    ,    ,    ,    ,                   ,    ,    ,    ,    ,    ,
 | 
			
		||||
     _______,_______,_______,_______,_______,_______,               _______,_______,_______,_______,_______,_______,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
     RTOG,RMOD,RHUI,RSAI,RVAI,    ,                   ,    ,    ,    ,    ,    ,
 | 
			
		||||
     KC_RTOG,KC_RMOD,KC_RHUI,KC_RSAI,KC_RVAI,_______,               _______,_______,_______,_______,_______,_______,
 | 
			
		||||
  //|----+----+----+----+----+----|              |----+----+----+----+----+----|
 | 
			
		||||
     VK,      ,RHUD,RSAD,RVAD,    ,                   ,    ,    ,    ,    ,    ,
 | 
			
		||||
     KC_VK,  _______,KC_RHUD,KC_RSAD,KC_RVAD,_______,               _______,_______,_______,_______,_______,_______,
 | 
			
		||||
  //|----+----+----+----+----+----+----.    ,----|----+----+----+----+----+----|
 | 
			
		||||
     BL_S,RST ,    ,    ,    ,    ,    ,         ,    ,    ,    ,    ,    ,    ,
 | 
			
		||||
     KC_BL_S,KC_RST ,_______,_______,_______,_______,_______,     _______,_______,_______,_______,_______,_______,_______,
 | 
			
		||||
  //`----+----+----+--+-+----+----+----/    \----+----+----+----+----+----+----'
 | 
			
		||||
                           ,    ,    ,             ,    ,
 | 
			
		||||
                       _______,_______,_______,         _______,_______, _______
 | 
			
		||||
  //                  `----+----+----'        `----+----+----'
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void keyboard_pre_init_user(void) {
 | 
			
		||||
    // Make sure the red LEDs don't light
 | 
			
		||||
    setPinOutput(D5);
 | 
			
		||||
    writePinHigh(D5);
 | 
			
		||||
 | 
			
		||||
    setPinOutput(B0);
 | 
			
		||||
    writePinHigh(B0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void){
 | 
			
		||||
    rgblight_enable_noeeprom(); // enable the RGBs
 | 
			
		||||
    rgblight_sethsv_noeeprom_red(); // set to red
 | 
			
		||||
    rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // set to breathing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void suspend_power_down_user(void){
 | 
			
		||||
void suspend_power_down_keymap(void){
 | 
			
		||||
    backlight_config.enable = false; // disable LED backlight
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void suspend_wakeup_init_user(void){
 | 
			
		||||
void suspend_wakeup_init_keymap(void){
 | 
			
		||||
    backlight_config.enable = true; // enable LED backlight
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
    case QWERTY:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case LOWER:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_LOWER);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_LOWER);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case RAISE:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_RAISE);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_RAISE);
 | 
			
		||||
        update_tri_layer(_LOWER, _RAISE, _ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
    case ADJUST:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_on(_ADJUST);
 | 
			
		||||
      } else {
 | 
			
		||||
        layer_off(_ADJUST);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t layer_state_set_user(uint32_t state){
 | 
			
		||||
    switch(biton32(state)) {
 | 
			
		||||
      case _QWERTY:
 | 
			
		||||
        rgblight_sethsv_noeeprom(HSV_RED);
 | 
			
		||||
        break;
 | 
			
		||||
      case _LOWER:
 | 
			
		||||
        rgblight_sethsv_noeeprom(HSV_GREEN);
 | 
			
		||||
        break;
 | 
			
		||||
      case _RAISE:
 | 
			
		||||
        rgblight_sethsv_noeeprom(HSV_BLUE);
 | 
			
		||||
        break;
 | 
			
		||||
      case _ADJUST:
 | 
			
		||||
        rgblight_sethsv_noeeprom(HSV_ORANGE);
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
        rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 3);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,5 @@
 | 
			
		||||
BOOTMAGIC_ENABLE = no
 | 
			
		||||
CONSOLE_ENABLE = no
 | 
			
		||||
EXTRAKEY_ENABLE = yes  # Audio control and System control(+450)
 | 
			
		||||
NKRO_ENABLE = yes       # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
BACKLIGHT_ENABLE = yes  # Enable my Red LEDS
 | 
			
		||||
RGBLIGHT_ENABLE = yes  # Enable my RGBS
 | 
			
		||||
NKRO_ENABLE = yes
 | 
			
		||||
VELOCIKEY_ENABLE = yes # I like RGB
 | 
			
		||||
TAP_DANCE_ENABLE = yes # fancy fancy Caps
 | 
			
		||||
LTO_ENABLE = yes # Enable link time optimization
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										30
									
								
								keyboards/keebio/sinc/keymaps/sethBarberee/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/keebio/sinc/keymaps/sethBarberee/config.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2017 Danny Nguyen <danny@keeb.io>
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
/* Use I2C or Serial, not both */
 | 
			
		||||
//
 | 
			
		||||
//#define USE_SERIAL
 | 
			
		||||
//#define USE_I2C
 | 
			
		||||
 | 
			
		||||
//#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
//#   ifdef NORMAL_MODE
 | 
			
		||||
//#       undef NORMAL_MODE
 | 
			
		||||
//#       define NORMAL_MODE RGBLIGHT_MODE_TWINKLE + 4
 | 
			
		||||
//#   endif
 | 
			
		||||
//#endif
 | 
			
		||||
							
								
								
									
										71
									
								
								keyboards/keebio/sinc/keymaps/sethBarberee/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								keyboards/keebio/sinc/keymaps/sethBarberee/keymap.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,71 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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 "sethBarberee.h"
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_80_with_macro_wrapper(...) LAYOUT_80_with_macro(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [_QWERTY] = LAYOUT_80_with_macro_wrapper(
 | 
			
		||||
    KC_MUTE,          KC_ECAP, _________________FUNC_LEFT_________________,         _________________FUNC_RIGHT________________,  KC_F11,  KC_F12,  KC_DEL,  KC_MUTE,
 | 
			
		||||
    KC_F1,   KC_F2,   KC_GRV,  ________________NUMBER_LEFT________________,         ________________NUMBER_RIGHT_______________,KC_MINS, KC_EQL,  _______,  KC_BSPC, KC_HOME,
 | 
			
		||||
    KC_F3,   KC_F4,   KC_TAB,  _________________QWERTY_L1_________________,         _________________QWERTY_R1_________________,  KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
 | 
			
		||||
    KC_F5,   KC_F6,   KC_LSFT, _________________QWERTY_L2_________________,         _________________QWERTY_R2_________________,                   KC_ENT,  KC_PGUP,
 | 
			
		||||
    KC_F7,   KC_F8,   KC_LSFT, _________________QWERTY_L3_________________,         _________________QWERTY_R3_________________,          KC_RSFT, KC_UP,   KC_PGDN,
 | 
			
		||||
    KC_F9,   KC_F10,  KC_LCTL, KC_LALT, KC_LGUI, KC_LOWR,  _______,  KC_SPC,        KC_RASE, KC_BSPC,  KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
 | 
			
		||||
  ),
 | 
			
		||||
  [_LOWER] = LAYOUT_80_with_macro_wrapper(
 | 
			
		||||
    RGB_TOG,          _______, _______, _______, _______, _______, _______,           _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
 | 
			
		||||
    RGB_HUI, RGB_HUD, KC_GESC, _________________FUNC_LEFT_________________,           _________________FUNC_RIGHT________________,  KC_F11,  KC_F12,  _______, _______, KC_MPRV,
 | 
			
		||||
    RGB_SAI, RGB_SAD, RGB_TOG, _______, _______, _______, _______, KC_LPRN,           KC_RPRN, _______, _______, _______, _______, _______, _______, _______, KC_MNXT,
 | 
			
		||||
    RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_LCBR,           KC_RCBR, _______, _______, _______, _______, _______,          _______, KC_VOLU,
 | 
			
		||||
    RGB_MOD, RGB_RMOD, _______, _______, _______, _______, _______, KC_LBRC,          KC_RBRC, _______, _______, _______, _______, _______, _______, KC_VOLD,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,           _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
 | 
			
		||||
  [_RAISE] = LAYOUT_80_with_macro_wrapper(
 | 
			
		||||
    _______,          _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    RESET,   KC_VRSN, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______,          _______, _______,
 | 
			
		||||
    _______, _______, _______,          _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
  [_ADJUST] = LAYOUT_80_with_macro_wrapper(
 | 
			
		||||
    _______,          _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______,          _______, _______,
 | 
			
		||||
    _______, _______, _______,          _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______, _______, _______
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void encoder_update_user(uint8_t index, bool clockwise) {
 | 
			
		||||
    if (index == 0) {
 | 
			
		||||
        if (clockwise) {
 | 
			
		||||
            tap_code(KC_PGDN);
 | 
			
		||||
        } else {
 | 
			
		||||
            tap_code(KC_PGUP);
 | 
			
		||||
        }
 | 
			
		||||
    } else if (index == 1) {
 | 
			
		||||
        if (clockwise) {
 | 
			
		||||
            tap_code(KC_VOLU);
 | 
			
		||||
        } else {
 | 
			
		||||
            tap_code(KC_VOLD);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								keyboards/keebio/sinc/keymaps/sethBarberee/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/keebio/sinc/keymaps/sethBarberee/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
BACKLIGHT_ENABLE=no
 | 
			
		||||
CONSOLE_ENABLE=no
 | 
			
		||||
TAP_DANCE_ENABLE=yes
 | 
			
		||||
@ -1 +1,2 @@
 | 
			
		||||
BOOTMAGIC_ENABLE = lite
 | 
			
		||||
VIA_ENABLE = yes
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,69 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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
 | 
			
		||||
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
#   define RGBLIGHT_SLEEP
 | 
			
		||||
# ifndef RGBLIGHT_HUE_STEP
 | 
			
		||||
#   define RGBLIGHT_HUE_STEP 8
 | 
			
		||||
#endif
 | 
			
		||||
# ifndef RGBLIGHT_SAT_STEPT
 | 
			
		||||
#   define RGBLIGHT_SAT_STEP 8
 | 
			
		||||
#endif
 | 
			
		||||
# ifndef RGBLIGHT_VAL_STEP
 | 
			
		||||
#   define RGBLIGHT_VAL_STEP 8
 | 
			
		||||
#endif
 | 
			
		||||
// Trim animations I don't use/like
 | 
			
		||||
#   ifdef RGBLIGHT_ANIMATIONS
 | 
			
		||||
#       undef RGBLIGHT_ANIMATIONS
 | 
			
		||||
#   endif
 | 
			
		||||
#   define RGBLIGHT_EFFECT_BREATHING
 | 
			
		||||
#   define RGBLIGHT_EFFECT_STATIC_GRADIENT
 | 
			
		||||
#   define RGBLIGHT_EFFECT_TWINKLE
 | 
			
		||||
#   ifndef CAPS_LOCK_MODE
 | 
			
		||||
#       define CAPS_LOCK_MODE 1
 | 
			
		||||
#       define CAPS_LOCK_MODE RGBLIGHT_MODE_STATIC_LIGHT
 | 
			
		||||
#   endif
 | 
			
		||||
#   ifndef NORMAL_MODE
 | 
			
		||||
#       define NORMAL_MODE 4
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
 | 
			
		||||
#ifndef AUDIO_ENABLE
 | 
			
		||||
#       define NO_MUSIC_MODE
 | 
			
		||||
#endif // AUDIO_ENABLE
 | 
			
		||||
 | 
			
		||||
#define FORCE_NKRO // Force NKRO on by default
 | 
			
		||||
 | 
			
		||||
// Totally taken from @drashna's userspace
 | 
			
		||||
#ifdef TAPPING_TERM
 | 
			
		||||
#    undef TAPPING_TERM
 | 
			
		||||
#endif  // TAPPING_TERM
 | 
			
		||||
//
 | 
			
		||||
// Keeping these commented for examples when I want to tweak per keyboard
 | 
			
		||||
// but setting a default across my boards for now
 | 
			
		||||
//
 | 
			
		||||
//#if defined(KEYBOARD_ergodox_ez)
 | 
			
		||||
//#    define TAPPING_TERM 185
 | 
			
		||||
#if defined(KEYBOARD_crkbd)
 | 
			
		||||
#    define TAPPING_TERM 185
 | 
			
		||||
#else
 | 
			
		||||
#    define TAPPING_TERM 200
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Disable unused and unneeded features to reduce on firmware size */
 | 
			
		||||
#ifdef LOCKING_SUPPORT_ENABLE
 | 
			
		||||
#    undef LOCKING_SUPPORT_ENABLE
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef LOCKING_RESYNC_ENABLE
 | 
			
		||||
#    undef LOCKING_RESYNC_ENABLE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										52
									
								
								users/sethBarberee/rgb_light.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								users/sethBarberee/rgb_light.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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 "rgb_light.h"
 | 
			
		||||
 | 
			
		||||
#if defined(RGBLIGHT_ENABLE)
 | 
			
		||||
layer_state_t layer_state_set_rgb_light(layer_state_t state){
 | 
			
		||||
    switch(get_highest_layer(state)) {
 | 
			
		||||
      case _QWERTY:
 | 
			
		||||
        rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
 | 
			
		||||
        break;
 | 
			
		||||
      case _LOWER:
 | 
			
		||||
        rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
 | 
			
		||||
        break;
 | 
			
		||||
      case _RAISE:
 | 
			
		||||
        rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_BREATHING + 3);
 | 
			
		||||
        break;
 | 
			
		||||
      case _ADJUST:
 | 
			
		||||
        rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_BREATHING + 3);
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
        rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_TWINKLE + 3);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
 | 
			
		||||
    rgblight_sethsv_noeeprom(hue, sat, val);
 | 
			
		||||
    // wait_us(175);  // Add a slight delay between color and mode to ensure it's processed correctly
 | 
			
		||||
    rgblight_mode_noeeprom(mode);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_rgb_light(void)
 | 
			
		||||
{
 | 
			
		||||
    layer_state_set_rgb_light(layer_state);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								users/sethBarberee/rgb_light.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								users/sethBarberee/rgb_light.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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
 | 
			
		||||
#include "sethBarberee.h"
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_rgb_light(layer_state_t state);
 | 
			
		||||
void keyboard_post_init_rgb_light(void);
 | 
			
		||||
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode);
 | 
			
		||||
@ -1 +1,10 @@
 | 
			
		||||
SRC += sethBarberee.c
 | 
			
		||||
 | 
			
		||||
# Add in custom tap dances when tap dance is enabled
 | 
			
		||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
 | 
			
		||||
	SRC += tap_dance.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
 | 
			
		||||
	SRC += rgb_light.c
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
@ -1,45 +1,85 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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 "sethBarberee.h"
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
#ifdef TAP_DANCE_ENABLE
 | 
			
		||||
#include "version.h"
 | 
			
		||||
 | 
			
		||||
// Initialize it now
 | 
			
		||||
tap caps_status = {
 | 
			
		||||
    .toggled = false,
 | 
			
		||||
    .toggle_mode = CAPS_LOCK_MODE,
 | 
			
		||||
    .normal_mode = NORMAL_MODE
 | 
			
		||||
};
 | 
			
		||||
__attribute__ ((weak)) void keyboard_pre_init_keymap(void) {}
 | 
			
		||||
 | 
			
		||||
void dance_ecap_finished (qk_tap_dance_state_t *state, void *user_data){
 | 
			
		||||
    if(state->count == 1){
 | 
			
		||||
        register_code(KC_ESC);
 | 
			
		||||
    } else {
 | 
			
		||||
        register_code(KC_CAPS);
 | 
			
		||||
        if(!caps_status.toggled){
 | 
			
		||||
            // Toggling caps so indicate
 | 
			
		||||
            caps_status.toggled =  true;
 | 
			
		||||
            rgblight_mode_noeeprom(caps_status.toggle_mode);
 | 
			
		||||
        } else {
 | 
			
		||||
            // Turning off so return to normal mode
 | 
			
		||||
            caps_status.toggled = false;
 | 
			
		||||
            rgblight_mode_noeeprom(caps_status.normal_mode);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_ecap_reset (qk_tap_dance_state_t *state, void *user_data){
 | 
			
		||||
    if(state->count == 1){
 | 
			
		||||
        unregister_code(KC_ESC);
 | 
			
		||||
    } else {
 | 
			
		||||
        unregister_code(KC_CAPS);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//Tap Dance Definitions
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
  //Tap once for Esc, twice for Caps Lock
 | 
			
		||||
  [TD_ECAP]  = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset),
 | 
			
		||||
// Other declarations would go here, separated by commas, if you have them
 | 
			
		||||
};
 | 
			
		||||
void keyboard_pre_init_user(void){
 | 
			
		||||
#if defined(BOOTLOADER_CATERINA)
 | 
			
		||||
    // Make sure the red LEDs don't light
 | 
			
		||||
    setPinOutput(D5);
 | 
			
		||||
    writePinHigh(D5);
 | 
			
		||||
 | 
			
		||||
    setPinOutput(B0);
 | 
			
		||||
    writePinHigh(B0);
 | 
			
		||||
#endif
 | 
			
		||||
    keyboard_pre_init_keymap();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__ ((weak)) layer_state_t layer_state_set_keymap (layer_state_t state) { return state; }
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state){
 | 
			
		||||
 | 
			
		||||
    if (!is_keyboard_master()) {
 | 
			
		||||
        return state;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
 | 
			
		||||
#if defined(RGBLIGHT_ENABLE)
 | 
			
		||||
    state = layer_state_set_rgb_light(state);
 | 
			
		||||
#endif
 | 
			
		||||
    return layer_state_set_keymap(state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__ ((weak)) void keyboard_post_init_keymap(void) {}
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void)
 | 
			
		||||
{
 | 
			
		||||
#if defined(RGBLIGHT_ENABLE)
 | 
			
		||||
    keyboard_post_init_rgb_light();
 | 
			
		||||
#endif
 | 
			
		||||
    keyboard_post_init_keymap();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak)) void suspend_power_down_keymap(void) {}
 | 
			
		||||
 | 
			
		||||
void suspend_power_down_user(void) {
 | 
			
		||||
#ifdef OLED_DRIVER_ENABLE
 | 
			
		||||
    oled_off();
 | 
			
		||||
#endif
 | 
			
		||||
    suspend_power_down_keymap();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
 | 
			
		||||
 | 
			
		||||
void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); }
 | 
			
		||||
 | 
			
		||||
__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true;}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
    if (process_record_keymap(keycode, record))
 | 
			
		||||
    {
 | 
			
		||||
        switch (keycode) {
 | 
			
		||||
            case KC_VRSN:  // Prints firmware version
 | 
			
		||||
                if (record->event.pressed) {
 | 
			
		||||
                    SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,20 +1,50 @@
 | 
			
		||||
#ifndef USERSPACE
 | 
			
		||||
#define USERSPACE
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
#ifdef TAP_DANCE_ENABLE // only enable for tap dances
 | 
			
		||||
    enum {
 | 
			
		||||
        TD_ECAP = 0,
 | 
			
		||||
#include "wrappers.h"
 | 
			
		||||
 | 
			
		||||
enum layers {
 | 
			
		||||
    _QWERTY,
 | 
			
		||||
    _LOWER,
 | 
			
		||||
    _RAISE,
 | 
			
		||||
    _ADJUST
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
    #define KC_ECAP TD(TD_ECAP)
 | 
			
		||||
enum userspace_keycodes {
 | 
			
		||||
    KC_VRSN = SAFE_RANGE,
 | 
			
		||||
    NEW_SAFE_RANGE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
    typedef struct {
 | 
			
		||||
        bool toggled; // store whether we have toggled caps lock
 | 
			
		||||
        int toggle_mode; // idk why but maybe do something with this..
 | 
			
		||||
        int normal_mode;
 | 
			
		||||
    } tap;
 | 
			
		||||
#define KC_LOWR MO(_LOWER)
 | 
			
		||||
#define KC_RASE MO(_RAISE)
 | 
			
		||||
 | 
			
		||||
#ifdef TAP_DANCE_ENABLE
 | 
			
		||||
#   include "tap_dance.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
#   include "rgb_light.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void keyboard_pre_init_keymap(void);
 | 
			
		||||
void keyboard_post_init_keymap(void);
 | 
			
		||||
void suspend_power_down_keymap(void);
 | 
			
		||||
void suspend_wakeup_init_keymap(void);
 | 
			
		||||
layer_state_t layer_state_set_keymap (layer_state_t state);
 | 
			
		||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										89
									
								
								users/sethBarberee/tap_dance.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								users/sethBarberee/tap_dance.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,89 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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 "tap_dance.h"
 | 
			
		||||
 | 
			
		||||
// Shamelessly stolen from QMK Docs
 | 
			
		||||
int cur_dance (qk_tap_dance_state_t *state) {
 | 
			
		||||
  if (state->count == 1) {
 | 
			
		||||
    if (state->interrupted || !state->pressed) {
 | 
			
		||||
      return SINGLE_TAP;
 | 
			
		||||
    } else {
 | 
			
		||||
      return SINGLE_HOLD;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  else if (state->count == 2) {
 | 
			
		||||
    if (state->interrupted) return DOUBLE_SINGLE_TAP;
 | 
			
		||||
    else if (state->pressed) return DOUBLE_HOLD;
 | 
			
		||||
    else return DOUBLE_TAP;
 | 
			
		||||
  }
 | 
			
		||||
  if (state->count == 3) {
 | 
			
		||||
    if (state->interrupted || !state->pressed)  return TRIPLE_TAP;
 | 
			
		||||
    else return TRIPLE_HOLD;
 | 
			
		||||
  }
 | 
			
		||||
  else return 8;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Initialize it now
 | 
			
		||||
tap caps_status = {
 | 
			
		||||
    .toggled = false,
 | 
			
		||||
    .state = 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void dance_ecap_finished (qk_tap_dance_state_t *state, void *user_data){
 | 
			
		||||
    caps_status.state = cur_dance(state);
 | 
			
		||||
    switch(caps_status.state){
 | 
			
		||||
        case SINGLE_TAP:
 | 
			
		||||
            tap_code(KC_ESC);
 | 
			
		||||
            break;
 | 
			
		||||
        case SINGLE_HOLD:
 | 
			
		||||
            register_code(KC_LCTRL);
 | 
			
		||||
            break;
 | 
			
		||||
        case DOUBLE_TAP:
 | 
			
		||||
            tap_code(KC_CAPS);
 | 
			
		||||
            if(!caps_status.toggled){
 | 
			
		||||
                // Toggling caps so indicate
 | 
			
		||||
                caps_status.toggled =  true;
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
                // Save mode we can from
 | 
			
		||||
                caps_status.normal_mode = rgblight_get_mode();
 | 
			
		||||
                rgblight_mode_noeeprom(CAPS_LOCK_MODE);
 | 
			
		||||
#endif
 | 
			
		||||
            } else {
 | 
			
		||||
                // Turning off so return to normal mode
 | 
			
		||||
                caps_status.toggled = false;
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
                rgblight_mode_noeeprom(caps_status.normal_mode);
 | 
			
		||||
#endif
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void dance_ecap_reset (qk_tap_dance_state_t *state, void *user_data){
 | 
			
		||||
    if(caps_status.state == SINGLE_HOLD){
 | 
			
		||||
        unregister_code(KC_LCTRL);
 | 
			
		||||
    }
 | 
			
		||||
    caps_status.state = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//Tap Dance Definitions
 | 
			
		||||
qk_tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
  //Tap once for Esc, twice for Caps Lock
 | 
			
		||||
  [TD_ECAP]  = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset),
 | 
			
		||||
// Other declarations would go here, separated by commas, if you have them
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										43
									
								
								users/sethBarberee/tap_dance.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								users/sethBarberee/tap_dance.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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
 | 
			
		||||
#include "sethBarberee.h"
 | 
			
		||||
 | 
			
		||||
//Define a type for as many tap dance states as you need
 | 
			
		||||
enum {
 | 
			
		||||
    SINGLE_TAP = 1,
 | 
			
		||||
    SINGLE_HOLD = 2,
 | 
			
		||||
    DOUBLE_TAP = 3,
 | 
			
		||||
    DOUBLE_HOLD = 4,
 | 
			
		||||
    DOUBLE_SINGLE_TAP = 5, //send two single taps
 | 
			
		||||
    TRIPLE_TAP = 6,
 | 
			
		||||
    TRIPLE_HOLD = 7
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    TD_ECAP = 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define KC_ECAP TD(TD_ECAP)
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    bool toggled; // store whether we have toggled caps lock
 | 
			
		||||
#ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    int normal_mode;
 | 
			
		||||
#endif // RGBLIGHT_ENABLE
 | 
			
		||||
    int state;
 | 
			
		||||
} tap;
 | 
			
		||||
							
								
								
									
										55
									
								
								users/sethBarberee/wrappers.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								users/sethBarberee/wrappers.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
			
		||||
 /* Copyright 2021 SethBarberee <seth.barberee@gmail.com>
 | 
			
		||||
  *
 | 
			
		||||
  * 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
 | 
			
		||||
 | 
			
		||||
#include "sethBarberee.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Since our quirky block definitions are basically a list of comma separated
 | 
			
		||||
    arguments, we need a wrapper in order for these definitions to be
 | 
			
		||||
    expanded before being used as arguments to the LAYOUT_xxx macro.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Blocks for each of the four major keyboard layouts
 | 
			
		||||
    Organized so we can quickly adapt and modify all of them
 | 
			
		||||
    at once, rather than for each keyboard, one at a time.
 | 
			
		||||
    And this allows for much cleaner blocks in the keymaps.
 | 
			
		||||
    For instance Tap/Hold for Control on all of the layouts
 | 
			
		||||
 | 
			
		||||
    NOTE: These are all the same length.  If you do a search/replace
 | 
			
		||||
      then you need to add/remove underscores to keep the
 | 
			
		||||
      lengths consistent.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
#define _________________QWERTY_L1_________________       KC_Q,    KC_W,    KC_E,    KC_R,    KC_T
 | 
			
		||||
#define _________________QWERTY_L2_________________       KC_A,    KC_S,    KC_D,    KC_F,    KC_G
 | 
			
		||||
#define _________________QWERTY_L3_________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B
 | 
			
		||||
 | 
			
		||||
#define _________________QWERTY_R1_________________       KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
 | 
			
		||||
#define _________________QWERTY_R2_________________       KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT
 | 
			
		||||
#define _________________QWERTY_R3_________________       KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH
 | 
			
		||||
 | 
			
		||||
#define ________________NUMBER_LEFT________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5
 | 
			
		||||
#define ________________NUMBER_RIGHT_______________       KC_6,    KC_7,    KC_8,    KC_9,    KC_0
 | 
			
		||||
#define _________________FUNC_LEFT_________________       KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
 | 
			
		||||
#define _________________FUNC_RIGHT________________       KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
 | 
			
		||||
 | 
			
		||||
#define ___________________BLANK___________________       _______, _______, _______, _______, _______
 | 
			
		||||
 | 
			
		||||
// clang-format on
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user