qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

nk65.c (5121B)


      1 // Copyright 2019 Yiancar
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 #include "quantum.h"
      4 
      5 #if defined(RGB_MATRIX_ENABLE)
      6 const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
      7 /* Refer to IS31 manual for these locations
      8  *   driver
      9  *   |  R location
     10  *   |  |      G location
     11  *   |  |      |      B location
     12  *   |  |      |      | */
     13     {0, SW2_CS1,   SW1_CS1,   SW3_CS1}, //LA1 - esc
     14     {0, SW2_CS2,   SW1_CS2,   SW3_CS2}, //LA5 - 1
     15     {0, SW2_CS3,   SW1_CS3,   SW3_CS3}, //LA9 - 2
     16     {0, SW2_CS4,   SW1_CS4,   SW3_CS4}, //LA13 - 3
     17     {0, SW2_CS5,   SW1_CS5,   SW3_CS5}, //LA17 - 4
     18     {0, SW2_CS6,   SW1_CS6,   SW3_CS6}, //LA21 - 5
     19     {0, SW2_CS7,   SW1_CS7,   SW3_CS7}, //LA25 - 6
     20     {0, SW2_CS8,   SW1_CS8,   SW3_CS8}, //LA29 - 7
     21     {0, SW2_CS9,   SW1_CS9,   SW3_CS9}, //LA33 - 8
     22     {0, SW2_CS10,  SW1_CS10,  SW3_CS10}, //LA37 - 9
     23     {0, SW2_CS11,  SW1_CS11,  SW3_CS11}, //LA41 - 0
     24     {0, SW2_CS12,  SW1_CS12,  SW3_CS12}, //LA45 - -
     25     {0, SW2_CS13,  SW1_CS13,  SW3_CS13}, //LA49 - =
     26     {0, SW2_CS14,  SW1_CS14,  SW3_CS14}, //LA53 - bspace
     27     {1, SW2_CS1,   SW1_CS1,   SW3_CS1}, //LB1 - home
     28     {0, SW5_CS1,   SW4_CS1,   SW6_CS1}, //LA2 - tab
     29     {0, SW5_CS2,   SW4_CS2,   SW6_CS2}, //LA6 - q
     30     {0, SW5_CS3,   SW4_CS3,   SW6_CS3}, //LA10 - w
     31     {0, SW5_CS4,   SW4_CS4,   SW6_CS4}, //LA14 - e
     32     {0, SW5_CS5,   SW4_CS5,   SW6_CS5}, //LA18 - r
     33     {0, SW5_CS6,   SW4_CS6,   SW6_CS6}, //LA22 - t
     34     {0, SW5_CS7,   SW4_CS7,   SW6_CS7}, //LA26 - y
     35     {0, SW5_CS8,   SW4_CS8,   SW6_CS8}, //LA30 - u
     36     {0, SW5_CS9,   SW4_CS9,   SW6_CS9}, //LA34 - i
     37     {0, SW5_CS10,  SW4_CS10,  SW6_CS10}, //LA38 - o
     38     {0, SW5_CS11,  SW4_CS11,  SW6_CS11}, //LA42 - p
     39     {0, SW5_CS12,  SW4_CS12,  SW6_CS12}, //LA46 - [
     40     {0, SW5_CS13,  SW4_CS13,  SW6_CS13}, //LA50 - ]
     41     {0, SW5_CS14,  SW4_CS14,  SW6_CS14}, //LA54 - |
     42     {1, SW5_CS1,   SW4_CS1,   SW6_CS1}, //LB2 - pgup
     43     {0, SW8_CS1,   SW7_CS1,   SW9_CS1}, //LA3 - caps
     44     {0, SW8_CS2,   SW7_CS2,   SW9_CS2}, //LA7 - a
     45     {0, SW8_CS3,   SW7_CS3,   SW9_CS3}, //LA11 - s
     46     {0, SW8_CS4,   SW7_CS4,   SW9_CS4}, //LA15 - d
     47     {0, SW8_CS5,   SW7_CS5,   SW9_CS5}, //LA19 - f
     48     {0, SW8_CS6,   SW7_CS6,   SW9_CS6}, //LA23 - g
     49     {0, SW8_CS7,   SW7_CS7,   SW9_CS7}, //LA27 - h
     50     {0, SW8_CS8,   SW7_CS8,   SW9_CS8}, //LA31 - j
     51     {0, SW8_CS9,   SW7_CS9,   SW9_CS9}, //LA35 - k
     52     {0, SW8_CS10,  SW7_CS10,  SW9_CS10}, //LA39 - l
     53     {0, SW8_CS11,  SW7_CS11,  SW9_CS11}, //LA43 - ;
     54     {0, SW8_CS12,  SW7_CS12,  SW9_CS12}, //LA47 - '
     55     {0, SW8_CS14,  SW7_CS14,  SW9_CS14}, //LA55 - ent
     56     {1, SW2_CS2,   SW1_CS2,   SW3_CS2}, //LB5 - pgdn
     57     {0, SW11_CS1,   SW10_CS1,   SW12_CS1}, //LA4 - lshft
     58     {0, SW11_CS2,   SW10_CS2,   SW12_CS2}, //LA8 - z
     59     {0, SW11_CS3,   SW10_CS3,   SW12_CS3}, //LA12 - x
     60     {0, SW11_CS4,   SW10_CS4,   SW12_CS4}, //LA16 - c
     61     {0, SW11_CS5,   SW10_CS5,   SW12_CS5}, //LA20 - v
     62     {0, SW11_CS6,   SW10_CS6,   SW12_CS6}, //LA24 - b
     63     {0, SW11_CS7,   SW10_CS7,   SW12_CS7}, //LA28 - n
     64     {0, SW11_CS8,   SW10_CS8,   SW12_CS8}, //LA32 - m
     65     {0, SW11_CS9,   SW10_CS9,   SW12_CS9}, //LA36 - <
     66     {0, SW11_CS10,  SW10_CS10,  SW12_CS10}, //LA40 - >
     67     {0, SW11_CS11,  SW10_CS11,  SW12_CS11}, //LA44 - ?
     68     {0, SW8_CS13,  SW7_CS13,  SW9_CS13}, //LA51 - rshift
     69     {0, SW11_CS13,  SW10_CS13,  SW12_CS13}, //LA52 - up
     70     {1, SW8_CS1,   SW7_CS1,   SW9_CS1}, //LB3 - end
     71     {0, SW2_CS15,  SW1_CS15,  SW3_CS15}, //LA57 - lctrl
     72     {0, SW5_CS15,  SW4_CS15,  SW6_CS15}, //LA58 - lgui
     73     {0, SW8_CS15,  SW7_CS15,  SW9_CS15}, //LA59 - lalt
     74     {0, SW11_CS15,  SW10_CS15,  SW12_CS15}, //LA60 space
     75     {0, SW11_CS12,  SW10_CS12,  SW12_CS12}, //LA48 - ralt
     76     {0, SW5_CS16,  SW4_CS16,  SW6_CS16}, //LA62 - fn
     77     {0, SW8_CS16,  SW7_CS16,  SW9_CS16}, //LA63 - rctrl
     78     {0, SW11_CS16,  SW10_CS16,  SW12_CS16}, //LA64 - left
     79     {0, SW11_CS14,  SW10_CS14,  SW12_CS14}, //LA56 - down
     80     {1, SW11_CS1,   SW10_CS1,   SW12_CS1}, //LB4 - right
     81 
     82     // Mapped with "dead" locations so each indicator is logically separate
     83     {1, SW2_CS3,   SW7_CS2,   SW3_CS3}, //LB7 - top indi
     84     {1, SW5_CS2,   SW10_CS2,  SW6_CS2}, //LB6 - mid indi
     85     {1, SW11_CS2,  SW4_CS2,   SW12_CS2}, //LB6 - bot indi
     86 };
     87 #endif
     88 
     89 /* Indicator LEDS are part of the LED driver
     90  * Top LED is blue only. LED driver 2 RGB 7 Green channel
     91  * Middle LED is blue and red. LED driver 2 RGB 6 Red and Blue channel
     92  * Bottom LED is red only LED driver 2 RGB 6 Green channel.
     93  */
     94 bool rgb_matrix_indicators_kb(void) {
     95     if (!rgb_matrix_indicators_user()) {
     96         return false;
     97     }
     98 
     99     if (host_keyboard_led_state().caps_lock) {
    100         rgb_matrix_set_color(68, RGB_WHITE); //0, 0xFF, 0);
    101     } else {
    102         rgb_matrix_set_color(68, RGB_OFF);
    103     }
    104 
    105     layer_state_t state = layer_state|default_layer_state;
    106     if (state & (1UL << 1)) {
    107         rgb_matrix_set_color(69, RGB_WHITE); // 0xFF, 0, 0xFF);
    108     } else {
    109         rgb_matrix_set_color(69, RGB_OFF);
    110     }
    111 
    112     if (state & (1UL << 2)) {
    113         rgb_matrix_set_color(70, RGB_WHITE); //0, 0xFF, 0);
    114     } else {
    115         rgb_matrix_set_color(70, RGB_OFF);
    116     }
    117 
    118     return true;
    119 }