1 /* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 const is31_led g_is31_leds
[DRIVER_LED_TOTAL
] = {
19 /* Refer to IS31 manual for these locations
25 {0, B_12
, A_12
, C_12
},
26 {0, B_11
, A_11
, C_11
},
27 {0, B_10
, A_10
, C_10
},
32 {0, H_12
, G_12
, I_12
},
33 {0, H_11
, G_11
, I_11
},
34 {0, H_10
, G_10
, I_10
},
53 {0, E_12
, D_12
, F_12
},
54 {0, E_11
, D_11
, F_11
},
55 {0, E_10
, D_10
, F_10
},
60 {0, K_12
, J_12
, L_12
},
61 {0, K_11
, J_11
, L_11
},
62 {0, K_10
, J_10
, L_10
},
82 rgb_led g_rgb_leds
[DRIVER_LED_TOTAL
] = {
88 {{0|(0<<4)}, {20.36*0, 21.33*0}, 1},
89 {{0|(1<<4)}, {20.36*1, 21.33*0}, 4},
90 {{0|(2<<4)}, {20.36*2, 21.33*0}, 4},
91 {{0|(3<<4)}, {20.36*3, 21.33*0}, 4},
92 {{0|(4<<4)}, {20.36*4, 21.33*0}, 4},
93 {{0|(5<<4)}, {20.36*5, 21.33*0}, 4},
94 {{4|(0<<4)}, {20.36*6, 21.33*0}, 4},
95 {{4|(1<<4)}, {20.36*7, 21.33*0}, 4},
96 {{4|(2<<4)}, {20.36*8, 21.33*0}, 4},
97 {{4|(3<<4)}, {20.36*9, 21.33*0}, 4},
98 {{4|(4<<4)}, {20.36*10,21.33*0}, 4},
99 {{4|(5<<4)}, {20.36*11,21.33*0}, 1},
101 {{1|(0<<4)}, {20.36*0, 21.33*1}, 1},
102 {{1|(1<<4)}, {20.36*1, 21.33*1}, 4},
103 {{1|(2<<4)}, {20.36*2, 21.33*1}, 4},
104 {{1|(3<<4)}, {20.36*3, 21.33*1}, 4},
105 {{1|(4<<4)}, {20.36*4, 21.33*1}, 4},
106 {{1|(5<<4)}, {20.36*5, 21.33*1}, 4},
107 {{5|(0<<4)}, {20.36*6, 21.33*1}, 4},
108 {{5|(1<<4)}, {20.36*7, 21.33*1}, 4},
109 {{5|(2<<4)}, {20.36*8, 21.33*1}, 4},
110 {{5|(3<<4)}, {20.36*9, 21.33*1}, 4},
111 {{5|(4<<4)}, {20.36*10,21.33*1}, 4},
112 {{5|(5<<4)}, {20.36*11,21.33*1}, 1},
114 {{2|(0<<4)}, {20.36*0, 21.33*2}, 1},
115 {{2|(1<<4)}, {20.36*1, 21.33*2}, 4},
116 {{2|(2<<4)}, {20.36*2, 21.33*2}, 4},
117 {{2|(3<<4)}, {20.36*3, 21.33*2}, 4},
118 {{2|(4<<4)}, {20.36*4, 21.33*2}, 4},
119 {{2|(5<<4)}, {20.36*5, 21.33*2}, 4},
120 {{6|(0<<4)}, {20.36*6, 21.33*2}, 4},
121 {{6|(1<<4)}, {20.36*7, 21.33*2}, 4},
122 {{6|(2<<4)}, {20.36*8, 21.33*2}, 4},
123 {{6|(3<<4)}, {20.36*9, 21.33*2}, 4},
124 {{6|(4<<4)}, {20.36*10,21.33*2}, 4},
125 {{6|(5<<4)}, {20.36*11,21.33*2}, 1},
127 {{3|(0<<4)}, {20.36*0, 21.33*3}, 1},
128 {{3|(1<<4)}, {20.36*1, 21.33*3}, 1},
129 {{3|(2<<4)}, {20.36*2, 21.33*3}, 1},
130 {{7|(3<<4)}, {20.36*3, 21.33*3}, 1},
131 {{7|(4<<4)}, {20.36*4, 21.33*3}, 1},
132 {{7|(5<<4)}, {20.36*5.5,21.33*3}, 4},
133 {{7|(0<<4)}, {20.36*7, 21.33*3}, 1},
134 {{7|(1<<4)}, {20.36*8, 21.33*3}, 1},
135 {{7|(2<<4)}, {20.36*9, 21.33*3}, 1},
136 {{3|(3<<4)}, {20.36*10,21.33*3}, 1},
137 {{3|(4<<4)}, {20.36*11,21.33*3}, 1}
140 void matrix_init_kb(void) {
143 palSetPadMode(GPIOB
, 8, PAL_MODE_OUTPUT_PUSHPULL
);
144 palSetPadMode(GPIOB
, 9, PAL_MODE_OUTPUT_PUSHPULL
);
146 palClearPad(GPIOB
, 8);
147 palClearPad(GPIOB
, 9);
150 void matrix_scan_kb(void) {
154 uint32_t layer_state_set_kb(uint32_t state
) {
156 palClearPad(GPIOB
, 8);
157 palClearPad(GPIOB
, 9);
158 state
= layer_state_set_user(state
);
159 uint8_t layer
= biton32(state
);