mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						4775e02794
					
				
							
								
								
									
										6
									
								
								keyboards/themadnoodle/udon13/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								keyboards/themadnoodle/udon13/config.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										75
									
								
								keyboards/themadnoodle/udon13/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								keyboards/themadnoodle/udon13/info.json
									
									
									
									
									
										Normal file
									
								
							@ -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" }
 | 
			
		||||
        ]
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										52
									
								
								keyboards/themadnoodle/udon13/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								keyboards/themadnoodle/udon13/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										2
									
								
								keyboards/themadnoodle/udon13/keymaps/default/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/themadnoodle/udon13/keymaps/default/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
ENCODER_MAP_ENABLE = yes
 | 
			
		||||
LTO_ENABLE = yes
 | 
			
		||||
							
								
								
									
										52
									
								
								keyboards/themadnoodle/udon13/keymaps/via/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								keyboards/themadnoodle/udon13/keymaps/via/keymap.c
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										3
									
								
								keyboards/themadnoodle/udon13/keymaps/via/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/themadnoodle/udon13/keymaps/via/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
ENCODER_MAP_ENABLE = yes
 | 
			
		||||
LTO_ENABLE = yes
 | 
			
		||||
VIA_ENABLE = yes
 | 
			
		||||
							
								
								
									
										27
									
								
								keyboards/themadnoodle/udon13/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								keyboards/themadnoodle/udon13/readme.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
# Udon:13
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
*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
 | 
			
		||||
							
								
								
									
										1
									
								
								keyboards/themadnoodle/udon13/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/themadnoodle/udon13/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
# This file intentionally left blank
 | 
			
		||||
							
								
								
									
										76
									
								
								keyboards/themadnoodle/udon13/udon13.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								keyboards/themadnoodle/udon13/udon13.c
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user