~ruther/qmk_firmware

26db668878d07c0f9947169f867659a27909eb24 — Xelus22 2 years ago 0420a74
[Keyboard] EXT65 rev3 support (#18873)

33 files changed, 1124 insertions(+), 273 deletions(-)

D keyboards/aeboards/ext65/.noci
D keyboards/aeboards/ext65/ext65.c
D keyboards/aeboards/ext65/ext65.h
M keyboards/aeboards/ext65/info.json
D keyboards/aeboards/ext65/rev1/.noci
D keyboards/aeboards/ext65/rev1/config.h
M keyboards/aeboards/ext65/rev1/info.json
R keyboards/aeboards/ext65/{ => rev1}/keymaps/default/keymap.c
R keyboards/aeboards/ext65/{ => rev1}/keymaps/default/readme.md
R keyboards/aeboards/ext65/{ => rev1}/keymaps/via/keymap.c
R keyboards/aeboards/ext65/{ => rev1}/keymaps/via/readme.md
R keyboards/aeboards/ext65/{ => rev1}/keymaps/via/rules.mk
M keyboards/aeboards/ext65/rev1/rev1.c
M keyboards/aeboards/ext65/rev1/rev1.h
M keyboards/aeboards/ext65/rev2/config.h
M keyboards/aeboards/ext65/rev2/info.json
A keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c
A keyboards/aeboards/ext65/rev2/keymaps/default/readme.md
A keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c
A keyboards/aeboards/ext65/rev2/keymaps/via/readme.md
A keyboards/aeboards/ext65/rev2/keymaps/via/rules.mk
M keyboards/aeboards/ext65/rev2/rev2.c
M keyboards/aeboards/ext65/rev2/rev2.h
R keyboards/aeboards/ext65/{ => rev3}/config.h
A keyboards/aeboards/ext65/rev3/info.json
A keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c
A keyboards/aeboards/ext65/rev3/keymaps/default/readme.md
A keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c
A keyboards/aeboards/ext65/rev3/keymaps/via/readme.md
A keyboards/aeboards/ext65/rev3/keymaps/via/rules.mk
A keyboards/aeboards/ext65/rev3/rev3.c
A keyboards/aeboards/ext65/rev3/rev3.h
A keyboards/aeboards/ext65/rev3/rules.mk
D keyboards/aeboards/ext65/.noci => keyboards/aeboards/ext65/.noci +0 -0
D keyboards/aeboards/ext65/ext65.c => keyboards/aeboards/ext65/ext65.c +0 -1
@@ 1,1 0,0 @@
#include "ext65.h"

D keyboards/aeboards/ext65/ext65.h => keyboards/aeboards/ext65/ext65.h +0 -9
@@ 1,9 0,0 @@
#pragma once

#include "quantum.h"

#if defined(KEYBOARD_aeboards_ext65_rev1)
    #include "rev1.h"
#elif defined(KEYBOARD_aeboards_ext65_rev2)
    #include "rev2.h"
#endif
\ No newline at end of file

M keyboards/aeboards/ext65/info.json => keyboards/aeboards/ext65/info.json +1 -105
@@ 4,110 4,6 @@
    "url": "",
    "maintainer": "qmk",
    "usb": {
        "vid": "0x4145",
        "device_version": "0.0.1"
    },
    "layouts": {
        "LAYOUT_ext65": {
            "layout": [
                {"x": 0, "y": 0},
                {"x": 1, "y": 0},
                {"x": 2, "y": 0},
                {"x": 3, "y": 0},

                {"x": 4.5, "y": 0},
                {"x": 5.5, "y": 0},
                {"x": 6.5, "y": 0},
                {"x": 7.5, "y": 0},
                {"x": 8.5, "y": 0},
                {"x": 9.5, "y": 0},
                {"x": 10.5, "y": 0},
                {"x": 11.5, "y": 0},
                {"x": 12.5, "y": 0},
                {"x": 13.5, "y": 0},
                {"x": 14.5, "y": 0},
                {"x": 15.5, "y": 0},
                {"x": 16.5, "y": 0},
                {"x": 17.5, "y": 0},
                {"x": 18.5, "y": 0},
                {"x": 19.5, "y": 0},

                {"x": 0, "y": 1},
                {"x": 1, "y": 1},
                {"x": 2, "y": 1},
                {"x": 3, "y": 1},

                {"x": 4.5, "y": 1, "w": 1.5},
                {"x": 6, "y": 1},
                {"x": 7, "y": 1},
                {"x": 8, "y": 1},
                {"x": 9, "y": 1},
                {"x": 10, "y": 1},
                {"x": 11, "y": 1},
                {"x": 12, "y": 1},
                {"x": 13, "y": 1},
                {"x": 14, "y": 1},
                {"x": 15, "y": 1},
                {"x": 16, "y": 1},
                {"x": 17, "y": 1},
                {"x": 18, "y": 1, "w": 1.5},
                {"x": 19.5, "y": 1},

                {"x": 0, "y": 2},
                {"x": 1, "y": 2},
                {"x": 2, "y": 2},
                {"x": 3, "y": 2},

                {"x": 4.5, "y": 2, "w": 1.75},
                {"x": 6.25, "y": 2},
                {"x": 7.25, "y": 2},
                {"x": 8.25, "y": 2},
                {"x": 9.25, "y": 2},
                {"x": 10.25, "y": 2},
                {"x": 11.25, "y": 2},
                {"x": 12.25, "y": 2},
                {"x": 13.25, "y": 2},
                {"x": 14.25, "y": 2},
                {"x": 15.25, "y": 2},
                {"x": 16.25, "y": 2},
                {"x": 17.25, "y": 2, "w": 2.25},
                {"x": 19.5, "y": 2},

                {"x": 0, "y": 3},
                {"x": 1, "y": 3},
                {"x": 2, "y": 3},
                {"x": 3, "y": 3},

                {"x": 4.5, "y": 3, "w": 2.25},
                {"x": 6.75, "y": 3},
                {"x": 7.75, "y": 3},
                {"x": 8.75, "y": 3},
                {"x": 9.75, "y": 3},
                {"x": 10.75, "y": 3},
                {"x": 11.75, "y": 3},
                {"x": 12.75, "y": 3},
                {"x": 13.75, "y": 3},
                {"x": 14.75, "y": 3},
                {"x": 15.75, "y": 3},
                {"x": 16.75, "y": 3, "w": 1.75},
                {"x": 18.5, "y": 3},
                {"x": 19.5, "y": 3},

                {"x": 0, "y": 4},
                {"x": 1, "y": 4},
                {"x": 2, "y": 4},
                {"x": 3, "y": 4},
                {"x": 4.5, "y": 4, "w": 1.5},
                {"x": 6, "y": 4},
                {"x": 7, "y": 4, "w": 1.5},
                {"x": 8.5, "y": 4, "w": 6.25},
                {"x": 14.75, "y": 4, "w": 1.25},
                {"x": 16, "y": 4},

                {"x": 17.5, "y": 4},
                {"x": 18.5, "y": 4},
                {"x": 19.5, "y": 4}
            ]
        }
        "vid": "0x4145"
    }
}

