summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/themadnoodle/udon13/config.h6
-rw-r--r--keyboards/themadnoodle/udon13/info.json75
-rw-r--r--keyboards/themadnoodle/udon13/keymaps/default/keymap.c52
-rw-r--r--keyboards/themadnoodle/udon13/keymaps/default/rules.mk2
-rw-r--r--keyboards/themadnoodle/udon13/keymaps/via/keymap.c52
-rw-r--r--keyboards/themadnoodle/udon13/keymaps/via/rules.mk3
-rw-r--r--keyboards/themadnoodle/udon13/readme.md27
-rw-r--r--keyboards/themadnoodle/udon13/rules.mk1
-rw-r--r--keyboards/themadnoodle/udon13/udon13.c76
9 files changed, 294 insertions, 0 deletions
diff --git a/keyboards/themadnoodle/udon13/config.h b/keyboards/themadnoodle/udon13/config.h
new file mode 100644
index 0000000000..fbb498c408
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/config.h
@@ -0,0 +1,6 @@
+// Copyright 2023 Jesse Leventhal (@The=Mad-Noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 5
diff --git a/keyboards/themadnoodle/udon13/info.json b/keyboards/themadnoodle/udon13/info.json
new file mode 100644
index 0000000000..b0ece11612
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/info.json
@@ -0,0 +1,75 @@
+{
+ "manufacturer": "The Mad Noodle",
+ "keyboard_name": "Udon13",
+ "maintainer": "The-Mad-Noodle",
+ "url": "https://www.madnoodleprototypes.com/",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "encoder": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true,
+ "oled": true
+ },
+ "rgblight": {
+ "hue_steps": 10,
+ "led_count": 6,
+ "sleep": true,
+ "animations": {
+ "breathing": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "snake": true,
+ "knight": true,
+ "christmas": true,
+ "static_gradient": true,
+ "rgb_test": true,
+ "alternating": true,
+ "twinkle": true
+ }
+ },
+ "ws2812": {
+ "pin": "B7"
+ },
+ "matrix_pins": {
+ "cols": ["F0", "F5", "F4", "F6"],
+ "rows": ["F7", "F1", "D6", "D7"]
+ },
+ "processor": "atmega32u4",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0012",
+ "vid": "0x6A6C"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Encoder", "x":3, "y":0, "matrix": [0,3]},
+ {"x":0, "y":1, "matrix": [1,0]},
+ {"x":1, "y":1, "matrix": [1,1]},
+ {"x":2, "y":1, "matrix": [1,2]},
+ {"x":3, "y":1, "matrix": [1,3]},
+ {"x":0, "y":2, "matrix": [2,0]},
+ {"x":1, "y":2, "matrix": [2,1]},
+ {"x":2, "y":2, "matrix": [2,2]},
+ {"x":3, "y":2, "matrix": [2,3]},
+ {"x":0, "y":3, "matrix": [3,0]},
+ {"x":1, "y":3, "matrix": [3,1]},
+ {"x":2, "y":3, "matrix": [3,2]},
+ {"x":3, "y":3, "matrix": [3,3]}
+ ]
+ }
+ },
+
+ "encoder": {
+ "rotary": [
+ { "pin_a": "B6", "pin_b": "B5" }
+ ]
+
+ }
+} \ No newline at end of file
diff --git a/keyboards/themadnoodle/udon13/keymaps/default/keymap.c b/keyboards/themadnoodle/udon13/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d9e4ddc51e
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*Layer 0*/
+ [0] = LAYOUT(
+ KC_MUTE,
+ KC_MPLY, KC_MPRV, KC_MNXT, KC_MSEL,
+ KC_UNDO, KC_CALC, KC_MAIL, KC_MYCM,
+ KC_COPY, KC_CUT, KC_PSTE, TO(3)
+ ),
+
+/*Layer 1*/
+ [1] = LAYOUT(
+ RGB_TOG,
+ RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI,
+ RGB_MOD, RGB_RMOD, RGB_M_P, RGB_M_B,
+ RGB_M_SW, RGB_SPD, RGB_SPI, TO(0)
+ ),
+
+/*Layer 2*/
+ [2] = LAYOUT(
+ KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, TO(0)
+ ),
+
+/*Layer 3*/
+ [3] = LAYOUT(
+ KC_NO,
+ TO(1), TO(2), KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, TO(0)
+ ),
+
+};
+
+/*Encoder Mapping*/
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [2] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT)},
+ [3] = { ENCODER_CCW_CW(KC_DOWN, KC_UP)},
+
+};
+#endif
diff --git a/keyboards/themadnoodle/udon13/keymaps/default/rules.mk b/keyboards/themadnoodle/udon13/keymaps/default/rules.mk
new file mode 100644
index 0000000000..217da48272
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_MAP_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/themadnoodle/udon13/keymaps/via/keymap.c b/keyboards/themadnoodle/udon13/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6f6fcc6059
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*Layer 0*/
+ [0] = LAYOUT(
+ KC_MUTE,
+ KC_MPLY, KC_MPRV, KC_MNXT, KC_MSEL,
+ KC_UNDO, KC_CALC, KC_MAIL, KC_MYCM,
+ KC_COPY, KC_CUT, KC_PSTE, TO(3)
+ ),
+
+/*Layer 1*/
+ [1] = LAYOUT(
+ RGB_TOG,
+ RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI,
+ RGB_MOD, RGB_RMOD, RGB_M_P, RGB_M_B,
+ RGB_M_SW, RGB_SPD, RGB_SPI, TO(0)
+ ),
+
+/*Layer 2*/
+ [2] = LAYOUT(
+ KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, TO(0)
+ ),
+
+/*Layer 3*/
+ [3] = LAYOUT(
+ KC_NO,
+ TO(1), TO(2), KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, TO(0)
+ ),
+
+};
+
+/*Encoder Mapping*/
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [2] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT)},
+ [3] = { ENCODER_CCW_CW(KC_DOWN, KC_UP)},
+
+};
+#endif
diff --git a/keyboards/themadnoodle/udon13/keymaps/via/rules.mk b/keyboards/themadnoodle/udon13/keymaps/via/rules.mk
new file mode 100644
index 0000000000..e81bb711d5
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+ENCODER_MAP_ENABLE = yes
+LTO_ENABLE = yes
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/themadnoodle/udon13/readme.md b/keyboards/themadnoodle/udon13/readme.md
new file mode 100644
index 0000000000..a55dc2c7cb
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/readme.md
@@ -0,0 +1,27 @@
+# Udon:13
+
+![Udon13](https://i.imgur.com/DppYeTCh.jpg)
+
+*The Udon:13 is a 12 hotswap key macro keypad with a push button encoder knob and 128x32 OLED display*
+
+* Keyboard Maintainer: [The Mad Noodle](https://github.com/The-Mad-Noodle)
+* Hardware Supported: Udon:13 PCB
+* Hardware Availability: https://www.madnoodleprototypes.com/shop
+
+
+Compile example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb themadnoodle/udon13 -km default
+
+Flashing example for this keyboard:
+
+ qmk flash -kb themadnoodle/udon13 -km default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader & Flashing
+
+
+**Physical reset button**:
+
+* Press the physical button located on the top left of the back of the PCB (Labeled RST) to enter Bootloader Mode
diff --git a/keyboards/themadnoodle/udon13/rules.mk b/keyboards/themadnoodle/udon13/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/themadnoodle/udon13/udon13.c b/keyboards/themadnoodle/udon13/udon13.c
new file mode 100644
index 0000000000..bda0ae7e7b
--- /dev/null
+++ b/keyboards/themadnoodle/udon13/udon13.c
@@ -0,0 +1,76 @@
+// Copyright 2023 The Mad Noodle(@the_mad_noodle)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#ifdef OLED_ENABLE
+
+/* OLED Settings */
+//------------------------------------------------------------------------------------------------
+
+static void render_logo(void) { // Render Mad Noodle logo
+ static const char PROGMEM logo_1[] = {0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x04, 0x06, 0x82, 0xc3, 0x43, 0x61, 0xa1, 0xa1, 0xa1, 0xa1, 0x61, 0x43, 0xc3, 0x82, 0x06, 0x04, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00};
+ static const char PROGMEM logo_2[] = {0xf8, 0x1e, 0xc3, 0xf8, 0x5c, 0x76, 0x7b, 0x6d, 0x75, 0x55, 0x55, 0x75, 0x6d, 0x7b, 0x76, 0x5e, 0x7e, 0x77, 0x5b, 0x6d, 0x75, 0x55, 0x55, 0x75, 0x4d, 0x7b, 0x66, 0x5c, 0xf0, 0xc3, 0x3e, 0xf0};
+ static const char PROGMEM logo_3[] = {0x1f, 0x78, 0xc1, 0x0f, 0x38, 0xe0, 0xc0, 0x00, 0x00, 0x02, 0x0e, 0x0e, 0x8e, 0xc6, 0xc0, 0x40, 0x40, 0xc0, 0xc6, 0x8e, 0x0e, 0x0e, 0x02, 0x00, 0x80, 0xc0, 0x60, 0x38, 0x0f, 0xc0, 0x7c, 0x0f};
+ static const char PROGMEM logo_4[] = {0x00, 0x00, 0x01, 0x03, 0x06, 0x0c, 0x18, 0x31, 0x23, 0x66, 0x44, 0x44, 0xc4, 0xc4, 0x84, 0x84, 0x84, 0x84, 0xc4, 0xc4, 0x44, 0x46, 0x66, 0x23, 0x11, 0x18, 0x0c, 0x06, 0x03, 0x00, 0x00, 0x00};
+ oled_set_cursor(0, 0);
+ oled_write_raw_P(logo_1, sizeof(logo_1));
+ oled_set_cursor(0, 1);
+ oled_write_raw_P(logo_2, sizeof(logo_2));
+ oled_set_cursor(0, 2);
+ oled_write_raw_P(logo_3, sizeof(logo_3));
+ oled_set_cursor(0, 3);
+ oled_write_raw_P(logo_4, sizeof(logo_4));
+}
+//-----------
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ render_logo();
+ oled_set_cursor(7, 0);
+ oled_write_P(PSTR("The Mad Noodle"), false);
+
+ oled_set_cursor(7, 1);
+ oled_write_P(PSTR("Layer: "), false);
+
+ /*
+ To change LAYER NAMES displayed on the OLED ensure they are a total of 6 characters, including spaces.
+ Example:
+ ---------------------------------------------------
+ case 0:
+ oled_write_P(PSTR("Base "), false);
+ break;
+ ---------------------------------------------------
+ "B A S E *SPACE* *SPACE*" = 6 characters
+ This would change layer 0 to Base on the OLED
+ */
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("Zero "), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("One "), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Two "), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Three "), false);
+ break;
+
+ default:
+ oled_write_P(PSTR("N/A "), false);
+ }
+ oled_set_cursor(7, 2);
+ oled_write_P(PSTR("Status: "), false);
+ oled_set_cursor(7, 3);
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+
+#endif \ No newline at end of file