~ruther/qmk_firmware

53f11668a3399ff1bdf82902a7717832831219bf — Garret G 4 years ago 2ef68a8
[Keyboard] kingly_keys/ave (#10042)

* Add configurator support for "The Ave." keyboard

* Update readme.md

* update misc nomenclature

* add punctuation

* fix miss-placed "0"

* update README.md

* del. duplicate "F11" in visual layout information

* Split PCB configurations into subfolders

* update layer template to new matrix title

* rm primary <keyboard>.c / <keyboard>.h files

* add new end line to both .h subfolder fiels

* Apply suggestions from code review

* tested update to RGB code

* update rgb code

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Update rules.mk

* Update rules.mk

* Delete rules.mk

* Delete rules.mk

* Update rules.mk

* Update config.h

* Update config.h

* Update keymap.c

* Update ortho.c

* Update ortho.h

* Update config.h

* Update keymap.c

* Update staggered.c

* Update staggered.h

* Apply suggestions from code review

* Update config.h

* Update keymap.c

* move and duplicate rules.mk file

* Update keyboards/kingly_keys/ave/readme.md

* Update config.h

* Update keyboards/kingly_keys/ave/config.h
A keyboards/kingly_keys/ave/config.h => keyboards/kingly_keys/ave/config.h +50 -0
@@ 0,0 1,50 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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 "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID       0x4B4B // "KK"
#define PRODUCT_ID      0x1225
#define DEVICE_VER      0x0011
#define MANUFACTURER    Kingly-Keys
#define PRODUCT         The Ave.

/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13


#define ENCODERS_PAD_A { B2 }
#define ENCODERS_PAD_B { B1 }

#define MATRIX_ROW_PINS { B3, F4, F7, F6, F5 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0}
#define UNUSED_PINS

/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

A keyboards/kingly_keys/ave/ortho/info.json => keyboards/kingly_keys/ave/ortho/info.json +183 -0
@@ 0,0 1,183 @@
{
  "keyboard_name": "The Ave. (Ortholinear Ed. PCB)",
  "url": "",
  "maintainer": "the-royal",
  "width": 13.5,
  "height": 5.5,
  "layouts": {
    "LAYOUT_ortho_all": {
       "layout": [
        {"label":"k001", "x":0.00, "y":0.00},
        {"label":"k002", "x":1.50, "y":0.00},
        {"label":"k011", "x":10.5, "y":0.00},
        {"label":"k012", "x":11.5, "y":0.00},
        {"label":"k013", "x":12.5, "y":0.00},
        {"label":"k101", "x":0.00, "y":1.50},
        {"label":"k102", "x":1.50, "y":1.50},
        {"label":"k103", "x":2.50, "y":1.50},
        {"label":"k104", "x":3.50, "y":1.50},
        {"label":"k105", "x":4.50, "y":1.50},
        {"label":"k106", "x":5.50, "y":1.50},
        {"label":"k107", "x":6.50, "y":1.50},
        {"label":"k108", "x":7.50, "y":1.50},
        {"label":"k109", "x":8.50, "y":1.50},
        {"label":"k110", "x":9.50, "y":1.50},
        {"label":"k111", "x":10.5, "y":1.50},
        {"label":"k112", "x":11.5, "y":1.50},
        {"label":"k113", "x":12.5, "y":1.50},
        {"label":"k201", "x":0.00, "y":2.50},
        {"label":"k202", "x":1.50, "y":2.50},
        {"label":"k203", "x":2.50, "y":2.50},
        {"label":"k204", "x":3.50, "y":2.50},
        {"label":"k205", "x":4.50, "y":2.50},
        {"label":"k206", "x":5.50, "y":2.50},
        {"label":"k207", "x":6.50, "y":2.50},
        {"label":"k208", "x":7.50, "y":2.50},
        {"label":"k209", "x":8.50, "y":2.50},
        {"label":"k210", "x":9.50, "y":2.50},
        {"label":"k211", "x":10.5, "y":2.50},
        {"label":"k212", "x":11.5, "y":2.50},
        {"label":"k213", "x":12.5, "y":2.50},
        {"label":"k301", "x":0.00, "y":3.50},
        {"label":"k302", "x":1.50, "y":3.50},
        {"label":"k303", "x":2.50, "y":3.50},
        {"label":"k304", "x":3.50, "y":3.50},
        {"label":"k305", "x":4.50, "y":3.50},
        {"label":"k306", "x":5.50, "y":3.50},
        {"label":"k307", "x":6.50, "y":3.50},
        {"label":"k308", "x":7.50, "y":3.50},
        {"label":"k309", "x":8.50, "y":3.50},
        {"label":"k310", "x":9.50, "y":3.50},
        {"label":"k311", "x":10.5, "y":3.50},
        {"label":"k312", "x":11.5, "y":3.50},
        {"label":"k313", "x":12.5, "y":3.50},
        {"label":"k401", "x":0.00, "y":4.50},
        {"label":"k402", "x":1.50, "y":4.50},
        {"label":"k403", "x":2.50, "y":4.50},
        {"label":"k404", "x":3.50, "y":4.50},
        {"label":"k405", "x":4.50, "y":4.50},
        {"label":"k406", "x":5.50, "y":4.50},
        {"label":"k407", "x":6.50, "y":4.50},
        {"label":"k408", "x":7.50, "y":4.50},
        {"label":"k409", "x":8.50, "y":4.50},
        {"label":"k410", "x":9.50, "y":4.50},
        {"label":"k411", "x":10.5, "y":4.50},
        {"label":"k412", "x":11.5, "y":4.50},
        {"label":"k413", "x":12.5, "y":4.50}
      ]
    },
    "LAYOUT_ortho_2x2u": {
        "layout": [
         {"label":"k001", "x":0.00, "y":0.00},
         {"label":"k002", "x":1.50, "y":0.00},
         {"label":"k011", "x":10.5, "y":0.00},
         {"label":"k012", "x":11.5, "y":0.00},
         {"label":"k013", "x":12.5, "y":0.00},
         {"label":"k101", "x":0.00, "y":1.50},
         {"label":"k102", "x":1.50, "y":1.50},
         {"label":"k103", "x":2.50, "y":1.50},
         {"label":"k104", "x":3.50, "y":1.50},
         {"label":"k105", "x":4.50, "y":1.50},
         {"label":"k106", "x":5.50, "y":1.50},
         {"label":"k107", "x":6.50, "y":1.50},
         {"label":"k108", "x":7.50, "y":1.50},
         {"label":"k109", "x":8.50, "y":1.50},
         {"label":"k110", "x":9.50, "y":1.50},
         {"label":"k111", "x":10.5, "y":1.50},
         {"label":"k112", "x":11.5, "y":1.50},
         {"label":"k113", "x":12.5, "y":1.50},
         {"label":"k201", "x":0.00, "y":2.50},
         {"label":"k202", "x":1.50, "y":2.50},
         {"label":"k203", "x":2.50, "y":2.50},
         {"label":"k204", "x":3.50, "y":2.50},
         {"label":"k205", "x":4.50, "y":2.50},
         {"label":"k206", "x":5.50, "y":2.50},
         {"label":"k207", "x":6.50, "y":2.50},
         {"label":"k208", "x":7.50, "y":2.50},
         {"label":"k209", "x":8.50, "y":2.50},
         {"label":"k210", "x":9.50, "y":2.50},
         {"label":"k211", "x":10.5, "y":2.50},
         {"label":"k212", "x":11.5, "y":2.50},
         {"label":"k213", "x":12.5, "y":2.50},
         {"label":"k301", "x":0.00, "y":3.50},
         {"label":"k302", "x":1.50, "y":3.50},
         {"label":"k303", "x":2.50, "y":3.50},
         {"label":"k304", "x":3.50, "y":3.50},
         {"label":"k305", "x":4.50, "y":3.50},
         {"label":"k306", "x":5.50, "y":3.50},
         {"label":"k307", "x":6.50, "y":3.50},
         {"label":"k308", "x":7.50, "y":3.50},
         {"label":"k309", "x":8.50, "y":3.50},
         {"label":"k310", "x":9.50, "y":3.50},
         {"label":"k311", "x":10.5, "y":3.50},
         {"label":"k312", "x":11.5, "y":3.50},
         {"label":"k313", "x":12.5, "y":3.50},
         {"label":"k401", "x":0.00, "y":4.50},
         {"label":"k402", "x":1.50, "y":4.50},
         {"label":"k403", "x":2.50, "y":4.50},
         {"label":"k404", "x":3.50, "y":4.50},
         {"label":"k405", "x":4.50, "y":4.50},
         {"label":"k406", "x":5.50, "y":4.50, "w":2.00},
         {"label":"k409", "x":7.50, "y":4.50, "w":2.00},
         {"label":"k410", "x":9.50, "y":4.50},
         {"label":"k411", "x":10.5, "y":4.50},
         {"label":"k412", "x":11.5, "y":4.50},
         {"label":"k413", "x":12.5, "y":4.50}
       ]
     },
     "LAYOUT_ortho_big_boy": {
        "layout": [
         {"label":"k001", "x":0.00, "y":0.00},
         {"label":"k002", "x":1.50, "y":0.00},
         {"label":"k011", "x":10.5, "y":0.00},
         {"label":"k012", "x":11.5, "y":0.00},
         {"label":"k013", "x":12.5, "y":0.00},
         {"label":"k101", "x":0.00, "y":1.50},
         {"label":"k102", "x":1.50, "y":1.50},
         {"label":"k103", "x":2.50, "y":1.50},
         {"label":"k104", "x":3.50, "y":1.50},
         {"label":"k105", "x":4.50, "y":1.50},
         {"label":"k106", "x":5.50, "y":1.50},
         {"label":"k107", "x":6.50, "y":1.50},
         {"label":"k108", "x":7.50, "y":1.50},
         {"label":"k109", "x":8.50, "y":1.50},
         {"label":"k110", "x":9.50, "y":1.50},
         {"label":"k111", "x":10.5, "y":1.50},
         {"label":"k112", "x":11.5, "y":1.50},
         {"label":"k113", "x":12.5, "y":1.50},
         {"label":"k201", "x":0.00, "y":2.50},
         {"label":"k202", "x":1.50, "y":2.50},
         {"label":"k203", "x":2.50, "y":2.50},
         {"label":"k204", "x":3.50, "y":2.50},
         {"label":"k205", "x":4.50, "y":2.50},
         {"label":"k206", "x":5.50, "y":2.50},
         {"label":"k207", "x":6.50, "y":2.50},
         {"label":"k208", "x":7.50, "y":2.50},
         {"label":"k209", "x":8.50, "y":2.50},
         {"label":"k210", "x":9.50, "y":2.50},
         {"label":"k211", "x":10.5, "y":2.50},
         {"label":"k212", "x":11.5, "y":2.50},
         {"label":"k213", "x":12.5, "y":2.50},
         {"label":"k301", "x":0.00, "y":3.50},
         {"label":"k302", "x":1.50, "y":3.50},
         {"label":"k303", "x":2.50, "y":3.50},
         {"label":"k304", "x":3.50, "y":3.50},
         {"label":"k305", "x":4.50, "y":3.50},
         {"label":"k306", "x":5.50, "y":3.50},
         {"label":"k307", "x":6.50, "y":3.50},
         {"label":"k308", "x":7.50, "y":3.50},
         {"label":"k309", "x":8.50, "y":3.50},
         {"label":"k310", "x":9.50, "y":3.50},
         {"label":"k311", "x":10.5, "y":3.50},
         {"label":"k312", "x":11.5, "y":3.50},
         {"label":"k313", "x":12.5, "y":3.50},
         {"label":"k401", "x":0.00, "y":4.50},
         {"label":"k402", "x":1.50, "y":4.50},
         {"label":"k403", "x":2.50, "y":4.50, "w":1.50},
         {"label":"k404", "x":4.00, "y":4.50, "w":7.00},
         {"label":"k405", "x":11.0, "y":4.50, "w":1.50},
         {"label":"k413", "x":12.5, "y":4.50}
       ]
     }
   }
}

A keyboards/kingly_keys/ave/ortho/keymaps/default/config.h => keyboards/kingly_keys/ave/ortho/keymaps/default/config.h +32 -0
@@ 0,0 1,32 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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 TAPPING_TERM_PER_KEY

#ifdef RGBLIGHT_ENABLE
    /* ws2812 RGB LED */
    #define RGB_DI_PIN B7
    #define RGBLED_NUM 2   // Number of LEDs
    
    #define RGBLIGHT_EFFECT_BREATHING
/*  #define RGBLIGHT_HUE_STEP 6
*   #define RGBLIGHT_SAT_STEP 4
*   #define RGBLIGHT_VAL_STEP 4
*/
#endif

A keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c => keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c +239 -0
@@ 0,0 1,239 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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

enum avenue_layers {
  _QWERTY,
  _LOWER,
  _RAISE,
  _FUNCTION
};



//Tap Dance Declarations:
enum avenue_tapcodes {
  TD_RST,
  TD_DBQT,
};

void dance_rst_reset (qk_tap_dance_state_t *state, void *user_data) { // *Line_Note.001
  if (state->count >= 2) {
    reset_keyboard();
    reset_tap_dance(state);
  }
}

//Tap Dance Functions:
qk_tap_dance_action_t tap_dance_actions[] = {
 [TD_RST] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, NULL, dance_rst_reset), // References "dance_rst_reset" (*Line_Note.001)
 [TD_DBQT] = ACTION_TAP_DANCE_DOUBLE (KC_QUOTE, KC_DQT)
};