D keyboards/aeboards/ext65/rev1/.noci => keyboards/aeboards/ext65/rev1/.noci +0 -0
D keyboards/aeboards/ext65/rev1/config.h => keyboards/aeboards/ext65/rev1/config.h +0 -39
@@ 1,39 0,0 @@
/* Copyright 2018 Jason Williams (Wilba)
 *
 * 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"

/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10

/* key matrix pins */
#define MATRIX_ROW_PINS { C6, C7, B5, B6, D7, B4, D4, D6, B7, E6 }
#define MATRIX_COL_PINS { B2, B3, B1, B0, F7, F0, F1, F4, F5, F6 }

/* 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

M keyboards/aeboards/ext65/rev1/info.json => keyboards/aeboards/ext65/rev1/info.json +114 -1
@@ 1,5 1,118 @@
{
    "keyboard_name": "Ext65 Rev1",
    "manufacturer": "AEBoards",
    "url": "",
    "maintainer": "qmk",
    "usb": {
        "pid": "0xAE65"
        "pid": "0xAE65",
        "device_version": "0.0.1"
    },
    "diode_direction": "COL2ROW",
    "matrix_pins": {
        "cols": ["B2", "B3", "B1", "B0", "F7", "F0", "F1", "F4", "F5", "F6"],
        "rows": ["C6", "C7", "B5", "B6", "D7", "B4", "D4", "D6", "B7", "E6"]
    },
    "layouts": {
        "LAYOUT_ext65": {
            "layout": [
                {"x": 0, "y": 0},
                {"x": 1, "y": 0},
                {"x": 2, "y": 0},
                {"x": 3, "y": 0},

                {"x": 4.5, "y": 0},
                {"x": 5.5, "y": 0},
                {"x": 6.5, "y": 0},
                {"x": 7.5, "y": 0},
                {"x": 8.5, "y": 0},
                {"x": 9.5, "y": 0},
                {"x": 10.5, "y": 0},
                {"x": 11.5, "y": 0},
                {"x": 12.5, "y": 0},
                {"x": 13.5, "y": 0},
                {"x": 14.5, "y": 0},
                {"x": 15.5, "y": 0},
                {"x": 16.5, "y": 0},
                {"x": 17.5, "y": 0},
                {"x": 18.5, "y": 0},
                {"x": 19.5, "y": 0},

                {"x": 0, "y": 1},
                {"x": 1, "y": 1},
                {"x": 2, "y": 1},
                {"x": 3, "y": 1},

                {"x": 4.5, "y": 1, "w": 1.5},
                {"x": 6, "y": 1},
                {"x": 7, "y": 1},
                {"x": 8, "y": 1},
                {"x": 9, "y": 1},
                {"x": 10, "y": 1},
                {"x": 11, "y": 1},
                {"x": 12, "y": 1},
                {"x": 13, "y": 1},
                {"x": 14, "y": 1},
                {"x": 15, "y": 1},
                {"x": 16, "y": 1},
                {"x": 17, "y": 1},
                {"x": 18, "y": 1, "w": 1.5},
                {"x": 19.5, "y": 1},

                {"x": 0, "y": 2},
                {"x": 1, "y": 2},
                {"x": 2, "y": 2},
                {"x": 3, "y": 2},

                {"x": 4.5, "y": 2, "w": 1.75},
                {"x": 6.25, "y": 2},
                {"x": 7.25, "y": 2},
                {"x": 8.25, "y": 2},
                {"x": 9.25, "y": 2},
                {"x": 10.25, "y": 2},
                {"x": 11.25, "y": 2},
                {"x": 12.25, "y": 2},
                {"x": 13.25, "y": 2},
                {"x": 14.25, "y": 2},
                {"x": 15.25, "y": 2},
                {"x": 16.25, "y": 2},
                {"x": 17.25, "y": 2, "w": 2.25},
                {"x": 19.5, "y": 2},

                {"x": 0, "y": 3},
                {"x": 1, "y": 3},
                {"x": 2, "y": 3},
                {"x": 3, "y": 3},

                {"x": 4.5, "y": 3, "w": 2.25},
                {"x": 6.75, "y": 3},
                {"x": 7.75, "y": 3},
                {"x": 8.75, "y": 3},
                {"x": 9.75, "y": 3},
                {"x": 10.75, "y": 3},
                {"x": 11.75, "y": 3},
                {"x": 12.75, "y": 3},
                {"x": 13.75, "y": 3},
                {"x": 14.75, "y": 3},
                {"x": 15.75, "y": 3},
                {"x": 16.75, "y": 3, "w": 1.75},
                {"x": 18.5, "y": 3},
                {"x": 19.5, "y": 3},

                {"x": 0, "y": 4},
                {"x": 1, "y": 4},
                {"x": 2, "y": 4},
                {"x": 3, "y": 4},
                {"x": 4.5, "y": 4, "w": 1.5},
                {"x": 6, "y": 4},
                {"x": 7, "y": 4, "w": 1.5},
                {"x": 8.5, "y": 4, "w": 6.25},
                {"x": 14.75, "y": 4, "w": 1.25},
                {"x": 16, "y": 4},

                {"x": 17.5, "y": 4},
                {"x": 18.5, "y": 4},
                {"x": 19.5, "y": 4}
            ]
        }
    }
}

R keyboards/aeboards/ext65/keymaps/default/keymap.c => keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c +3 -39
@@ 30,7 30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   * `------------------------------------------------------------------------------------------'
   */
  [0] = LAYOUT_ext65(
    KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
    KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
    KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
    KC_PPLS, KC_P6  , KC_P5  , KC_P4  , KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_ENT ,                   KC_PGUP,
    KC_PENT, KC_P3  , KC_P2  , KC_P1  , KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,                   KC_UP  , KC_PGDN,


@@ 39,8 39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [1] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EEP_RST,
    KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DEBUG,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
    KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
    KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  ),


