From 42ff4d474544332719b0874720edafc0aa95c975 Mon Sep 17 00:00:00 2001
From: Simon <68034180+rarepotato8de@users.noreply.github.com>
Date: Tue, 21 May 2024 02:54:36 +0200
Subject: [PATCH] Add 3x3macropad keyboard + keymap (#727)
* Firmware for 3x3macropad
QMK/VIAL Firmware for 3x3macropad
* Update info.json
Removed old device version
* Added readme and small code changes
Added readme and fixed code to match the requirements of QMK
* Added Copyright
* Fixed code convention
* Changes from qmk pull request
outdated file removed
oled in keyboard level
info.json removed old stuff
* Better firmware improvements
Fixed some stuff that was recommended with the QMK Push
* Formatted .c file
Using the format-c command
* Fixed bootmagic lite key
Changed key, so it's accessible even with OLED installed
* Update VIAL Layout
Added Encoder and OLED Option
+ Moved the Encoders to the right instead of at the top
* Updated UID
Generated new UID
---
.../rarepotato8de/3x3macropad/3x3macropad.c | 54 +++++++++++++++
keyboards/rarepotato8de/3x3macropad/info.json | 66 +++++++++++++++++++
.../3x3macropad/keymaps/default/keymap.c | 25 +++++++
.../3x3macropad/keymaps/vial/config.h | 21 ++++++
.../3x3macropad/keymaps/vial/keymap.c | 50 ++++++++++++++
.../3x3macropad/keymaps/vial/rules.mk | 7 ++
.../3x3macropad/keymaps/vial/vial.json | 21 ++++++
keyboards/rarepotato8de/3x3macropad/readme.md | 28 ++++++++
keyboards/rarepotato8de/3x3macropad/rules.mk | 0
9 files changed, 272 insertions(+)
create mode 100644 keyboards/rarepotato8de/3x3macropad/3x3macropad.c
create mode 100644 keyboards/rarepotato8de/3x3macropad/info.json
create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c
create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/vial/config.h
create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/vial/keymap.c
create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/vial/rules.mk
create mode 100644 keyboards/rarepotato8de/3x3macropad/keymaps/vial/vial.json
create mode 100644 keyboards/rarepotato8de/3x3macropad/readme.md
create mode 100644 keyboards/rarepotato8de/3x3macropad/rules.mk
diff --git a/keyboards/rarepotato8de/3x3macropad/3x3macropad.c b/keyboards/rarepotato8de/3x3macropad/3x3macropad.c
new file mode 100644
index 00000000000..ad7ad642158
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/3x3macropad.c
@@ -0,0 +1,54 @@
+/* Copyright 2024 RarePotato8DE
+ *
+ * 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 .
+ */
+
+#include "quantum.h"
+
+#ifdef OLED_ENABLE
+static void render_bongo1(void) {
+ static const char PROGMEM data[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x1c, 0x0e, 0x03, 0x01, 0x03, 0x07, 0x1c, 0x38, 0x30, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x30, 0x18, 0x18, 0x08, 0x18, 0x98, 0x30, 0x70, 0xf0, 0xb0, 0x18, 0x0c, 0x06, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x60, 0x60, 0x60, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x30, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x8e, 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1e, 0x1e, 0x0e, 0x00, 0x10, 0x38, 0x70, 0x70, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x1c, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x87, 0xc7, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ oled_write_raw_P(data, sizeof(data));
+}
+
+static void render_bongo2(void) {
+ static const char PROGMEM data[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x18, 0x0e, 0x07, 0x03, 0x01, 0x07, 0x0e, 0x1c, 0x30, 0x20, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x70, 0x30, 0x18, 0x0c, 0x06, 0x06, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0c, 0x08, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0x60, 0x60, 0x20, 0x30, 0x30, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe0, 0x38, 0x1c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x0e, 0x04, 0x00, 0x38, 0x30, 0x70, 0x30, 0x70, 0xe0, 0xe0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xc0, 0xe0, 0x60, 0x60, 0x70, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x90, 0x00, 0x1f, 0x31, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x18, 0x08, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x03, 0x07, 0x07, 0x00, 0xff, 0xff, 0x00, 0x08, 0x01, 0x38, 0x38, 0x02, 0x00, 0x01, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ oled_write_raw_P(data, sizeof(data));
+}
+
+/* This code switches the shown image on the oled on every 350th call of this function */
+bool showBongo1 = true;
+int calls = 0;
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ if (calls++ > 350) {
+ showBongo1 = !showBongo1;
+ calls = 0;
+ }
+ if (showBongo1) {
+ render_bongo1();
+ } else {
+ render_bongo2();
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/rarepotato8de/3x3macropad/info.json b/keyboards/rarepotato8de/3x3macropad/info.json
new file mode 100644
index 00000000000..6e5c553450c
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/info.json
@@ -0,0 +1,66 @@
+{
+ "manufacturer": "RarePotato8DE",
+ "keyboard_name": "3x3macropad",
+ "maintainer": "RarePotato8DE",
+ "development_board": "promicro",
+ "build": {
+ "lto": true
+ },
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "F4", "pin_b": "B1"}
+ ]
+ },
+ "bootmagic": {
+ "matrix": [1, 0]
+ },
+ "features": {
+ "bootmagic": true,
+ "encoder": true,
+ "extrakey": true,
+ "nkro": true,
+ "oled": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["D7", "B3", "B2"],
+ "rows": ["F7", "B5", "B6"]
+ },
+ "rgblight": {
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "snake": true,
+ "static_gradient": true
+ },
+ "led_count": 6
+ },
+ "url": "https://github.com/rarepotato8de/3x3macropad",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x0001",
+ "vid": "0x5353"
+ },
+ "ws2812": {
+ "pin": "E6"
+ },
+ "community_layouts": ["ortho_3x3"],
+ "layouts": {
+ "LAYOUT_ortho_3x3": {
+ "layout": [
+ {"label": "k00", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "k01", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "k02", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "k10", "matrix": [1, 0], "x": 0, "y": 1},
+ {"label": "k11", "matrix": [1, 1], "x": 1, "y": 1},
+ {"label": "k12", "matrix": [1, 2], "x": 2, "y": 1},
+ {"label": "k20", "matrix": [2, 0], "x": 0, "y": 2},
+ {"label": "k21", "matrix": [2, 1], "x": 1, "y": 2},
+ {"label": "k22", "matrix": [2, 2], "x": 2, "y": 2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c b/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c
new file mode 100644
index 00000000000..7f68e145e73
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/keymaps/default/keymap.c
@@ -0,0 +1,25 @@
+/* Copyright 2024 RarePotato8DE
+ *
+ * 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_3x3(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, KC_9
+ )
+};
diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/vial/config.h b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/config.h
new file mode 100644
index 00000000000..8540746d481
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2024 RarePotato8DE
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x38, 0x9A, 0xC4, 0x78, 0xC1, 0x20, 0x60, 0x62}
+#define VIAL_UNLOCK_COMBO_ROWS { 1, 1 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 2 }
diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/vial/keymap.c b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..468f5944726
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2024 RarePotato8DE
+ *
+ * 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+#define ____ KC_TRNS
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_3x3(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, KC_9
+ ),
+ [1] = LAYOUT_ortho_3x3(
+ ____, ____, ____,
+ ____, ____, ____,
+ ____, ____, ____
+ ),
+ [2] = LAYOUT_ortho_3x3(
+ ____, ____, ____,
+ ____, ____, ____,
+ ____, ____, ____
+ ),
+ [3] = LAYOUT_ortho_3x3(
+ ____, ____, ____,
+ ____, ____, ____,
+ ____, ____, ____
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(____, ____) },
+ [2] = { ENCODER_CCW_CW(____, ____) },
+ [3] = { ENCODER_CCW_CW(____, ____) },
+};
+#endif
diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/vial/rules.mk b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..5cf4baf9302
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_ENCODERS_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+QMK_SETTINGS = no
+TAP_DANCE_ENABLE = no
+COMBO_ENABLE = no
diff --git a/keyboards/rarepotato8de/3x3macropad/keymaps/vial/vial.json b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/vial.json
new file mode 100644
index 00000000000..bd7ac061e6f
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/keymaps/vial/vial.json
@@ -0,0 +1,21 @@
+{
+ "name": "3x3macropad",
+ "vendorId": "0x5353",
+ "productId": "0x0001",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 3,
+ "cols": 3
+ },
+ "layouts": {
+ "labels":[
+ "OLED",
+ "Encoder"
+ ],
+ "keymap": [
+ [{"x":-2},{"d":true},"0,0\n\n\n0,1",{"d":true},"0,1\n\n\n0,1","0,0\n\n\n0,0","0,1\n\n\n0,0","0,2",{"x":-1},"0,1\n\n\n1,1\n\n\n\n\n\ne",{"d":true},"0,1\n\n\n1,0\n\n\n\n\n\ne"],
+ ["1,0","1,1","1,2",{"x":-1},"0,0\n\n\n1,1\n\n\n\n\n\ne",{"d":true},"0,0\n\n\n1,0\n\n\n\n\n\ne"],
+ ["2,0","2,1","2,2"]
+ ]
+ }
+}
diff --git a/keyboards/rarepotato8de/3x3macropad/readme.md b/keyboards/rarepotato8de/3x3macropad/readme.md
new file mode 100644
index 00000000000..60a5caa2220
--- /dev/null
+++ b/keyboards/rarepotato8de/3x3macropad/readme.md
@@ -0,0 +1,28 @@
+# 3x3macropad
+
+![3x3macropad](https://i.imgur.com/LMkcKOw.jpg)
+
+The 3x3macropad is a small macropad with a cool OLED screen and rotary encoder.
+It was inspired by stacked FR4 keyboards like the Discipline65.
+
+* Keyboard Maintainer: [RarePotato8DE](https://github.com/rarepotato8de)
+* Hardware Supported: 3x3macropad
+* Hardware Availability: [Open source!](https://github.com/rarepotato8de/3x3macropad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make rarepotato8de/3x3macropad:default
+
+Flashing example for this keyboard:
+
+ make rarepotato8de/3x3macropad:default:flash
+
+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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (the top left one below the OLED) and plug in the keyboard
+* **Physical reset button**: Short the two through hole pins on the back of the PCB (positioned at the rotary encoder)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
\ No newline at end of file
diff --git a/keyboards/rarepotato8de/3x3macropad/rules.mk b/keyboards/rarepotato8de/3x3macropad/rules.mk
new file mode 100644
index 00000000000..e69de29bb2d