// Keymap Customization:
#define LOWR  MO(_LOWER)
#define RISE  MO(_RAISE)
#define FN    MO(_FUNCTION)
#define GUI   KC_LGUI
#define ALT   KC_LALT
#define SPACE KC_SPACE

    /*
    *   β”Œβ”€β”€β”€β”€β”
    *   β”‚    β”‚ = "TRANSPARENT" KEY LOCATION
    *   β””β”€β”€β”€β”€β”˜
    */

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    /* _QWERTY (Base)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚MUTEβ”‚ β”‚Esc β”‚                                       β”‚ \  β”‚ -  β”‚ =  β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚Homeβ”‚ β”‚Tab β”‚ Q  β”‚ W  β”‚ E  β”‚ R  β”‚ T  β”‚ Y  β”‚ U  β”‚ I  β”‚ O  β”‚ P  β”‚BkSpβ”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚PgUpβ”‚ β”‚CAPSβ”‚ A  β”‚ S  β”‚ D  β”‚ F  β”‚ G  β”‚ H  β”‚ J  β”‚ K  β”‚ L  β”‚ ;  β”‚ '  β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚PgDnβ”‚ β”‚Shftβ”‚ Z  β”‚ X  β”‚ C  β”‚ V  β”‚ B  β”‚ N  β”‚ M  β”‚ ,  β”‚ .  β”‚ /  β”‚Entrβ”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚End β”‚ β”‚CTL β”‚GUI β”‚ALT β”‚FUNCβ”‚LOWRβ”‚    β”‚    β”‚RISEβ”‚Leftβ”‚Downβ”‚ Up β”‚Rghtβ”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    */
    [_QWERTY] = LAYOUT_ortho_all(
        KC_MUTE,      KC_ESC,                                                                       KC_BSLS,   KC_MINUS,   KC_EQUAL,
        KC_HOME,      KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,      KC_O,      KC_P,       KC_BSPC,
        KC_PGUP,      KC_LCTL,   KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,      KC_L,      KC_SCLN,    KC_QUOT,
        KC_PGDN,      KC_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,   KC_DOT,    KC_SLSH,    KC_ENT,
        KC_END,       KC_DEL,    GUI,    ALT,    FN,     LOWR,   SPACE,  SPACE,  RISE,   KC_LEFT,   KC_DOWN,   KC_UP,      KC_RIGHT
    ),

    /* _LOWER (Media / Symbols / Punctuation)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚ // β”‚ β”‚PRNTβ”‚                                       β”‚ [  β”‚ ]  β”‚ `  β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚PLAYβ”‚ β”‚    β”‚ 1  β”‚ 2  β”‚ 3  β”‚ 4  β”‚ 5  β”‚ 6  β”‚ 7  β”‚ 8  β”‚ 9  β”‚ 0  β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚NEXTβ”‚ β”‚    β”‚ !  β”‚ @  β”‚ #  β”‚ $  β”‚ %  β”‚ ^  β”‚ &  β”‚ *  β”‚ (  β”‚ )  β”‚ "  β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚PREVβ”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚STOPβ”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    */
    [_LOWER] = LAYOUT_ortho_all(
        _______,      _______,                                                                                           KC_LBRC,   KC_RBRC,   KC_GRAVE,
        KC_MPLY,      _______,   KC_1,      KC_2,      KC_3,      KC_4,      KC_5,      KC_6,      KC_7,      KC_8,      KC_9,      KC_0,      _______,
        KC_MNXT,      _______,   KC_EXLM,   KC_AT,     KC_HASH,   KC_DLR,    KC_PERC,   KC_CIRC,   KC_AMPR,   KC_ASTR,   KC_LPRN,   KC_RPRN,   KC_DQT,
        KC_MPRV,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
        KC_MSTP,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    ),

    /* _RAISE (Misc Modifiers / Extended Punctuation)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚PRNTβ”‚ β”‚    β”‚                                       β”‚ {  β”‚ }  β”‚ ~  β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚CAPSβ”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    */
    [_RAISE] = LAYOUT_ortho_all(
        KC_PSCR,      _______,                                                                                           KC_LCBR,   KC_RCBR,   KC_TILD,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
        _______,      KC_CAPS,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    ),

    /* _FUNCTION (F-Row / DFU Reset / RGB Toggle)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚RSETβ”‚ β”‚RGB β”‚                                       β”‚F11 β”‚F12 β”‚F13 β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚    β”‚ β”‚    β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚F10 β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    */
    [_FUNCTION] = LAYOUT_ortho_all(
        TD(TD_RST),   RGB_TOG,                                                                                           KC_F11,    KC_F12,    KC_F13,
        _______,      _______,   KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,     KC_F6,     KC_F7,     KC_F8,     KC_F9,     KC_F10,    _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    )
};