@@ 61,39 61,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  )
};

#ifdef OLED_ENABLE

void render_layer_state(void) {
    oled_write_ln(PSTR("LAYER"), false);
    oled_write_ln(PSTR("L1"), layer_state_is(1));
    oled_write_ln(PSTR("L2"), layer_state_is(2));
    oled_write_ln(PSTR("L3"), layer_state_is(3));
    oled_write_ln(PSTR(" "), false);
}

void render_keylock_status(led_t led_state) {
    oled_write_ln(PSTR("Lock:"), false);
    oled_write(PSTR("N"), led_state.num_lock);
    oled_write(PSTR("C"), led_state.caps_lock);
    oled_write_ln(PSTR("S"), led_state.scroll_lock);
    oled_write_ln(PSTR(" "), false);
}

void render_mod_status(uint8_t modifiers) {
    oled_write_ln(PSTR("Mods:"), false);
    oled_write(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
    oled_write(PSTR("C"), (modifiers & MOD_MASK_CTRL));
    oled_write(PSTR("A"), (modifiers & MOD_MASK_ALT));
    oled_write_ln(PSTR("G"), (modifiers & MOD_MASK_GUI));
    oled_write_ln(PSTR(" "), false);
}

bool oled_task_user(void) {
    render_layer_state();
    render_keylock_status(host_keyboard_led_state());
    render_mod_status(get_mods()|get_oneshot_mods());
    return false;
}

#endif

R keyboards/aeboards/ext65/keymaps/default/readme.md => keyboards/aeboards/ext65/rev1/keymaps/default/readme.md +0 -0
R keyboards/aeboards/ext65/keymaps/via/keymap.c => keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c +3 -39
@@ 30,7 30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   * `------------------------------------------------------------------------------------------'
   */
  [0] = LAYOUT_ext65(
    KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
    KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
    KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
    KC_PPLS, KC_P6  , KC_P5  , KC_P4  , KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_ENT ,                   KC_PGUP,
    KC_PENT, KC_P3  , KC_P2  , KC_P1  , KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,                   KC_UP  , KC_PGDN,


@@ 39,8 39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [1] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EEP_RST,
    KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DEBUG,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
    KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
    KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  ),


@@ 61,39 61,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  )
};

#ifdef OLED_ENABLE

void render_layer_state(void) {
    oled_write_ln(PSTR("LAYER"), false);
    oled_write_ln(PSTR("L1"), layer_state_is(1));
    oled_write_ln(PSTR("L2"), layer_state_is(2));
    oled_write_ln(PSTR("L3"), layer_state_is(3));
    oled_write_ln(PSTR(" "), false);
}

void render_keylock_status(led_t led_state) {
    oled_write_ln(PSTR("Lock:"), false);
    oled_write(PSTR("N"), led_state.num_lock);
    oled_write(PSTR("C"), led_state.caps_lock);
    oled_write_ln(PSTR("S"), led_state.scroll_lock);
    oled_write_ln(PSTR(" "), false);
}

void render_mod_status(uint8_t modifiers) {
    oled_write_ln(PSTR("Mods:"), false);
    oled_write(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
    oled_write(PSTR("C"), (modifiers & MOD_MASK_CTRL));
    oled_write(PSTR("A"), (modifiers & MOD_MASK_ALT));
    oled_write_ln(PSTR("G"), (modifiers & MOD_MASK_GUI));
    oled_write_ln(PSTR(" "), false);
}

bool oled_task_user(void) {
    render_layer_state();
    render_keylock_status(host_keyboard_led_state());
    render_mod_status(get_mods()|get_oneshot_mods());
    return false;
}

#endif

R keyboards/aeboards/ext65/keymaps/via/readme.md => keyboards/aeboards/ext65/rev1/keymaps/via/readme.md +0 -0
R keyboards/aeboards/ext65/keymaps/via/rules.mk => keyboards/aeboards/ext65/rev1/keymaps/via/rules.mk +0 -0
M keyboards/aeboards/ext65/rev1/rev1.c => keyboards/aeboards/ext65/rev1/rev1.c +16 -0
@@ 1,3 1,19 @@
/* Copyright 2020 Harrison Chan (Xelus)
 *
 * 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 "rev1.h"

void keyboard_pre_init_user(void) {

M keyboards/aeboards/ext65/rev1/rev1.h => keyboards/aeboards/ext65/rev1/rev1.h +0 -1
@@ 16,7 16,6 @@

#pragma once

#include "ext65.h"
#include "quantum.h"

#define ____ KC_NO

M keyboards/aeboards/ext65/rev2/config.h => keyboards/aeboards/ext65/rev2/config.h +15 -35
@@ 1,41 1,21 @@
/*
Copyright 2015 Jun Wako <wakojun@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/>.
*/
/* Copyright 2020 Harrison Chan (Xelus)
 *
 * 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

/* key matrix size */
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10

/* key matrix pins */
#define MATRIX_ROW_PINS { A10, A9, A8, B7, A2, A1, B12, B11, B10, B2 }
#define MATRIX_COL_PINS { B14, B6, A0, B1, B0, A7, A6, A5, A4, A3 }

#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

//RGB Underglow WS2812
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 24

M keyboards/aeboards/ext65/rev2/info.json => keyboards/aeboards/ext65/rev2/info.json +114 -1
@@ 1,5 1,118 @@
{
    "keyboard_name": "Ext65 Rev2",
    "manufacturer": "AEBoards",
    "url": "",
    "maintainer": "qmk",
    "usb": {
        "pid": "0xA652"
        "pid": "0xA652",
        "device_version": "0.0.1"
    },
    "diode_direction": "COL2ROW",
    "matrix_pins": {
        "cols": ["B14", "B6", "A0", "B1", "B0", "A7", "A6", "A5", "A4", "A3"],
        "rows": ["A10", "A9", "A8", "B7", "A2", "A1", "B12", "B11", "B10", "B2"]
    },
    "layouts": {
        "LAYOUT_ext65": {
            "layout": [
                {"x": 0, "y": 0},
                {"x": 1, "y": 0},
                {"x": 2, "y": 0},
                {"x": 3, "y": 0},

                {"x": 4.5, "y": 0},
                {"x": 5.5, "y": 0},
                {"x": 6.5, "y": 0},
                {"x": 7.5, "y": 0},
                {"x": 8.5, "y": 0},
                {"x": 9.5, "y": 0},
                {"x": 10.5, "y": 0},
                {"x": 11.5, "y": 0},
                {"x": 12.5, "y": 0},
                {"x": 13.5, "y": 0},
                {"x": 14.5, "y": 0},
                {"x": 15.5, "y": 0},
                {"x": 16.5, "y": 0},
                {"x": 17.5, "y": 0},
                {"x": 18.5, "y": 0},
                {"x": 19.5, "y": 0},

                {"x": 0, "y": 1},
                {"x": 1, "y": 1},
                {"x": 2, "y": 1},
                {"x": 3, "y": 1},

                {"x": 4.5, "y": 1, "w": 1.5},
                {"x": 6, "y": 1},
                {"x": 7, "y": 1},
                {"x": 8, "y": 1},
                {"x": 9, "y": 1},
                {"x": 10, "y": 1},
                {"x": 11, "y": 1},
                {"x": 12, "y": 1},
                {"x": 13, "y": 1},
                {"x": 14, "y": 1},
                {"x": 15, "y": 1},
                {"x": 16, "y": 1},
                {"x": 17, "y": 1},
                {"x": 18, "y": 1, "w": 1.5},
                {"x": 19.5, "y": 1},

                {"x": 0, "y": 2},
                {"x": 1, "y": 2},
                {"x": 2, "y": 2},
                {"x": 3, "y": 2},

                {"x": 4.5, "y": 2, "w": 1.75},
                {"x": 6.25, "y": 2},
                {"x": 7.25, "y": 2},
                {"x": 8.25, "y": 2},
                {"x": 9.25, "y": 2},
                {"x": 10.25, "y": 2},
                {"x": 11.25, "y": 2},
                {"x": 12.25, "y": 2},
                {"x": 13.25, "y": 2},
                {"x": 14.25, "y": 2},
                {"x": 15.25, "y": 2},
                {"x": 16.25, "y": 2},
                {"x": 17.25, "y": 2, "w": 2.25},
                {"x": 19.5, "y": 2},

                {"x": 0, "y": 3},
                {"x": 1, "y": 3},
                {"x": 2, "y": 3},
                {"x": 3, "y": 3},

                {"x": 4.5, "y": 3, "w": 2.25},
                {"x": 6.75, "y": 3},
                {"x": 7.75, "y": 3},
                {"x": 8.75, "y": 3},
                {"x": 9.75, "y": 3},
                {"x": 10.75, "y": 3},
                {"x": 11.75, "y": 3},
                {"x": 12.75, "y": 3},
                {"x": 13.75, "y": 3},
                {"x": 14.75, "y": 3},
                {"x": 15.75, "y": 3},
                {"x": 16.75, "y": 3, "w": 1.75},
                {"x": 18.5, "y": 3},
                {"x": 19.5, "y": 3},

                {"x": 0, "y": 4},
                {"x": 1, "y": 4},
                {"x": 2, "y": 4},
                {"x": 3, "y": 4},
                {"x": 4.5, "y": 4, "w": 1.5},
                {"x": 6, "y": 4},
                {"x": 7, "y": 4, "w": 1.5},
                {"x": 8.5, "y": 4, "w": 6.25},
                {"x": 14.75, "y": 4, "w": 1.25},
                {"x": 16, "y": 4},

                {"x": 17.5, "y": 4},
                {"x": 18.5, "y": 4},
                {"x": 19.5, "y": 4}
            ]
        }
    }
}

A keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c => keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c +63 -0
@@ 0,0 1,63 @@
/* Copyright 2020 Harrison Chan (Xelus)
 *
 * 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

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Keymap BASE: (Base Layer) Default Layer
   * ,-------------------.  ,-------------------------------------------------------------------.
   * |-   | *  | /  |NmLK|  |Esc| 1 |  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|pipe| ~  | Pscr|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 9  | 8  | 7  |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]| BSPC  | Del |
   * |  + |--------------|  |-------------------------------------------------------------------|
   * |    | 6  | 5  | 4  |  |Caps   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return   | Pgup|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 3  | 2  | 1  |  |Shift    |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up | Pgdn|
   * | ENT|-------------------------------------------------------------------------------------|
   * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
   * `------------------------------------------------------------------------------------------'
   */
  [0] = LAYOUT_ext65(
    KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
    KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
    KC_PPLS, KC_P6  , KC_P5  , KC_P4  , KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_ENT ,                   KC_PGUP,
    KC_PENT, KC_P3  , KC_P2  , KC_P1  , KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,                   KC_UP  , KC_PGDN,
    KC_PENT, KC_PDOT, KC_P0  , KC_P0  , KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,                   KC_LEFT, KC_DOWN, KC_RGHT
  ),

  [1] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
    KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
    KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [2] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [3] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  )
};

