summary refs log tree commit diff
diff options
context:
space:
mode:
authorXelus22 <17491233+Xelus22@users.noreply.github.com>2022-01-16 00:17:01 +1100
committerGitHub <noreply@github.com>2022-01-15 15:17:01 +0200
commit4cc28a3ae4bfa93ada5af3198d96cc53f40bd41b (patch)
treedb153c1115a9abc92cae20667cdf5dc249aff9f9
parent1ca3981c14f0277cef57ace91d150e306a89192f (diff)
Add Rakk Lam Ang Pro - RGB Hotswap (#197)
* rakk lam ang pro initial commit

* add default and clean up the code

* fix RGB positioning
-rw-r--r--keyboards/rakk_lam_ang_pro/config.h107
-rw-r--r--keyboards/rakk_lam_ang_pro/info.json473
-rw-r--r--keyboards/rakk_lam_ang_pro/keymaps/default/keymap.c71
-rw-r--r--keyboards/rakk_lam_ang_pro/keymaps/via/keymap.c87
-rw-r--r--keyboards/rakk_lam_ang_pro/keymaps/via/rules.mk1
-rw-r--r--keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.c45
-rw-r--r--keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.h37
-rw-r--r--keyboards/rakk_lam_ang_pro/readme.md19
-rw-r--r--keyboards/rakk_lam_ang_pro/rules.mk25
9 files changed, 865 insertions, 0 deletions
diff --git a/keyboards/rakk_lam_ang_pro/config.h b/keyboards/rakk_lam_ang_pro/config.h
new file mode 100644
index 000000000..52904989b
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/config.h
@@ -0,0 +1,107 @@
+/* Copyright 2021 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
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0x3434
+#define PRODUCT_ID      0xFE0E
+#define DEVICE_VER		0x0001
+#define MANUFACTURER    RAKK LAM ANG
+#define PRODUCT         RAKK LAM ANG PRO
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_COL_PINS { A8, A9, A10, A11, A12, A13, A14, A15, B0, B1, B2, B3, B4, B5, B6, B7, B8 }
+#define MATRIX_ROW_PINS { C15, D11, D10, D9, D8, D7 }
+
+// Encoder Config
+#define ENCODERS_PAD_A { B10 }
+#define ENCODERS_PAD_B { B9 }
+#define ENCODER_RESOLUTION 2
+
+// LED Status Indicators
+#define LED_CAPS_LOCK_PIN D6
+#define LED_NUM_LOCK_PIN A6
+#define LED_SCROLL_LOCK_PIN A7
+#define LED_PIN_ON_STATE  1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+// RGB Matrix Config
+#define LED_MATRIX_ROWS MATRIX_ROWS
+#define LED_MATRIX_ROW_CHANNELS 3
+#define LED_MATRIX_ROWS_HW (LED_MATRIX_ROWS * LED_MATRIX_ROW_CHANNELS)
+#define LED_MATRIX_ROW_PINS { C3, C1, C0, C6, C5, C4, C9, C8, C7, C12, C11, C10, B13, C14, C13, B14, B15, D3 }
+
+#define LED_MATRIX_COLS MATRIX_COLS
+#define LED_MATRIX_COL_PINS MATRIX_COL_PINS
+
+#define DRIVER_LED_TOTAL 87
+
+// RGB Matrix Effects
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/rakk_lam_ang_pro/info.json b/keyboards/rakk_lam_ang_pro/info.json
new file mode 100644
index 000000000..33bc48a76
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/info.json
@@ -0,0 +1,473 @@
+{
+    "keyboard_name": "Rakk Lam Ang Pro RGB",
+    "url": "",
+    "maintainer": "xelus22",
+    "width": 17,
+    "height": 6,
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {
+                    "label": "Esc",
+                    "x": 0,
+                    "y": 0
+                },
+                {
+                    "label": "F1",
+                    "x": 2,
+                    "y": 0
+                },
+                {
+                    "label": "F2",
+                    "x": 3,
+                    "y": 0
+                },
+                {
+                    "label": "F3",
+                    "x": 4,
+                    "y": 0
+                },
+                {
+                    "label": "F4",
+                    "x": 5,
+                    "y": 0
+                },
+                {
+                    "label": "F5",
+                    "x": 6.5,
+                    "y": 0
+                },
+                {
+                    "label": "F6",
+                    "x": 7.5,
+                    "y": 0
+                },
+                {
+                    "label": "F7",
+                    "x": 8.5,
+                    "y": 0
+                },
+                {
+                    "label": "F8",
+                    "x": 9.5,
+                    "y": 0
+                },
+                {
+                    "label": "F9",
+                    "x": 11,
+                    "y": 0
+                },
+                {
+                    "label": "F10",
+                    "x": 12,
+                    "y": 0
+                },
+                {
+                    "label": "F11",
+                    "x": 13,
+                    "y": 0
+                },
+                {
+                    "label": "F12",
+                    "x": 14,
+                    "y": 0
+                },
+                {
+                    "label": "PrtSc",
+                    "x": 15.25,
+                    "y": 0
+                },
+                {
+                    "label": "Scroll Lock",
+                    "x": 16.25,
+                    "y": 0
+                },
+                {
+                    "label": "Pause",
+                    "x": 17.25,
+                    "y": 0
+                },
+                {
+                    "label": "~",
+                    "x": 0,
+                    "y": 1.5
+                },
+                {
+                    "label": "!",
+                    "x": 1,
+                    "y": 1.5
+                },
+                {
+                    "label": "@",
+                    "x": 2,
+                    "y": 1.5
+                },
+                {
+                    "label": "#",
+                    "x": 3,
+                    "y": 1.5
+                },
+                {
+                    "label": "$",
+                    "x": 4,
+                    "y": 1.5
+                },
+                {
+                    "label": "%",
+                    "x": 5,
+                    "y": 1.5
+                },
+                {
+                    "label": "^",
+                    "x": 6,
+                    "y": 1.5
+                },
+                {
+                    "label": "&",
+                    "x": 7,
+                    "y": 1.5
+                },
+                {
+                    "label": "*",
+                    "x": 8,
+                    "y": 1.5
+                },
+                {
+                    "label": "(",
+                    "x": 9,
+                    "y": 1.5
+                },
+                {
+                    "label": ")",
+                    "x": 10,
+                    "y": 1.5
+                },
+                {
+                    "label": "_",
+                    "x": 11,
+                    "y": 1.5
+                },
+                {
+                    "label": "+",
+                    "x": 12,
+                    "y": 1.5
+                },
+                {
+                    "label": "Backspace",
+                    "x": 13,
+                    "y": 1.5,
+                    "w": 2
+                },
+                {
+                    "label": "Insert",
+                    "x": 15.25,
+                    "y": 1.5
+                },
+                {
+                    "label": "Home",
+                    "x": 16.25,
+                    "y": 1.5
+                },
+                {
+                    "label": "PgUp",
+                    "x": 17.25,
+                    "y": 1.5
+                },
+                {
+                    "label": "Tab",
+                    "x": 0,
+                    "y": 2.5,
+                    "w": 1.5
+                },
+                {
+                    "label": "Q",
+                    "x": 1.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "W",
+                    "x": 2.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "E",
+                    "x": 3.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "R",
+                    "x": 4.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "T",
+                    "x": 5.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "Y",
+                    "x": 6.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "U",
+                    "x": 7.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "I",
+                    "x": 8.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "O",
+                    "x": 9.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "P",
+                    "x": 10.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "{",
+                    "x": 11.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "}",
+                    "x": 12.5,
+                    "y": 2.5
+                },
+                {
+                    "label": "|",
+                    "x": 13.5,
+                    "y": 2.5,
+                    "w": 1.5
+                },
+                {
+                    "label": "Delete",
+                    "x": 15.25,
+                    "y": 2.5
+                },
+                {
+                    "label": "End",
+                    "x": 16.25,
+                    "y": 2.5
+                },
+                {
+                    "label": "PgDn",
+                    "x": 17.25,
+                    "y": 2.5
+                },
+                {
+                    "label": "Caps Lock",
+                    "x": 0,
+                    "y": 3.5,
+                    "w": 1.75
+                },
+                {
+                    "label": "A",
+                    "x": 1.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "S",
+                    "x": 2.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "D",
+                    "x": 3.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "F",
+                    "x": 4.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "G",
+                    "x": 5.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "H",
+                    "x": 6.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "J",
+                    "x": 7.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "K",
+                    "x": 8.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "L",
+                    "x": 9.75,
+                    "y": 3.5
+                },
+                {
+                    "label": ":",
+                    "x": 10.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "\"",
+                    "x": 11.75,
+                    "y": 3.5
+                },
+                {
+                    "label": "Enter",
+                    "x": 12.75,
+                    "y": 3.5,
+                    "w": 2.25
+                },
+                {
+                    "label": "GUI_TOG",
+                    "x": 15.25,
+                    "y": 3.5
+                },
+                {
+                    "label": "RGB_TOG",
+                    "x": 16.25,
+                    "y": 3.5
+                },
+                {
+                    "label": "Shift",
+                    "x": 0,
+                    "y": 4.5,
+                    "w": 2.25
+                },
+                {
+                    "label": "Z",
+                    "x": 2.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "X",
+                    "x": 3.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "C",
+                    "x": 4.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "V",
+                    "x": 5.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "B",
+                    "x": 6.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "N",
+                    "x": 7.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "M",
+                    "x": 8.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "<",
+                    "x": 9.25,
+                    "y": 4.5
+                },
+                {
+                    "label": ">",
+                    "x": 10.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "?",
+                    "x": 11.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "Shift",
+                    "x": 12.25,
+                    "y": 4.5,
+                    "w": 2.75
+                },
+                {
+                    "label": "\u2191",
+                    "x": 16.25,
+                    "y": 4.5
+                },
+                {
+                    "label": "Ctrl",
+                    "x": 0,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "Win",
+                    "x": 1.25,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "Alt",
+                    "x": 2.5,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "Space",
+                    "x": 3.75,
+                    "y": 5.5,
+                    "w": 6.25
+                },
+                {
+                    "label": "Alt",
+                    "x": 10,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "Win",
+                    "x": 11.25,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "Menu",
+                    "x": 12.5,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "Ctrl",
+                    "x": 13.75,
+                    "y": 5.5,
+                    "w": 1.25
+                },
+                {
+                    "label": "\u2190",
+                    "x": 15.25,
+                    "y": 5.5
+                },
+                {
+                    "label": "\u2193",
+                    "x": 16.25,
+                    "y": 5.5
+                },
+                {
+                    "label": "\u2192",
+                    "x": 17.25,
+                    "y": 5.5
+                }
+            ]
+        }
+    }
+}
diff --git a/keyboards/rakk_lam_ang_pro/keymaps/default/keymap.c b/keyboards/rakk_lam_ang_pro/keymaps/default/keymap.c
new file mode 100644
index 000000000..c2bfee907
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/keymaps/default/keymap.c
@@ -0,0 +1,71 @@
+/* Copyright 2021 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] = {
+
+/*				+--------------------------------------------------------------------------+----------------+
+				| ESC |  | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12|  | |PSCR|????|PAUS|
+				+--------------------------------------------------------------------------+------|----|----|
+ 				|  ~  |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = | BACKSP | |INS |SCRL|PGUP|
+ 				+--------------------------------------------------------------------------+------|----|----|
+ 				|  TAB  |  Q |  W |  E |  R |  T |  Y |  U |  I |  O |  P |  [ |  ] |   \  | |DEL |END |PGDN|
+ 				+--------------------------------------------------------------------------+------|----|----|
+ 				| CAPSLCK  |  A |  S |  D |  F |  G |  H |  J |  K |  L | ; | ' |  RETURN  |                |
+ 				+--------------------------------------------------------------------------+      |----|    |
+ 				| LSHIFT     |  Z |  X |  C |  V |  B |  N |  M | , | . |  / |   RSHIFT    |      | UP |    |
+ 				+--------------------------------------------------------------------------+------|----|----|
+ 				|LCTRL| LGUI| LALT |            SPACE            | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT |
+ 				+--------------------------------------------------------------------------+----------------+
+*/
+
+    [0] = LAYOUT_ansi(
+        KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,      KC_PSCR, KC_SLCK, KC_PAUS,
+        KC_GRV,  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_INS,  KC_HOME, KC_PGUP,
+        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_END,  KC_PGDN,
+        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,      GUI_TOG, RGB_TOG,
+        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_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT, KC_RGUI, MO(1),   KC_RCTL,     KC_LEFT, KC_DOWN, KC_RGHT
+    ),
+    [1] = LAYOUT_ansi(
+        KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET  ,     RGB_SPI, RGB_SAI, RGB_HUI,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     RGB_SPD, RGB_SAD, RGB_HUD,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,     KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,                       RGB_VAI,
+        KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,                                     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     RGB_RMOD,RGB_VAD, RGB_MOD
+    )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+    if (index == 0) { /* First encoder */
+        if (clockwise) {
+            tap_code(KC_VOLU);
+        } else {
+            tap_code(KC_VOLD);
+        }
+    }
+    return false;
+}
+
+void keyboard_post_init_user(void) {
+  // Customise these values to desired behaviour
+  //debug_enable=true;
+  //debug_matrix=true;
+  //debug_keyboard=true;
+  //debug_mouse=true;
+}
diff --git a/keyboards/rakk_lam_ang_pro/keymaps/via/keymap.c b/keyboards/rakk_lam_ang_pro/keymaps/via/keymap.c
new file mode 100644
index 000000000..3e3107241
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/keymaps/via/keymap.c
@@ -0,0 +1,87 @@
+/* Copyright 2021 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] = {
+
+
+/*				+--------------------------------------------------------------------------+----------------+
+				| ESC |  | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9| F10| F11| F12|  | |PSCR|????|PAUS|
+				+--------------------------------------------------------------------------+------|----|----|
+ 				|  ~  |  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = | BACKSP | |INS |SCRL|PGUP|
+ 				+--------------------------------------------------------------------------+------|----|----|
+ 				|  TAB  |  Q |  W |  E |  R |  T |  Y |  U |  I |  O |  P |  [ |  ] |   \  | |DEL |END |PGDN|
+ 				+--------------------------------------------------------------------------+------|----|----|
+ 				| CAPSLCK  |  A |  S |  D |  F |  G |  H |  J |  K |  L | ; | ' |  RETURN  |                |
+ 				+--------------------------------------------------------------------------+      |----|    |
+ 				| LSHIFT     |  Z |  X |  C |  V |  B |  N |  M | , | . |  / |   RSHIFT    |      | UP |    |
+ 				+--------------------------------------------------------------------------+------|----|----|
+ 				|LCTRL| LGUI| LALT |            SPACE            | RALT| RGUI | FN | RCTRL | |LFT |DWN |RGT |
+ 				+--------------------------------------------------------------------------+----------------+
+*/
+    [0] = LAYOUT_ansi(
+        KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,      KC_PSCR, KC_SLCK, KC_PAUS,
+        KC_GRV,  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_INS,  KC_HOME, KC_PGUP,
+        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_END,  KC_PGDN,
+        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,      GUI_TOG, RGB_TOG,
+        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_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT, KC_RGUI, MO(1),   KC_RCTL,     KC_LEFT, KC_DOWN, KC_RGHT
+    ),
+    [1] = LAYOUT_ansi(
+        KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET  ,     RGB_SPI, RGB_SAI, RGB_HUI,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     RGB_SPD, RGB_SAD, RGB_HUD,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,     KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,                       RGB_VAI,
+        KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,                                     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     RGB_RMOD,RGB_VAD, RGB_MOD
+    ),
+    [2] = LAYOUT_ansi(
+        KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,     KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,                       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_ansi(
+        KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,     KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS,                       KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS,                                     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS
+    )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+    if (index == 0) { /* First encoder */
+        if (clockwise) {
+            tap_code(KC_VOLU);
+        } else {
+            tap_code(KC_VOLD);
+        }
+    }
+    return false;
+}
+
+void keyboard_post_init_user(void) {
+  // Customise these values to desired behaviour
+  //debug_enable=true;
+  //debug_matrix=true;
+  //debug_keyboard=true;
+  //debug_mouse=true;
+}
diff --git a/keyboards/rakk_lam_ang_pro/keymaps/via/rules.mk b/keyboards/rakk_lam_ang_pro/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.c b/keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.c
new file mode 100644
index 000000000..1dfe31e6f
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.c
@@ -0,0 +1,45 @@
+/* Copyright 2021 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 "rakk_lam_ang_pro.h"
+
+#define XX NO_LED
+
+#ifdef RGB_MATRIX_ENABLE
+__attribute__ ((weak))
+led_config_t g_led_config = { {
+  {  0,  1, 2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, XX,  13, 14, 15},
+  { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,  30, 31, 32},
+  { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,  47, 48, 49},
+  { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, XX, 62,  XX, XX, XX},
+  { 63, XX, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, XX, 74,  XX, 75, XX},
+  { 76, 77, 78, XX, XX, XX, 79, XX, XX, XX, 80, 81, 82, 83,  84, 85, 86}
+}, {
+    {0  ,  0}, {26 ,  0}, {39 ,  0}, {52 ,  0}, {65 ,  0}, {84 ,  0}, {97 ,  0}, {110,  0}, {123,  0}, {143,  0}, {156,  0}, {169,  0}, {182,  0},            {198,  0}, {211,  0}, {224,  0},
+    {0  , 17}, {13 , 17}, {26 , 17}, {39 , 17}, {52 , 17}, {65 , 17}, {78 , 17}, {91 , 17}, {104, 17}, {117, 17}, {130, 17}, {143, 17}, {156, 17}, {175, 17}, {198, 17}, {211, 17}, {224, 17},
+    {3  , 29}, {19 , 29}, {32 , 29}, {45 , 29}, {58 , 29}, {71 , 29}, {84 , 29}, {97 , 29}, {110, 29}, {123, 29}, {136, 29}, {149, 29}, {162, 29}, {179, 29}, {198, 29}, {211, 29}, {224, 29},
+    {5  , 41}, {23 , 41}, {36 , 41}, {49 , 41}, {62 , 41}, {75 , 41}, {88 , 41}, {101, 41}, {114, 41}, {127, 41}, {140, 41}, {153, 41},            {174, 41},
+    {8  , 52},            {29 , 52}, {42 , 52}, {55 , 52}, {68 , 52}, {81 , 52}, {94 , 52}, {107, 52}, {120, 52}, {133, 52}, {146, 52},            {170, 52},            {211, 52},
+    {2  , 64}, {18 , 64}, {34 , 64},                                  {83 , 64},                                  {131, 64}, {148, 64}, {164, 64}, {180, 64}, {198, 64}, {211, 64}, {224, 64},
+}, {
+   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    4, 4, 4,
+   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+   4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    4,
+   4,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    4,    4,
+   4, 4, 4,          4,          4, 4, 4, 4, 4, 4, 4
+} };
+#endif
diff --git a/keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.h b/keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.h
new file mode 100644
index 000000000..cdd657ca4
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/rakk_lam_ang_pro.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 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 XXX KC_NO
+
+#define LAYOUT_ansi( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c,      k0e, k0f, k0g, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b,      k3d, k3f, k3e,      \
+    k40,      k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b,      k4d,      k4f,      \
+    k50, k51, k52,                k56,                k5a, k5b, k5c, k5d, k5e, k5f, k5g  \
+) { \
+    { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e, k0f, k0g }, \
+    { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e, k3f, XXX }, \
+    { k40, XXX, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, XXX, k4d, XXX, k4f, XXX }, \
+    { k50, k51, k52, XXX, XXX, XXX, k56, XXX, XXX, XXX, k5a, k5b, k5c, k5d, k5e, k5f, k5g }  \
+}
diff --git a/keyboards/rakk_lam_ang_pro/readme.md b/keyboards/rakk_lam_ang_pro/readme.md
new file mode 100644
index 000000000..7421176bc
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/readme.md
@@ -0,0 +1,19 @@
+# Rakk Lam Ang Pro
+
+Rakk Lam Ang Pro Hotswap RGB
+
+Make example for this keyboard (after setting up your build environment):
+
+    make rakk_lam_ang_pro:default
+
+* * *
+For more info and detailed flashing instructions, please visit https://github.com/alex-dinh/keychron-k8
+
+Reset your keyboard in 3 ways:
+<ol>
+<li>Software reset on Fn + Backspace</li>
+<li>Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard</li>
+<li>Physical reset: Short Boot0 while plugging in the keyboard</li>
+</ol>
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/rakk_lam_ang_pro/rules.mk b/keyboards/rakk_lam_ang_pro/rules.mk
new file mode 100644
index 000000000..c8120a461
--- /dev/null
+++ b/keyboards/rakk_lam_ang_pro/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = SN32F248BF
+
+# Build Options
+#   comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no        # 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
+
+WAIT_FOR_USB = no
+CUSTOM_MATRIX = yes
+ENCODER_ENABLE = yes
+
+# Custom RGB matrix handling
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = SN32F24xB
+
+# project specific files
+SRC = ../../../drivers/led/sn32/matrix_sn32f24xx.c