Pārlūkot izejas kodu

[Keyboard] EXT65 rev3 support (#18873)

Xelus22 2 gadi atpakaļ
vecāks
revīzija
26db668878
32 mainītis faili ar 1109 papildinājumiem un 258 dzēšanām
  1. 0 0
      keyboards/aeboards/ext65/.noci
  2. 0 1
      keyboards/aeboards/ext65/ext65.c
  3. 0 9
      keyboards/aeboards/ext65/ext65.h
  4. 1 105
      keyboards/aeboards/ext65/info.json
  5. 0 0
      keyboards/aeboards/ext65/rev1/.noci
  6. 114 1
      keyboards/aeboards/ext65/rev1/info.json
  7. 3 39
      keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c
  8. 0 0
      keyboards/aeboards/ext65/rev1/keymaps/default/readme.md
  9. 3 39
      keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c
  10. 0 0
      keyboards/aeboards/ext65/rev1/keymaps/via/readme.md
  11. 0 0
      keyboards/aeboards/ext65/rev1/keymaps/via/rules.mk
  12. 16 0
      keyboards/aeboards/ext65/rev1/rev1.c
  13. 0 1
      keyboards/aeboards/ext65/rev1/rev1.h
  14. 15 35
      keyboards/aeboards/ext65/rev2/config.h
  15. 114 1
      keyboards/aeboards/ext65/rev2/info.json
  16. 63 0
      keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c
  17. 2 0
      keyboards/aeboards/ext65/rev2/keymaps/default/readme.md
  18. 63 0
      keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c
  19. 2 0
      keyboards/aeboards/ext65/rev2/keymaps/via/readme.md
  20. 3 0
      keyboards/aeboards/ext65/rev2/keymaps/via/rules.mk
  21. 49 0
      keyboards/aeboards/ext65/rev2/rev2.c
  22. 0 1
      keyboards/aeboards/ext65/rev2/rev2.h
  23. 8 2
      keyboards/aeboards/ext65/rev3/config.h
  24. 440 0
      keyboards/aeboards/ext65/rev3/info.json
  25. 63 0
      keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c
  26. 2 0
      keyboards/aeboards/ext65/rev3/keymaps/default/readme.md
  27. 63 0
      keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c
  28. 2 0
      keyboards/aeboards/ext65/rev3/keymaps/via/readme.md
  29. 1 0
      keyboards/aeboards/ext65/rev3/keymaps/via/rules.mk
  30. 23 24
      keyboards/aeboards/ext65/rev3/rev3.c
  31. 40 0
      keyboards/aeboards/ext65/rev3/rev3.h
  32. 19 0
      keyboards/aeboards/ext65/rev3/rules.mk

+ 0 - 0
keyboards/aeboards/ext65/.noci


+ 0 - 1
keyboards/aeboards/ext65/ext65.c

@@ -1 +0,0 @@
-#include "ext65.h"

+ 0 - 9
keyboards/aeboards/ext65/ext65.h

@@ -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

+ 1 - 105
keyboards/aeboards/ext65/info.json

@@ -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"
     }
 }

+ 0 - 0
keyboards/aeboards/ext65/rev1/.noci


+ 114 - 1
keyboards/aeboards/ext65/rev1/info.json

@@ -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}
+            ]
+        }
     }
 }

+ 3 - 39
keyboards/aeboards/ext65/keymaps/default/keymap.c → keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c

@@ -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

+ 0 - 0
keyboards/aeboards/ext65/keymaps/default/readme.md → keyboards/aeboards/ext65/rev1/keymaps/default/readme.md


+ 3 - 39
keyboards/aeboards/ext65/keymaps/via/keymap.c → keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c

@@ -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

+ 0 - 0
keyboards/aeboards/ext65/keymaps/via/readme.md → keyboards/aeboards/ext65/rev1/keymaps/via/readme.md


+ 0 - 0
keyboards/aeboards/ext65/keymaps/via/rules.mk → keyboards/aeboards/ext65/rev1/keymaps/via/rules.mk


+ 16 - 0
keyboards/aeboards/ext65/rev1/rev1.c

@@ -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) {

+ 0 - 1
keyboards/aeboards/ext65/rev1/rev1.h

@@ -16,7 +16,6 @@
 
 #pragma once
 
-#include "ext65.h"
 #include "quantum.h"
 
 #define ____ KC_NO

+ 15 - 35
keyboards/aeboards/ext65/rev2/config.h

@@ -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

+ 114 - 1
keyboards/aeboards/ext65/rev2/info.json

@@ -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}
+            ]
+        }
     }
 }

+ 63 - 0
keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c

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

+ 2 - 0
keyboards/aeboards/ext65/rev2/keymaps/default/readme.md

@@ -0,0 +1,2 @@
+# The Default Ext65Rev2 Layout
+

+ 63 - 0
keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c

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

+ 2 - 0
keyboards/aeboards/ext65/rev2/keymaps/via/readme.md

@@ -0,0 +1,2 @@
+# The VIA Ext65Rev2 Layout
+

+ 3 - 0
keyboards/aeboards/ext65/rev2/keymaps/via/rules.mk

@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+OLED_ENABLE = yes
+# OLED_DRIVER = not a real thing

+ 49 - 0
keyboards/aeboards/ext65/rev2/rev2.c

@@ -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
+

+ 0 - 1
keyboards/aeboards/ext65/rev2/rev2.h

@@ -16,7 +16,6 @@
 
 #pragma once
 
-#include "ext65.h"
 #include "quantum.h"
 
 #define ____ KC_NO

+ 8 - 2
keyboards/aeboards/ext65/config.h → keyboards/aeboards/ext65/rev3/config.h

@@ -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

+ 440 - 0
keyboards/aeboards/ext65/rev3/info.json

@@ -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
+                }
+            ]
+        }
+    }
+}

+ 63 - 0
keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c

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

+ 2 - 0
keyboards/aeboards/ext65/rev3/keymaps/default/readme.md

@@ -0,0 +1,2 @@
+# The Default Ext65 Rev3 Layout
+

+ 63 - 0
keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c

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

+ 2 - 0
keyboards/aeboards/ext65/rev3/keymaps/via/readme.md

@@ -0,0 +1,2 @@
+# The VIA Ext65 Rev3 Layout
+

+ 1 - 0
keyboards/aeboards/ext65/rev3/keymaps/via/rules.mk

@@ -0,0 +1 @@
+VIA_ENABLE = yes

+ 23 - 24
keyboards/aeboards/ext65/rev1/config.h → keyboards/aeboards/ext65/rev3/rev3.c

@@ -1,4 +1,4 @@
-/* Copyright 2018 Jason Williams (Wilba)
+/* 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
@@ -14,26 +14,25 @@
  * 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
+#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);
+}

+ 40 - 0
keyboards/aeboards/ext65/rev3/rev3.h

@@ -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 } \
+}

+ 19 - 0
keyboards/aeboards/ext65/rev3/rules.mk

@@ -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