forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add The Mad Noodle Udon13 (qmk#22704)
Co-authored-by: Joel Challis <[email protected]> Co-authored-by: jack <[email protected]> Co-authored-by: Sergey Vlasov <[email protected]>
- Loading branch information
Showing
9 changed files
with
294 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" } | ||
] | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
ENCODER_MAP_ENABLE = yes | ||
LTO_ENABLE = yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
ENCODER_MAP_ENABLE = yes | ||
LTO_ENABLE = yes | ||
VIA_ENABLE = yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# This file intentionally left blank |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |