aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMakotoKurauchi <pluis@me.com>2018-08-16 01:30:34 +0900
committerDrashna Jaelre <drashna@live.com>2018-08-15 09:30:34 -0700
commitb3d80d4af011be30e6cdf55230d27e20a34b31a1 (patch)
treeb6af75e30e2bf6d58a95fcd949e44d5d3c69d6ea
parent77b7e2cd59533abb203497cb8b7bb36d5a0086a2 (diff)
downloadqmk_firmware-b3d80d4af011be30e6cdf55230d27e20a34b31a1.tar.gz
qmk_firmware-b3d80d4af011be30e6cdf55230d27e20a34b31a1.zip
Keymap: Helix : Update froggy keymap (#3652)
* led ripple effect * fix key name
-rw-r--r--keyboards/helix/rev2/keymaps/froggy/keymap.c122
1 files changed, 101 insertions, 21 deletions
diff --git a/keyboards/helix/rev2/keymaps/froggy/keymap.c b/keyboards/helix/rev2/keymaps/froggy/keymap.c
index 5ac927af3..81a28dfa5 100644
--- a/keyboards/helix/rev2/keymaps/froggy/keymap.c
+++ b/keyboards/helix/rev2/keymaps/froggy/keymap.c
@@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
81 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| 81 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
82 * | Shift| Y | S | N | I | U |Space | | | | | | | | 82 * | Shift| Y | S | N | I | U |Space | | | | | | | |
83 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| 83 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
84 * | Ctrl | Alt | win | Sym | Num | OPT | Ent | | | | | | | | 84 * | Ctrl | Alt | Gui | Sym | Num | OPT | Ent | | | | | | | |
85 * `-------------------------------------------------------------------------------------------------' 85 * `-------------------------------------------------------------------------------------------------'
86 */ 86 */
87 [_BASE] = LAYOUT( \ 87 [_BASE] = LAYOUT( \
@@ -256,8 +256,31 @@ void register_delay_code(uint8_t layer){
256 } 256 }
257} 257}
258 258
259#ifdef RGBLIGHT_ENABLE
260struct keybuf {
261 char col, row;
262 char frame;
263};
264struct keybuf keybufs[256];
265unsigned char keybuf_begin, keybuf_end;
266
267int col, row;
268#endif
269
259bool process_record_user(uint16_t keycode, keyrecord_t *record) { 270bool process_record_user(uint16_t keycode, keyrecord_t *record) {
260 271
272 #ifdef RGBLIGHT_ENABLE
273 col = record->event.key.col;
274 row = record->event.key.row;
275 if (record->event.pressed && ((row < 5 && is_master) || (row >= 5 && !is_master))) {
276 int end = keybuf_end;
277 keybufs[end].col = col;
278 keybufs[end].row = row % 5;
279 keybufs[end].frame = 0;
280 keybuf_end ++;
281 }
282 #endif
283
261 if(tap_timer&&keycode!=OPT_TAP_SP){ 284 if(tap_timer&&keycode!=OPT_TAP_SP){
262 tapping_key = true; 285 tapping_key = true;
263 } 286 }
@@ -475,6 +498,61 @@ void music_scale_user(void)
475#define L_NFNLAYER 192 498#define L_NFNLAYER 192
476#define L_MOUSECURSOR 256 499#define L_MOUSECURSOR 256
477 500
501// LED Effect
502#ifdef RGBLIGHT_ENABLE
503unsigned char rgb[7][5][3];
504void led_ripple_effect(char r, char g, char b) {
505 static int scan_count = -10;
506 static int keys[] = { 6, 6, 6, 7, 7 };
507 static int keys_sum[] = { 0, 6, 12, 18, 25 };
508
509 if (scan_count == -1) {
510 rgblight_enable_noeeprom();
511 rgblight_mode(0);
512 } else if (scan_count >= 0 && scan_count < 5) {
513 for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
514 int i = c;
515 // FIXME:
516
517 int y = scan_count;
518 int dist_y = abs(y - keybufs[i].row);
519 for (int x=0; x<keys[y]; x++) {
520 int dist = abs(x - keybufs[i].col) + dist_y;
521 if (dist <= keybufs[i].frame) {
522 int elevation = MAX(0, (8 + dist - keybufs[i].frame)) << 2;
523 if (elevation) {
524 if ((rgb[x][y][0] != 255) && r) { rgb[x][y][0] = MIN(255, elevation + rgb[x][y][0]); }
525 if ((rgb[x][y][1] != 255) && g) { rgb[x][y][1] = MIN(255, elevation + rgb[x][y][1]); }
526 if ((rgb[x][y][2] != 255) && b) { rgb[x][y][2] = MIN(255, elevation + rgb[x][y][2]); }
527 }
528 }
529 }
530 }
531 } else if (scan_count == 5) {
532 for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
533 int i = c;
534 if (keybufs[i].frame < 18) {
535 keybufs[i].frame ++;
536 } else {
537 keybuf_begin ++;
538 }
539 }
540 } else if (scan_count >= 6 && scan_count <= 10) {
541 int y = scan_count - 6;
542 for (int x=0; x<keys[y]; x++) {
543 int at = keys_sum[y] + ((y & 1) ? x : (keys[y] - x - 1));
544 led[at].r = rgb[x][y][0];
545 led[at].g = rgb[x][y][1];
546 led[at].b = rgb[x][y][2];
547 }
548 rgblight_set();
549 } else if (scan_count == 11) {
550 memset(rgb, 0, sizeof(rgb));
551 }
552 scan_count++;
553 if (scan_count >= 12) { scan_count = 0; }
554}
555#endif
478 556
479uint8_t layer_state_old; 557uint8_t layer_state_old;
480 558
@@ -494,42 +572,44 @@ void matrix_scan_user(void) {
494 if(layer_state_old != layer_state){ 572 if(layer_state_old != layer_state){
495 switch (layer_state) { 573 switch (layer_state) {
496 case L_BASE: 574 case L_BASE:
497 #ifdef RGBLIGHT_ENABLE
498 if (!RGBAnimation){
499 rgblight_sethsv(187,255,255);
500 rgblight_mode(1);
501 }else{
502 rgblight_mode(RGB_current_mode);
503 }
504 #endif
505 break; 575 break;
506 case L_OPT: 576 case L_OPT:
507 register_delay_code(_OPT); 577 register_delay_code(_OPT);
508 break; 578 break;
509 case L_NUM: 579 case L_NUM:
510 register_delay_code(_NUM); 580 register_delay_code(_NUM);
511 #ifdef RGBLIGHT_ENABLE
512 rgblight_sethsv(25,255,255);
513 rgblight_mode(1);
514 #endif
515 break; 581 break;
516 case L_SYM: 582 case L_SYM:
517 register_delay_code(_SYM); 583 register_delay_code(_SYM);
518 #ifdef RGBLIGHT_ENABLE
519 rgblight_sethsv(96,255,255);
520 rgblight_mode(1);
521 #endif
522 break; 584 break;
523 case L_FUNC: 585 case L_FUNC:
524 register_delay_code(_FUNC); 586 register_delay_code(_FUNC);
525 #ifdef RGBLIGHT_ENABLE
526 rgblight_sethsv(331,255,255);
527 rgblight_mode(1);
528 #endif
529 break; 587 break;
530 } 588 }
531 layer_state_old = layer_state; 589 layer_state_old = layer_state;
532 } 590 }
591
592 #ifdef RGBLIGHT_ENABLE
593 if(!RGBAnimation){
594 switch (layer_state) {
595 case L_BASE:
596 led_ripple_effect(0,112,127);
597 break;
598 case L_OPT:
599 led_ripple_effect(127,0,100);
600 break;
601 case L_NUM:
602 led_ripple_effect(127,23,0);
603 break;
604 case L_SYM:
605 led_ripple_effect(0,127,0);
606 break;
607 case L_FUNC:
608 led_ripple_effect(127,0,61);
609 break;
610 }
611 }
612 #endif
533} 613}
534 614
535//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h 615//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h