mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-22 16:37:58 +06:00
173 lines
5.4 KiB
C
173 lines
5.4 KiB
C
/**
|
|
* noah.c
|
|
*/
|
|
|
|
#include "quantum.h"
|
|
|
|
void bootloader_jump(void) {
|
|
// This board doesn't use the standard DFU bootloader, and no information is available regarding how to enter bootloader mode. All we can do here is reset.
|
|
NVIC_SystemReset();
|
|
}
|
|
|
|
#ifdef RGBLIGHT_ENABLE
|
|
#include <string.h>
|
|
#include "rgblight.h"
|
|
#include "ws2812.h"
|
|
extern rgblight_config_t rgblight_config;
|
|
|
|
// led 0 for caps lock, led 1 for scroll lock, led 3 for num lock
|
|
// led 4 for layer 1, led 5 for layer 2, led 6 for layer 3, led 7 for layer 4
|
|
#if RGBLIGHT_LED_COUNT < 7
|
|
#error "MUST set the RGBLIGHT_LED_COUNT bigger than 7"
|
|
#endif
|
|
rgb_led_t noah_leds[RGBLIGHT_LED_COUNT];
|
|
static bool noah_led_mode = false;
|
|
void setleds_custom(rgb_led_t *ledarray, uint16_t num_leds) {
|
|
memset(&noah_leds[0], 0, sizeof(noah_leds));
|
|
if (!rgblight_config.enable) {
|
|
for (uint8_t i = 0; i < RGBLIGHT_LED_COUNT; i++) {
|
|
ledarray[i].r = 0;
|
|
ledarray[i].g = 0;
|
|
ledarray[i].b = 0;
|
|
}
|
|
}
|
|
if (noah_led_mode) {
|
|
led_t led_state = host_keyboard_led_state();
|
|
if (led_state.caps_lock) {
|
|
noah_leds[0] = ledarray[0];
|
|
}
|
|
if (led_state.scroll_lock) {
|
|
noah_leds[1] = ledarray[1];
|
|
}
|
|
if (led_state.num_lock) {
|
|
noah_leds[2] = ledarray[2];
|
|
}
|
|
for (int32_t i = 0; i < 4; i++) {
|
|
if(layer_state_is(i+1)) {
|
|
noah_leds[i + 3] = ledarray[i + 3];
|
|
}
|
|
}
|
|
} else {
|
|
memcpy(&noah_leds[0], &ledarray[0], sizeof(noah_leds));
|
|
}
|
|
|
|
ws2812_setleds(noah_leds, RGBLIGHT_LED_COUNT);
|
|
}
|
|
|
|
const rgblight_driver_t rgblight_driver = {
|
|
.init = ws2812_init,
|
|
.setleds = setleds_custom,
|
|
};
|
|
#endif
|
|
|
|
#ifdef RGB_MATRIX_ENABLE
|
|
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
|
|
/* Refer to IS31 manual for these locations
|
|
* driver
|
|
* | R location
|
|
* | | G location
|
|
* | | | B location
|
|
* | | | | */
|
|
{0, C1_10, C2_10, C4_11}, // RGB101
|
|
{0, C1_11, C2_11, C3_11}, // RGB102
|
|
{0, C1_12, C2_12, C3_12}, // RGB103
|
|
{0, C1_13, C2_13, C3_13}, // RGB104
|
|
{0, C1_14, C2_14, C3_14}, // RGB105
|
|
{0, C1_15, C2_15, C3_15}, // RGB106
|
|
{0, C1_16, C2_16, C3_16}, // RGB107
|
|
{1, C1_1, C3_2, C4_2}, // RGB108
|
|
{1, C1_2, C2_2, C4_3}, // RGB109
|
|
{1, C1_3, C2_3, C3_3}, // RGB1010
|
|
{1, C1_4, C2_4, C3_4}, // RGB1011
|
|
{1, C1_5, C2_5, C3_5}, // RGB1012
|
|
{1, C1_6, C2_6, C3_6}, // RGB1013
|
|
{1, C1_7, C2_7, C3_7}, // RGB1015
|
|
{1, C1_8, C2_8, C3_8}, // RGB1016
|
|
|
|
{0, C1_9, C3_10, C4_10}, // RGB201
|
|
{0, C5_9, C4_9, C6_9}, // RGB202
|
|
{0, C9_9, C8_9, C7_9}, // RGB203
|
|
{0, C9_10, C8_10, C7_10}, // RGB204
|
|
{0, C9_11, C8_11, C7_11}, // RGB205
|
|
{0, C9_12, C8_12, C7_12}, // RGB206
|
|
{0, C9_13, C8_13, C7_13}, // RGB207
|
|
{1, C5_1, C4_1, C6_1}, // RGB208
|
|
{1, C9_1, C8_1, C7_1}, // RGB209
|
|
{1, C9_2, C8_2, C7_2}, // RGB2010
|
|
{1, C9_3, C8_3, C7_3}, // RGB2011
|
|
{1, C9_4, C8_4, C7_4}, // RGB2012
|
|
{1, C9_5, C8_5, C7_5}, // RGB2013
|
|
{1, C9_6, C8_6, C7_6}, // RGB2014
|
|
{1, C5_8, C4_8, C6_8}, // RGB2015
|
|
|
|
{0, C9_1, C8_1, C7_1}, // RGB301
|
|
{0, C1_1, C3_2, C4_2}, // RGB302
|
|
{0, C5_1, C4_1, C6_1}, // RGB303
|
|
{0, C5_16, C4_16, C6_16}, // RGB304
|
|
{0, C1_2, C2_2, C4_3}, // RGB305
|
|
{0, C9_14, C8_14, C7_14}, // RGB306
|
|
{0, C9_15, C8_15, C6_14}, // RGB307
|
|
{0, C9_16, C7_15, C6_15}, // RGB308
|
|
{1, C1_10, C2_10, C4_11}, // RGB309
|
|
{1, C1_11, C2_11, C3_11}, // RGB3010
|
|
{1, C1_12, C2_12, C3_12}, // RGB3011
|
|
{1, C1_13, C2_13, C3_13}, // RGB3012
|
|
{1, C1_14, C2_14, C3_14}, // RGB3014
|
|
{1, C9_7, C8_7, C6_6}, // RGB3013-2
|
|
{1, C1_15, C2_15, C3_15}, // RGB3013
|
|
{1, C9_8, C7_7, C6_7}, // RGB3015
|
|
|
|
{0, C9_3, C8_3, C7_3}, // RGB401-2
|
|
{0, C9_2, C8_2, C7_2}, // RGB401
|
|
{0, C9_4, C8_4, C7_4}, // RGB4014
|
|
{0, C9_5, C8_5, C7_5}, // RGB402
|
|
{0, C9_6, C8_6, C7_6}, // RGB403
|
|
{0, C1_3, C2_3, C3_3}, // RGB404
|
|
{0, C1_4, C2_4, C3_4}, // RGB405
|
|
{0, C1_6, C2_6, C3_6}, // RGB406
|
|
{0, C1_5, C2_5, C3_5}, // RGB407
|
|
{1, C1_9, C3_10, C4_10}, // RGB408
|
|
{1, C5_9, C4_9, C6_9}, // RGB409
|
|
{1, C9_9, C8_9, C7_9}, // RGB4010
|
|
{1, C9_10, C8_10, C7_10}, // RGB4011
|
|
{1, C9_11, C8_11, C7_11}, // RGB4012
|
|
{1, C5_16, C4_16, C6_16}, // RGB4013
|
|
{1, C1_16, C2_16, C3_16}, // RGB4015
|
|
|
|
{0, C9_7, C8_7, C6_6}, // RGB501
|
|
{0, C9_8, C7_7, C6_7}, // RGB502
|
|
{0, C5_8, C4_8, C6_8}, // RGB503
|
|
{0, C1_8, C2_8, C3_8}, // RGB506
|
|
{0, C1_7, C2_7, C3_7}, // RGB506-2
|
|
{1, C9_12, C8_12, C7_12}, // RGB507
|
|
{1, C9_13, C8_13, C7_13}, // RGB508
|
|
{1, C9_14, C8_14, C7_14}, // RGB5010
|
|
{1, C9_15, C8_15, C6_14}, // RGB5011
|
|
{1, C9_16, C7_15, C6_15}, // RGB5012
|
|
};
|
|
#endif
|
|
|
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
if (record->event.pressed) {
|
|
switch(keycode) {
|
|
#ifdef RGBLIGHT_ENABLE
|
|
case KC_F24: // switch the led mode on or off
|
|
noah_led_mode = !noah_led_mode;
|
|
return false;
|
|
|
|
#ifdef RGB_MATRIX_ENABLE
|
|
case KC_F13: // toggle rgb matrix
|
|
rgb_matrix_toggle();
|
|
return false;
|
|
case KC_F14:
|
|
rgb_matrix_step();
|
|
return false;
|
|
#endif
|
|
#endif
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
return process_record_user(keycode, record);
|
|
}
|