A keyboards/aeboards/ext65/rev2/keymaps/default/readme.md => keyboards/aeboards/ext65/rev2/keymaps/default/readme.md +2 -0
@@ 0,0 1,2 @@
# The Default Ext65Rev2 Layout


A keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c => keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c +63 -0
@@ 0,0 1,63 @@
/* Copyright 2020 Harrison Chan (Xelus)
 *
 * 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

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Keymap BASE: (Base Layer) Default Layer
   * ,-------------------.  ,-------------------------------------------------------------------.
   * |-   | *  | /  |NmLK|  |Esc| 1 |  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|pipe| ~  | Pscr|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 9  | 8  | 7  |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]| BSPC  | Del |
   * |  + |--------------|  |-------------------------------------------------------------------|
   * |    | 6  | 5  | 4  |  |Caps   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return   | Pgup|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 3  | 2  | 1  |  |Shift    |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up | Pgdn|
   * | ENT|-------------------------------------------------------------------------------------|
   * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
   * `------------------------------------------------------------------------------------------'
   */
  [0] = LAYOUT_ext65(
    KC_PMNS, KC_PAST, KC_PSLS, KC_NUM,  KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR,
    KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSPC,          KC_DEL ,
    KC_PPLS, KC_P6  , KC_P5  , KC_P4  , KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_ENT ,                   KC_PGUP,
    KC_PENT, KC_P3  , KC_P2  , KC_P1  , KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,                   KC_UP  , KC_PGDN,
    KC_PENT, KC_PDOT, KC_P0  , KC_P0  , KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,                   KC_LEFT, KC_DOWN, KC_RGHT
  ),

  [1] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          EE_CLR,
    KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   DB_TOGG,
    KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [2] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [3] = LAYOUT_ext65(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS
  )
};