//  KEYMAP TEMPLATE:
//  
//  /* <_LAYER>:
//  *
//  * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
//  * β”‚    β”‚ β”‚    β”‚                                       β”‚    β”‚    β”‚    β”‚
//  * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
//  * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
//  * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
//  * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
//  * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
//  * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
//  * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
//  * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€
//  * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
//  * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
//  */
//  [<LAYER>] = LAYOUT_ortho_all(
//      _______,      _______,                                                                                           _______,   _______,   _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
//  )


// Per-Key Tapping Term Definitions:
uint16_t get_tapping_term(uint16_t keycode) {
  switch (keycode) {
    case TD(TD_DBQT):
      return 235;
    default:
      return TAPPING_TERM;
  }
}


// Encoder Customization: (*Order-of-Keycode Specific)
void encoder_update_user(uint8_t index, bool clockwise) {
    if (index == 0) {
        if (clockwise) {
            tap_code(KC_VOLU);
        } else {
            tap_code(KC_VOLD);
        }
    }
}



// RGB Indicator Customization: (100% stolen from Jetpacktuxedo)
void keyboard_post_init_user(void) {
  #ifdef RGBLIGHT_ENABLE
// Set up RGB effects on _only_ the first LED (index 0):
        rgblight_set_effect_range(0, 1);
// Set LED effects to breathing mode in a "terminal-green" type color:
        rgblight_sethsv_noeeprom(50, 255, 100);
        rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
// Init the second LED to a static color:
        setrgb(225, 185, 0, (LED_TYPE *)&led[1]);
    rgblight_set();
  #endif // RGBLIGHT_ENABLE
}

