X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=keyboards%2Fv60_type_r%2Fv60_type_r.c;h=016348db9f7f582a1f2c4014ea2c16a07a3e8eaa;hb=4e92dceed815d00a5492c5606ce7d863606d6507;hp=4f88919bc364d660b92e1f20295102b23bbf106d;hpb=6ec7ccec63a5f434af3b6d5726fac858adfdbb61;p=qmk_firmware.git diff --git a/keyboards/v60_type_r/v60_type_r.c b/keyboards/v60_type_r/v60_type_r.c index 4f88919bc..016348db9 100644 --- a/keyboards/v60_type_r/v60_type_r.c +++ b/keyboards/v60_type_r/v60_type_r.c @@ -15,6 +15,200 @@ */ #include "v60_type_r.h" +#include "rgblight.h" + +#include + +#include "action_layer.h" +#include "quantum.h" + +// if we've got an RGB underglow! +#ifdef V60_POLESTAR +#define SOFTPWM_LED_TIMER_TOP F_CPU/(256*64) + +extern rgblight_config_t rgblight_config; +static uint8_t softpwm_buff[3] = {0}; + +void matrix_init_user(void) { + rgb_init(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + uint8_t r = led[0].r, g = led[0].g, b = led[0].b; + switch(keycode) { + case RGB_RI: + if (record->event.pressed) { + r += RGB_STEP; + if (r < led[0].r) { + r = 255; + } + rgblight_setrgb(r, g, b); + } + + return false; + case RGB_RD: + if (record->event.pressed) { + r -= RGB_STEP; + if (r > led[0].r) { + r = 0; + } + rgblight_setrgb(r, g, b); + } + + return false; + case RGB_BI: + if (record->event.pressed) { + b += RGB_STEP; + if (b < led[0].b) { + b = 255; + } + rgblight_setrgb(r, g, b); + } + + return false; + case RGB_BD: + if (record->event.pressed) { + b -= RGB_STEP; + if (b > led[0].b) { + b = 0; + } + rgblight_setrgb(r, g, b); + } + + return false; + case RGB_GI: + if (record->event.pressed) { + g += RGB_STEP; + if (g < led[0].g) { + g = 255; + } + rgblight_setrgb(r, g, b); + } + + return false; + case RGB_GD: + if (record->event.pressed) { + g -= RGB_STEP; + if (g > led[0].g) { + g = 0; + } + rgblight_setrgb(r, g, b); + } + + return false; + } + + return true; +} + + +void rgb_timer_init(void) { + /* Timer1 setup */ + /* CTC mode */ + TCCR1B |= (1<> 8) & 0xff; + OCR1AL = SOFTPWM_LED_TIMER_TOP & 0xff; + SREG = sreg; + + // Enable the compare match interrupt on timer 1 + TIMSK1 |= (1<