A keyboards/aeboards/ext65/rev2/keymaps/via/readme.md => keyboards/aeboards/ext65/rev2/keymaps/via/readme.md +2 -0
@@ 0,0 1,2 @@
# The VIA Ext65Rev2 Layout


A keyboards/aeboards/ext65/rev2/keymaps/via/rules.mk => keyboards/aeboards/ext65/rev2/keymaps/via/rules.mk +3 -0
@@ 0,0 1,3 @@
VIA_ENABLE = yes
OLED_ENABLE = yes
# OLED_DRIVER = not a real thing

M keyboards/aeboards/ext65/rev2/rev2.c => keyboards/aeboards/ext65/rev2/rev2.c +49 -0
@@ 1,3 1,19 @@
/* Copyright 2020 Harrison Chan (Xelus)
 *
 * 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 "rev2.h"

// Tested and verified working on ext65rev2


@@ 13,6 29,38 @@ oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
    return OLED_ROTATION_90;  // rotates the display 90 degrees
}

void render_layer_state(void) {
    oled_write_ln(PSTR("LAYER"), false);
    oled_write_ln(PSTR("L1"), layer_state_is(1));
    oled_write_ln(PSTR("L2"), layer_state_is(2));
    oled_write_ln(PSTR("L3"), layer_state_is(3));
    oled_write_ln(PSTR(" "), false);
}

void render_keylock_status(led_t led_state) {
    oled_write_ln(PSTR("Lock:"), false);
    oled_write(PSTR("N"), led_state.num_lock);
    oled_write(PSTR("C"), led_state.caps_lock);
    oled_write_ln(PSTR("S"), led_state.scroll_lock);
    oled_write_ln(PSTR(" "), false);
}

void render_mod_status(uint8_t modifiers) {
    oled_write_ln(PSTR("Mods:"), false);
    oled_write(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
    oled_write(PSTR("C"), (modifiers & MOD_MASK_CTRL));
    oled_write(PSTR("A"), (modifiers & MOD_MASK_ALT));
    oled_write_ln(PSTR("G"), (modifiers & MOD_MASK_GUI));
    oled_write_ln(PSTR(" "), false);
}

bool oled_task_kb(void) {
    render_layer_state();
    render_keylock_status(host_keyboard_led_state());
    render_mod_status(get_mods()|get_oneshot_mods());
    return false;
}

#else

void keyboard_pre_init_user(void) {


@@ 46,3 94,4 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
    return layer_state_set_user(state);
}
#endif


M keyboards/aeboards/ext65/rev2/rev2.h => keyboards/aeboards/ext65/rev2/rev2.h +0 -1
@@ 16,7 16,6 @@

#pragma once

#include "ext65.h"
#include "quantum.h"

#define ____ KC_NO

R keyboards/aeboards/ext65/config.h => keyboards/aeboards/ext65/rev3/config.h +8 -2
@@ 1,4 1,4 @@
/* Copyright 2020 Harrison Chan (Xelus)
/* Copyright 2018 Jason Williams (Wilba)
 *
 * 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


@@ 14,4 14,10 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "config_common.h"
#pragma once

// Locks
#define LED_NUM_LOCK_PIN F5
#define LED_CAPS_LOCK_PIN F4
#define LED_SCROLL_LOCK_PIN F1
#define LED_LAYERS_PIN F0

A keyboards/aeboards/ext65/rev3/info.json => keyboards/aeboards/ext65/rev3/info.json +440 -0
@@ 0,0 1,440 @@
{
    "keyboard_name": "Ext65 Rev3",
    "manufacturer": "AEBoards",
    "url": "",
    "maintainer": "qmk",
    "usb": {
        "pid": "0xA653",
        "device_version": "0.0.1"
    },
    "diode_direction": "COL2ROW",
    "matrix_pins": {
        "cols": ["F6", "F7", "B1", "B3", "B2", "D5", "D3", "D2", "D1", "D0"],
        "rows": ["B5", "B6", "C6", "C7", "E6", "B0", "B4", "D7", "D4", "D6"]
    },
    "layouts": {
        "LAYOUT_ext65_hotswap": {
            "layout": [
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 1,
                    "y": 0
                },
                {
                    "x": 2,
                    "y": 0
                },
                {
                    "x": 3,
                    "y": 0
                },
                {
                    "label": "Esc",
                    "x": 4.5,
                    "y": 0
                },
                {
                    "label": "!",
                    "x": 5.5,
                    "y": 0
                },
                {
                    "label": "@",
                    "x": 6.5,
                    "y": 0
                },
                {
                    "label": "#",
                    "x": 7.5,
                    "y": 0
                },
                {
                    "label": "$",
                    "x": 8.5,
                    "y": 0
                },
                {
                    "label": "%",
                    "x": 9.5,
                    "y": 0
                },
                {
                    "label": "^",
                    "x": 10.5,
                    "y": 0
                },
                {
                    "label": "&",
                    "x": 11.5,
                    "y": 0
                },
                {
                    "label": "*",
                    "x": 12.5,
                    "y": 0
                },
                {
                    "label": "(",
                    "x": 13.5,
                    "y": 0
                },
                {
                    "label": ")",
                    "x": 14.5,
                    "y": 0
                },
                {
                    "label": "_",
                    "x": 15.5,
                    "y": 0
                },
                {
                    "label": "+",
                    "x": 16.5,
                    "y": 0
                },
                {
                    "label": "Backspace",
                    "x": 17.5,
                    "y": 0,
                    "w": 2
                },
                {
                    "label": "Home",
                    "x": 19.5,
                    "y": 0
                },
                {
                    "x": 0,
                    "y": 1,
                    "h": 2
                },
                {
                    "x": 1,
                    "y": 1
                },
                {
                    "x": 2,
                    "y": 1
                },
                {
                    "x": 3,
                    "y": 1
                },
                {
                    "label": "Tab",
                    "x": 4.5,
                    "y": 1,
                    "w": 1.5
                },
                {
                    "label": "Q",
                    "x": 6,
                    "y": 1
                },
                {
                    "label": "W",
                    "x": 7,
                    "y": 1
                },
                {
                    "label": "E",
                    "x": 8,
                    "y": 1
                },
                {
                    "label": "R",
                    "x": 9,
                    "y": 1
                },
                {
                    "label": "T",
                    "x": 10,
                    "y": 1
                },
                {
                    "label": "Y",
                    "x": 11,
                    "y": 1
                },
                {
                    "label": "U",
                    "x": 12,
                    "y": 1
                },
                {
                    "label": "I",
                    "x": 13,
                    "y": 1
                },
                {
                    "label": "O",
                    "x": 14,
                    "y": 1
                },
                {
                    "label": "P",
                    "x": 15,
                    "y": 1
                },
                {
                    "label": "{",
                    "x": 16,
                    "y": 1
                },
                {
                    "label": "}",
                    "x": 17,
                    "y": 1
                },
                {
                    "label": "|",
                    "x": 18,
                    "y": 1,
                    "w": 1.5
                },
                {
                    "label": "PgUp",
                    "x": 19.5,
                    "y": 1
                },
                {
                    "x": 1,
                    "y": 2
                },
                {
                    "x": 2,
                    "y": 2
                },
                {
                    "x": 3,
                    "y": 2
                },
                {
                    "label": "Caps Lock",
                    "x": 4.5,
                    "y": 2,
                    "w": 1.75
                },
                {
                    "label": "A",
                    "x": 6.25,
                    "y": 2
                },
                {
                    "label": "S",
                    "x": 7.25,
                    "y": 2
                },
                {
                    "label": "D",
                    "x": 8.25,
                    "y": 2
                },
                {
                    "label": "F",
                    "x": 9.25,
                    "y": 2
                },
                {
                    "label": "G",
                    "x": 10.25,
                    "y": 2
                },
                {
                    "label": "H",
                    "x": 11.25,
                    "y": 2
                },
                {
                    "label": "J",
                    "x": 12.25,
                    "y": 2
                },
                {
                    "label": "K",
                    "x": 13.25,
                    "y": 2
                },
                {
                    "label": "L",
                    "x": 14.25,
                    "y": 2
                },
                {
                    "label": ":",
                    "x": 15.25,
                    "y": 2
                },
                {
                    "label": "\"",
                    "x": 16.25,
                    "y": 2
                },
                {
                    "label": "Enter",
                    "x": 17.25,
                    "y": 2,
                    "w": 2.25
                },
                {
                    "label": "PgDn",
                    "x": 19.5,
                    "y": 2
                },
                {
                    "x": 0,
                    "y": 3,
                    "h": 2
                },
                {
                    "x": 1,
                    "y": 3
                },
                {
                    "x": 2,
                    "y": 3
                },
                {
                    "x": 3,
                    "y": 3
                },
                {
                    "label": "Shift",
                    "x": 4.5,
                    "y": 3,
                    "w": 2.25
                },
                {
                    "label": "Z",
                    "x": 6.75,
                    "y": 3
                },
                {
                    "label": "X",
                    "x": 7.75,
                    "y": 3
                },
                {
                    "label": "C",
                    "x": 8.75,
                    "y": 3
                },
                {
                    "label": "V",
                    "x": 9.75,
                    "y": 3
                },
                {
                    "label": "B",
                    "x": 10.75,
                    "y": 3
                },
                {
                    "label": "N",
                    "x": 11.75,
                    "y": 3
                },
                {
                    "label": "M",
                    "x": 12.75,
                    "y": 3
                },
                {
                    "label": "<",
                    "x": 13.75,
                    "y": 3
                },
                {
                    "label": ">",
                    "x": 14.75,
                    "y": 3
                },
                {
                    "label": "?",
                    "x": 15.75,
                    "y": 3
                },
                {
                    "label": "Shift",
                    "x": 16.75,
                    "y": 3,
                    "w": 1.75
                },
                {
                    "label": "\u2191",
                    "x": 18.5,
                    "y": 3
                },
                {
                    "label": "End",
                    "x": 19.5,
                    "y": 3
                },
                {
                    "x": 1,
                    "y": 4
                },
                {
                    "x": 2,
                    "y": 4,
                    "w": 2
                },
                {
                    "label": "Ctrl",
                    "x": 4.5,
                    "y": 4,
                    "w": 1.25
                },
                {
                    "label": "Win",
                    "x": 5.75,
                    "y": 4,
                    "w": 1.25
                },
                {
                    "label": "Alt",
                    "x": 7,
                    "y": 4,
                    "w": 1.25
                },
                {
                    "label": "Space",
                    "x": 8.25,
                    "y": 4,
                    "w": 6.25
                },
                {
                    "label": "Alt",
                    "x": 14.5,
                    "y": 4,
                    "w": 1.5
                },
                {
                    "label": "Fn",
                    "x": 16,
                    "y": 4,
                    "w": 1.5
                },
                {
                    "label": "\u2190",
                    "x": 17.5,
                    "y": 4
                },
                {
                    "label": "\u2193",
                    "x": 18.5,
                    "y": 4
                },
                {
                    "label": "\u2192",
                    "x": 19.5,
                    "y": 4
                }
            ]
        }
    }
}

A keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c => keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c +63 -0
@@ 0,0 1,63 @@
/* Copyright 2022 Harrison Chan (Xelus)
 *
 * 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

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Keymap BASE: (Base Layer) Default Layer
   * ,-------------------.  ,-------------------------------------------------------------------.
   * |-   | *  | /  |NmLK|  |Esc| 1 |  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  BSPC   | Pscr|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 9  | 8  | 7  |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|   \|  | Del |
   * |  + |--------------|  |-------------------------------------------------------------------|
   * |    | 6  | 5  | 4  |  |Caps   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return   | Pgup|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 3  | 2  | 1  |  |Shift    |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up | Pgdn|
   * | ENT|-------------------------------------------------------------------------------------|
   * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
   * `------------------------------------------------------------------------------------------'
   */
  [0] = LAYOUT_ext65_hotswap(
    KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSPC, KC_PSCR,
    KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL ,
             KC_P6  , KC_P5  , KC_P4  , KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_ENT ,          KC_PGUP,
    KC_PENT, KC_P3  , KC_P2  , KC_P1  , KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,          KC_UP  , KC_PGDN,
             KC_PDOT, KC_P0  ,          KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT
  ),

  [1] = LAYOUT_ext65_hotswap(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR,
             RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          DB_TOGG,
    KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [2] = LAYOUT_ext65_hotswap(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [3] = LAYOUT_ext65_hotswap(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
  )
};

A keyboards/aeboards/ext65/rev3/keymaps/default/readme.md => keyboards/aeboards/ext65/rev3/keymaps/default/readme.md +2 -0
@@ 0,0 1,2 @@
# The Default Ext65 Rev3 Layout


A keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c => keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c +63 -0
@@ 0,0 1,63 @@
/* Copyright 2022 Harrison Chan (Xelus)
 *
 * 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

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  /* Keymap BASE: (Base Layer) Default Layer
   * ,-------------------.  ,-------------------------------------------------------------------.
   * |-   | *  | /  |NmLK|  |Esc| 1 |  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  BSPC   | Pscr|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 9  | 8  | 7  |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|   \|  | Del |
   * |  + |--------------|  |-------------------------------------------------------------------|
   * |    | 6  | 5  | 4  |  |Caps   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return   | Pgup|
   * |-------------------|  |-------------------------------------------------------------------|
   * |    | 3  | 2  | 1  |  |Shift    |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up | Pgdn|
   * | ENT|-------------------------------------------------------------------------------------|
   * |    | .  | 0       |  | Ctrl | Win | Alt |    Space        | FN | Ctrl |  |Left| Dn | Rght|
   * `------------------------------------------------------------------------------------------'
   */
  [0] = LAYOUT_ext65_hotswap(
    KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   , KC_6   , KC_7   , KC_8   , KC_9   , KC_0   , KC_MINS, KC_EQL , KC_BSPC, KC_PSCR,
    KC_PPLS, KC_P9  , KC_P8  , KC_P7  , KC_TAB , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   , KC_Y   , KC_U   , KC_I   , KC_O   , KC_P   , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL ,
             KC_P6  , KC_P5  , KC_P4  , KC_CAPS, KC_A   , KC_S   , KC_D   , KC_F   , KC_G   , KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN, KC_QUOT, KC_ENT ,          KC_PGUP,
    KC_PENT, KC_P3  , KC_P2  , KC_P1  , KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   , KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,          KC_UP  , KC_PGDN,
             KC_PDOT, KC_P0  ,          KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC ,                   MO(1)  , KC_RCTL,          KC_LEFT, KC_DOWN, KC_RGHT
  ),

  [1] = LAYOUT_ext65_hotswap(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
    KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR,
             RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          DB_TOGG,
    KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [2] = LAYOUT_ext65_hotswap(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
  ),

  [3] = LAYOUT_ext65_hotswap(
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,
    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                   KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS
  )
};

A keyboards/aeboards/ext65/rev3/keymaps/via/readme.md => keyboards/aeboards/ext65/rev3/keymaps/via/readme.md +2 -0
@@ 0,0 1,2 @@
# The VIA Ext65 Rev3 Layout


A keyboards/aeboards/ext65/rev3/keymaps/via/rules.mk => keyboards/aeboards/ext65/rev3/keymaps/via/rules.mk +1 -0
@@ 0,0 1,1 @@
VIA_ENABLE = yes

A keyboards/aeboards/ext65/rev3/rev3.c => keyboards/aeboards/ext65/rev3/rev3.c +38 -0
@@ 0,0 1,38 @@
/* Copyright 2022 Harrison Chan (Xelus)
 *
 * 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 "rev3.h"

// Tested and verified working on EXT65 Rev3
void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); }

void keyboard_pre_init_user(void) {
  // Call the keyboard pre init code.
  // Set our LED pins as output
  setPinOutput(LED_LAYERS_PIN);
}

layer_state_t layer_state_set_kb(layer_state_t state) {
    switch (get_highest_layer(state)) {
      case 1:
        writePinHigh(LED_LAYERS_PIN);
        break;
      default: //  for any other layers, or the default layer
        writePinLow(LED_LAYERS_PIN);
        break;
      }
    return layer_state_set_user(state);
}

A keyboards/aeboards/ext65/rev3/rev3.h => keyboards/aeboards/ext65/rev3/rev3.h +40 -0
@@ 0,0 1,40 @@
/* Copyright 2022 Harrison Chan (Xelus)
 *
 * 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 ____ KC_NO

#define LAYOUT_ext65_hotswap( \
  K000, K100, K001, K101,  K002, K102, K003, K103, K004, K104, K005, K105, K006, K106, K007, K107, K008, K108, K009, \
  K200, K300, K201, K301,  K202, K302, K203, K303, K204, K304, K205, K305, K206, K306, K207, K307, K208, K308, K209, \
        K500, K401, K501,  K402, K502, K403, K503, K404, K504, K405, K505, K406, K506, K407, K507, K408,       K409, \
  K600, K700, K601, K701,  K602, K702, K603, K703, K604, K704, K605, K705, K606, K706, K607, K708,       K608, K709, \
        K900, K801,        K802, K902, K803,                   K805,             K906, K807,       K908, K808, K909  \
) { \
  { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009 }, \
  { K100, K101, K102, K103, K104, K105, K106, K107, K108, ____ }, \
  { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209 }, \
  { K300, K301, K302, K303, K304, K305, K306, K307, K308, ____ }, \
  { ____, K401, K402, K403, K404, K405, K406, K407, K408, K409 }, \
  { K500, K501, K502, K503, K504, K505, K506, K507, ____, ____ }, \
  { K600, K601, K602, K603, K604, K605, K606, K607, K608, ____ }, \
  { K700, K701, K702, K703, K704, K705, K706, ____, K708, K709 }, \
  { ____, K801, K802, K803, ____, K805, ____, K807, K808, ____ }, \
  { K900, ____, K902, ____, ____, ____, K906, ____, K908, K909 } \
}

A keyboards/aeboards/ext65/rev3/rules.mk => keyboards/aeboards/ext65/rev3/rules.mk +19 -0
@@ 0,0 1,19 @@
# MCU name
MCU = atmega32u4

# Bootloader selection
BOOTLOADER = atmel-dfu

# Build Options
#   change yes to no to disable
#
BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
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
NKRO_ENABLE = yes           # Enable N-Key Rollover
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output
OPT = 3
LTO_ENABLE = yes