// RGB Indicator Customization: (cont.)
layer_state_t layer_state_set_user(layer_state_t state){
    #ifdef RGBLIGHT_ENABLE
        uint8_t led1r = 0; uint8_t led1g = 0; uint8_t led1b = 0;
            if (layer_state_cmp(state, 1)) {
                led1b = 255;
            }
            if (layer_state_cmp(state, 3)) {
                led1r = 200;
            }
            setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
        rgblight_set();
    #endif //RGBLIGHT_ENABLE
  return state;
}

A keyboards/kingly_keys/ave/ortho/keymaps/default/rules.mk => keyboards/kingly_keys/ave/ortho/keymaps/default/rules.mk +2 -0
@@ 0,0 1,2 @@
# Keymap-Specific Functions
TAP_DANCE_ENABLE  =  yes

A keyboards/kingly_keys/ave/ortho/ortho.c => keyboards/kingly_keys/ave/ortho/ortho.c +18 -0
@@ 0,0 1,18 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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 "ortho.h"

A keyboards/kingly_keys/ave/ortho/ortho.h => keyboards/kingly_keys/ave/ortho/ortho.h +67 -0
@@ 0,0 1,67 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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"

#define XXXX KC_NO

#define LAYOUT_ortho_all( \
    k001,    k002,                                                 k011, k012, k013, \
    k101,    k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
    k201,    k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
    k301,    k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
    k401,    k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413 \
) \
{ \
    { k001, k002, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, k011, k012, k013 }, \
    { k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
    { k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
    { k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \
    { k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413 } \
}

#define LAYOUT_ortho_2x2u( \
    k001,    k002,                                                 k011, k012, k013, \
    k101,    k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
    k201,    k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
    k301,    k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
    k401,    k402, k403, k404, k405,    k406,       k409,    k410, k411, k412, k413 \
) \
{ \
    { k001, k002, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, k011, k012, k013 }, \
    { k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
    { k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
    { k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \
    { k401, k402, k403, k404, k405, k406, XXXX, XXXX, k409, k410, k411, k412, k413 } \
}

#define LAYOUT_ortho_big_boy( \
    k001,    k002,                                                 k011, k012, k013, \
    k101,    k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
    k201,    k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, \
    k301,    k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
    k401,    k402,    k403,                k407,                      k412,    k413 \
) \
{ \
    { k001, k002, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, k011, k012, k013 }, \
    { k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
    { k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213 }, \
    { k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \
    { k401, k402, k403, XXXX, XXXX, XXXX, k407, XXXX, XXXX, XXXX, XXXX, k412, k413 } \
}

A keyboards/kingly_keys/ave/ortho/rules.mk => keyboards/kingly_keys/ave/ortho/rules.mk +23 -0
@@ 0,0 1,23 @@
# MCU name
MCU = atmega32u4

# Bootloader selection
BOOTLOADER = atmel-dfu

# Build Options
#   change yes to no to disable
#
BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes       # Mouse keys
EXTRAKEY_ENABLE = yes       # Audio control and System control
CONSOLE_ENABLE = no         # Console for debug
COMMAND_ENABLE = no         # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no            # USB Nkey Rollover
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes

A keyboards/kingly_keys/ave/readme.md => keyboards/kingly_keys/ave/readme.md +21 -0
@@ 0,0 1,21 @@
# The Ave. (Avenue)

![ave-img-1](https://i.imgur.com/l5ah6uMl.png)

A Compact Battlestation.

- Keyboard Maintainer: [The-Royal](https://github.com/the-royal)
- Hardware Supported: Rev10.0 Avenue PCBs *(Ortholinear & Staggered)*
- Hardware Availability: Through group-buy or self procurement via open-source files. 

Make examples for this keyboard (after setting up your build environment):

**Ortholinear:**

    make kingly_keys/ave/ortho:default

**Staggered:**

    make kingly_keys/ave/staggered:default

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

A keyboards/kingly_keys/ave/staggered/info.json => keyboards/kingly_keys/ave/staggered/info.json +117 -0
@@ 0,0 1,117 @@
{
  "keyboard_name": "The Ave. (Staggered Ed. PCB)",
  "url": "",
  "maintainer": "the-royal",
  "width": 13.5,
  "height": 5.5,
  "layouts": {
     "LAYOUT_staggered": {
        "layout": [
         {"label":"k001", "x":0.00, "y":0.00},
         {"label":"k002", "x":1.50, "y":0.00},
         {"label":"k011", "x":10.5, "y":0.00},
         {"label":"k012", "x":11.5, "y":0.00},
         {"label":"k013", "x":12.5, "y":0.00},
         {"label":"k101", "x":0.00, "y":1.50},
         {"label":"k102", "x":1.50, "y":1.50},
         {"label":"k103", "x":2.50, "y":1.50},
         {"label":"k104", "x":3.50, "y":1.50},
         {"label":"k105", "x":4.50, "y":1.50},
         {"label":"k106", "x":5.50, "y":1.50},
         {"label":"k107", "x":6.50, "y":1.50},
         {"label":"k108", "x":7.50, "y":1.50},
         {"label":"k109", "x":8.50, "y":1.50},
         {"label":"k110", "x":9.50, "y":1.50},
         {"label":"k111", "x":10.5, "y":1.50},
         {"label":"k112", "x":11.5, "y":1.50},
         {"label":"k113", "x":12.5, "y":1.50},
         {"label":"k201", "x":0.00, "y":2.50},
         {"label":"k202", "x":1.50, "y":2.50, "w":1.25},
         {"label":"k203", "x":2.75, "y":2.50},
         {"label":"k204", "x":3.75, "y":2.50},
         {"label":"k205", "x":4.75, "y":2.50},
         {"label":"k206", "x":5.75, "y":2.50},
         {"label":"k207", "x":6.75, "y":2.50},
         {"label":"k208", "x":7.75, "y":2.50},
         {"label":"k209", "x":8.75, "y":2.50},
         {"label":"k210", "x":9.75, "y":2.50},
         {"label":"k211", "x":10.75, "y":2.5},
         {"label":"k213", "x":11.75, "y":2.5, "w":1.75},
         {"label":"k301", "x":0.00, "y":3.50},
         {"label":"k302", "x":1.50, "y":3.50, "w":1.75},
         {"label":"k303", "x":3.25, "y":3.50},
         {"label":"k304", "x":4.25, "y":3.50},
         {"label":"k305", "x":5.25, "y":3.50},
         {"label":"k306", "x":6.25, "y":3.50},
         {"label":"k307", "x":7.25, "y":3.50},
         {"label":"k308", "x":8.25, "y":3.50},
         {"label":"k309", "x":9.25, "y":3.50},
         {"label":"k310", "x":10.25, "y":3.50},
         {"label":"k312", "x":11.25, "y":3.50},
         {"label":"k313", "x":12.25, "y":3.50, "w":1.25},
         {"label":"k401", "x":0.00, "y":4.50},
         {"label":"k402", "x":1.50, "y":4.50, "w":1.25},
         {"label":"k403", "x":2.75, "y":4.50},
         {"label":"k404", "x":3.75, "y":4.50, "w":1.25},
         {"label":"k406", "x":5.00, "y":4.50, "w":2.75},
         {"label":"k408", "x":7.75, "y":4.50, "w":2.25},
         {"label":"k411", "x":10.0, "y":4.50, "w":1.25},
         {"label":"k412", "x":11.25, "y":4.50},
         {"label":"k413", "x":12.25, "y":4.50, "w":1.25}
       ]
     },
     "LAYOUT_staggered_big_boy": {
        "layout": [
         {"label":"k001", "x":0.00, "y":0.00},
         {"label":"k002", "x":1.50, "y":0.00},
         {"label":"k011", "x":10.5, "y":0.00},
         {"label":"k012", "x":11.5, "y":0.00},
         {"label":"k013", "x":12.5, "y":0.00},
         {"label":"k101", "x":0.00, "y":1.50},
         {"label":"k102", "x":1.50, "y":1.50},
         {"label":"k103", "x":2.50, "y":1.50},
         {"label":"k104", "x":3.50, "y":1.50},
         {"label":"k105", "x":4.50, "y":1.50},
         {"label":"k106", "x":5.50, "y":1.50},
         {"label":"k107", "x":6.50, "y":1.50},
         {"label":"k108", "x":7.50, "y":1.50},
         {"label":"k109", "x":8.50, "y":1.50},
         {"label":"k110", "x":9.50, "y":1.50},
         {"label":"k111", "x":10.5, "y":1.50},
         {"label":"k112", "x":11.5, "y":1.50},
         {"label":"k113", "x":12.5, "y":1.50},
         {"label":"k201", "x":0.00, "y":2.50},
         {"label":"k202", "x":1.50, "y":2.50, "w":1.25},
         {"label":"k203", "x":2.75, "y":2.50},
         {"label":"k204", "x":3.75, "y":2.50},
         {"label":"k205", "x":4.75, "y":2.50},
         {"label":"k206", "x":5.75, "y":2.50},
         {"label":"k207", "x":6.75, "y":2.50},
         {"label":"k208", "x":7.75, "y":2.50},
         {"label":"k209", "x":8.75, "y":2.50},
         {"label":"k210", "x":9.75, "y":2.50},
         {"label":"k211", "x":10.75, "y":2.5},
         {"label":"k213", "x":11.75, "y":2.5, "w":1.75},
         {"label":"k301", "x":0.00, "y":3.50},
         {"label":"k302", "x":1.50, "y":3.50, "w":1.75},
         {"label":"k303", "x":3.25, "y":3.50},
         {"label":"k304", "x":4.25, "y":3.50},
         {"label":"k305", "x":5.25, "y":3.50},
         {"label":"k306", "x":6.25, "y":3.50},
         {"label":"k307", "x":7.25, "y":3.50},
         {"label":"k308", "x":8.25, "y":3.50},
         {"label":"k309", "x":9.25, "y":3.50},
         {"label":"k310", "x":10.25, "y":3.50},
         {"label":"k312", "x":11.25, "y":3.50},
         {"label":"k313", "x":12.25, "y":3.50, "w":1.25},
         {"label":"k401", "x":0.00, "y":4.50},
         {"label":"k402", "x":1.50, "y":4.50, "w":1.25},
         {"label":"k403", "x":2.75, "y":4.50},
         {"label":"k406", "x":3.75, "y":4.50, "w":6.25},
         {"label":"k411", "x":10.0, "y":4.50, "w":1.25},
         {"label":"k412", "x":11.25, "y":4.50},
         {"label":"k413", "x":12.25, "y":4.50, "w":1.25}
       ]
    }
  }
}

A keyboards/kingly_keys/ave/staggered/keymaps/default/config.h => keyboards/kingly_keys/ave/staggered/keymaps/default/config.h +32 -0
@@ 0,0 1,32 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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 TAPPING_TERM_PER_KEY

#ifdef RGBLIGHT_ENABLE
    /* ws2812 RGB LED */
    #define RGB_DI_PIN B7
    #define RGBLED_NUM 2   // Number of LEDs
    
    #define RGBLIGHT_EFFECT_BREATHING
/*  #define RGBLIGHT_HUE_STEP 6
*   #define RGBLIGHT_SAT_STEP 4
*   #define RGBLIGHT_VAL_STEP 4
*/
#endif

A keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c => keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c +241 -0
@@ 0,0 1,241 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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

enum avenue_layers {
  _QWERTY,
  _LOWER,
  _RAISE,
  _FUNCTION
};



//Tap Dance Declarations:
enum avenue_tapcodes {
  TD_RST,
  TD_DBQT,
};

void dance_rst_reset (qk_tap_dance_state_t *state, void *user_data) { // *Line_Note.001
  if (state->count >= 2) {
    reset_keyboard();
    reset_tap_dance(state);
  }
}

//Tap Dance Functions:
qk_tap_dance_action_t tap_dance_actions[] = {
 [TD_RST] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, NULL, dance_rst_reset), // References "dance_rst_reset" (*Line_Note.001)
 [TD_DBQT] = ACTION_TAP_DANCE_DOUBLE (KC_QUOTE, KC_DQT)
};



// Keymap Customization:
#define LOWR  MO(_LOWER)
#define RISE  MO(_RAISE)
#define FN    MO(_FUNCTION)
#define GUI   KC_LGUI
#define ALT   KC_LALT
#define SPACE KC_SPACE

    /*
    *   β”Œβ”€β”€β”€β”€β”
    *   β”‚    β”‚ = "TRANSPARENT" KEY LOCATION
    *   β””β”€β”€β”€β”€β”˜
    */

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    /* _QWERTY (Base)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚MUTEβ”‚ β”‚Esc β”‚                                       β”‚ (  β”‚ )  β”‚ ;  β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚Homeβ”‚ β”‚Tab β”‚ Q  β”‚ W  β”‚ E  β”‚ R  β”‚ T  β”‚ Y  β”‚ U  β”‚ I  β”‚ O  β”‚ P  β”‚BkSpβ”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”€β”€β”€β”€β”€
    * β”‚PgUpβ”‚ β”‚CAPS β”‚ A  β”‚ S  β”‚ D  β”‚ F  β”‚ G  β”‚ H  β”‚ J  β”‚ K  β”‚ L  β”‚ Enter  β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”€β”€β”€β”€β”€
    * β”‚PgDnβ”‚ β”‚LShft   β”‚ Z  β”‚ X  β”‚ C  β”‚ V  β”‚ B  β”‚ N  β”‚ M  β”‚ ,  β”‚ .  β”‚RISE β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”¬β”€β”€β”΄β”€β”¬β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”¬β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
    * β”‚End β”‚ β”‚LCtrlβ”‚GUI β”‚ALT  β”‚    LOWR      β”‚          β”‚RAlt β”‚RCTLβ”‚FUNC β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜
    */
    [_QWERTY] = LAYOUT_staggered(
        KC_MUTE,      KC_ESC,                                                                       KC_LPRN,   KC_RPRN,   KC_SCLN,
        KC_HOME,      KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,      KC_O,      KC_P,      KC_BSPC,
        KC_PGUP,      KC_CAPS,   KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,      KC_L,           KC_ENT,
        KC_PGDN,      KC_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,   KC_DOT,               RISE,
        KC_END,       KC_LCTL,        GUI,       ALT,            LOWR,   SPACE,               KC_RALT,      KC_RCTL,      FN
    ),

    /* _LOWER (Symbols / Punctuation)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚    β”‚ β”‚    β”‚                                       β”‚ [  β”‚ ]  β”‚ :  β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚ -  β”‚ β”‚    β”‚ 1  β”‚ 2  β”‚ 3  β”‚ 4  β”‚ 5  β”‚ 6  β”‚ 7  β”‚ 8  β”‚ 9  β”‚ 0  β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”€β”€β”€β”€β”€
    * β”‚ \  β”‚ β”‚     β”‚ !  β”‚ @  β”‚ #  β”‚ $  β”‚ %  β”‚ ^  β”‚ &  β”‚ *  β”‚    β”‚  '/"   β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”€β”€β”€β”€β”€
    * β”‚ β”‚  β”‚ β”‚        β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚     β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”¬β”€β”€β”΄β”€β”¬β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”¬β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
    * β”‚ _  β”‚ β”‚     β”‚    β”‚     β”‚              β”‚          β”‚     β”‚    β”‚     β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜
    */
    [_LOWER] = LAYOUT_staggered(
        _______,      _______,                                                                                           KC_LBRC,   KC_RBRC,    KC_COLON,
        KC_MINUS,     KC_GRAVE,   KC_1,      KC_2,      KC_3,      KC_4,      KC_5,      KC_6,      KC_7,      KC_8,     KC_9,      KC_0,       _______,
        KC_BSLS,      KC_TILD,    KC_EXLM,   KC_AT,     KC_HASH,   KC_DLR,    KC_PERC,   KC_CIRC,   KC_AMPR,   KC_ASTR,   _______,      TD(TD_DBQT),
        KC_PIPE,      _______,    _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,              _______,
        KC_UNDS,      _______,    _______,   _______,                    _______,   _______,                              _______,   _______,   _______
    ),

    /* _RAISE (Misc Modifiers / Extended Punctuation)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚PRNTβ”‚ β”‚    β”‚                                       β”‚ {  β”‚ }  β”‚ +  β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚ Up β”‚    β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚CAPS β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚Leftβ”‚Rghtβ”‚        β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚        β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚Downβ”‚ /  β”‚     β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”¬β”€β”€β”΄β”€β”¬β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”¬β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚     β”‚    β”‚     β”‚              β”‚          β”‚     β”‚ ?  β”‚     β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜
    */
    [_RAISE] = LAYOUT_staggered(
        KC_PSCR,      _______,                                                                                           KC_LCBR,   KC_RCBR,   KC_PLUS,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   KC_UP,     _______,   _______,
        _______,      KC_CAPS,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   KC_LEFT,   KC_RIGHT,        _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   KC_DOWN,   KC_SLSH,              _______,
        _______,      _______,   _______,   _______,                    _______,   _______,                              _______,   KC_QUES,   _______
    ),

    /* _FUNCTION (F-Row / DFU Reset / RGB Toggle)
    *
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚RSETβ”‚ β”‚RGB β”‚                                       β”‚F11 β”‚F12 β”‚F13 β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
    * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
    * β”‚    β”‚ β”‚    β”‚ F1 β”‚ F2 β”‚ F3 β”‚ F4 β”‚ F5 β”‚ F6 β”‚ F7 β”‚ F8 β”‚ F9 β”‚F10 β”‚    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚     β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚   =    β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚        β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚     β”‚
    * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”¬β”€β”€β”΄β”€β”¬β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”¬β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
    * β”‚    β”‚ β”‚     β”‚    β”‚     β”‚              β”‚          β”‚     β”‚    β”‚     β”‚
    * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜
    */
    [_FUNCTION] = LAYOUT_staggered(
        TD(TD_RST),   RGB_TOG,                                                                                           KC_F11,    KC_F12,    KC_F13,
        _______,      _______,   KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,     KC_F6,     KC_F7,     KC_F8,     KC_F9,     KC_F10,    _______,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,       KC_EQUAL,
        _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,              _______,
        _______,      _______,   _______,   _______,                    _______,   _______,                              _______,   _______,   _______
    )
};



//  KEYMAP TEMPLATE:
//
//  /* <_LAYER>:
//  *
//  * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”                                       β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
//  * β”‚    β”‚ β”‚    β”‚                                       β”‚    β”‚    β”‚    β”‚
//  * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜                                       β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
//  * β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
//  * β”‚    β”‚ β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚
//  * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”¬β”€β”€β”€β”΄β”€β”€β”€β”€β”€
//  * β”‚    β”‚ β”‚     β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚        β”‚
//  * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”¬β”€β”€β”€β”€β”€β”€
//  * β”‚    β”‚ β”‚        β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚    β”‚     β”‚
//  * β”œβ”€β”€β”€β”€β”€ β”œβ”€β”€β”€β”€β”€β”¬β”€β”€β”΄β”€β”¬β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”¬β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”¬β”΄β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
//  * β”‚    β”‚ β”‚     β”‚    β”‚     β”‚              β”‚          β”‚     β”‚    β”‚     β”‚
//  * β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜
//  */
//  [<_LAYER>] = LAYOUT_staggered(
//      _______,      _______,                                                                                           _______,   _______,   _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,         _______,
//      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,              _______,
//      _______,      _______,   _______,   _______,                    _______,   _______,                              _______,   _______,   _______
//  )



// Per-Key Tapping Term Definitions:
uint16_t get_tapping_term(uint16_t keycode) {
  switch (keycode) {
    case TD(TD_DBQT):
      return 235;
    default:
      return TAPPING_TERM;
  }
}



// Encoder Customization: (*Order-of-Keycode Specific)
void encoder_update_user(uint8_t index, bool clockwise) {
    if (index == 0) {
        if (clockwise) {
            tap_code(KC_VOLU);
        } else {
            tap_code(KC_VOLD);
        }
    }
}



// RGB Indicator Customization: (100% stolen from Jetpacktuxedo)
void keyboard_post_init_user(void) {
  #ifdef RGBLIGHT_ENABLE
// Set up RGB effects on _only_ the first LED (index 0):
        rgblight_set_effect_range(0, 1);
// Set LED effects to breathing mode in a "terminal-green" type color:
        rgblight_sethsv_noeeprom(50, 255, 100);
        rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
// Init the second LED to a static color:
        setrgb(225, 185, 0, (LED_TYPE *)&led[1]);
    rgblight_set();
  #endif // RGBLIGHT_ENABLE
}

// RGB Indicator Customization: (cont.)
layer_state_t layer_state_set_user(layer_state_t state){
    #ifdef RGBLIGHT_ENABLE
        uint8_t led1r = 0; uint8_t led1g = 0; uint8_t led1b = 0;
            if (layer_state_cmp(state, 1)) {
                led1b = 255;
            }
            if (layer_state_cmp(state, 3)) {
                led1r = 200;
            }
            setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]);
        rgblight_set();
    #endif //RGBLIGHT_ENABLE
  return state;
}

A keyboards/kingly_keys/ave/staggered/keymaps/default/rules.mk => keyboards/kingly_keys/ave/staggered/keymaps/default/rules.mk +2 -0
@@ 0,0 1,2 @@
# Keymap-Specific Functions
TAP_DANCE_ENABLE  =  yes

A keyboards/kingly_keys/ave/staggered/rules.mk => keyboards/kingly_keys/ave/staggered/rules.mk +23 -0
@@ 0,0 1,23 @@
# MCU name
MCU = atmega32u4

# Bootloader selection
BOOTLOADER = atmel-dfu

# Build Options
#   change yes to no to disable
#
BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes       # Mouse keys
EXTRAKEY_ENABLE = yes       # Audio control and System control
CONSOLE_ENABLE = no         # Console for debug
COMMAND_ENABLE = no         # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no            # USB Nkey Rollover
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes

A keyboards/kingly_keys/ave/staggered/staggered.c => keyboards/kingly_keys/ave/staggered/staggered.c +18 -0
@@ 0,0 1,18 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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 "staggered.h"

A keyboards/kingly_keys/ave/staggered/staggered.h => keyboards/kingly_keys/ave/staggered/staggered.h +52 -0
@@ 0,0 1,52 @@
 /* 
 Copyright 2020 Garret Gartner
  
 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"

#define XXXX KC_NO

#define LAYOUT_staggered( \
    k001,    k002,                                                 k011, k012, k013, \
    k101,    k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
    k201,    k202, k203, k204, k205, k206, k207, k208, k209, k210, k211,       k213, \
    k301,    k302, k303, k304, k305, k306, k307, k308, k309, k310,       k312, k313, \
    k401,    k402, k403, k404,       k406,       k408,             k411, k412, k413 \
) \
{ \
    { k001, k002, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, k011, k012, k013 }, \
    { k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
    { k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, XXXX, k213 }, \
    { k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, XXXX, k312, k313 }, \
    { k401, k402, k403, k404, XXXX, k406, XXXX, k408, XXXX, XXXX, k411, k412, k413 } \
}

#define LAYOUT_staggered_big_boy( \
    k001,    k002,                                                 k011, k012, k013, \
    k101,    k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, \
    k201,    k202, k203, k204, k205, k206, k207, k208, k209, k210, k211,       k213, \
    k301,    k302, k303, k304, k305, k306, k307, k308, k309, k310,       k312, k313, \
    k401,    k402, k403,                k406,                      k411, k412, k413 \
) \
{ \
    { k001, k002, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, k011, k012, k013 }, \
    { k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113 }, \
    { k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, XXXX, k213 }, \
    { k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, XXXX, k312, k313 }, \
    { k401, k402, k403, XXXX, XXXX, k406, XXXX, XXXX, XXXX, XXXX, k411, k412, k413 } \
}