aboutsummaryrefslogtreecommitdiff
path: root/keyboards/handwired/promethium
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/handwired/promethium')
-rw-r--r--keyboards/handwired/promethium/color.h15
-rw-r--r--keyboards/handwired/promethium/config.h79
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/Makefile2
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/README.md4
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/config.h1
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c289
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h1
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h36
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h36
-rw-r--r--keyboards/handwired/promethium/matrix.c306
-rw-r--r--keyboards/handwired/promethium/promethium.c5
-rw-r--r--keyboards/handwired/promethium/rules.mk6
12 files changed, 678 insertions, 102 deletions
diff --git a/keyboards/handwired/promethium/color.h b/keyboards/handwired/promethium/color.h
new file mode 100644
index 000000000..077242d5f
--- /dev/null
+++ b/keyboards/handwired/promethium/color.h
@@ -0,0 +1,15 @@
1#define COLOR_BLANK 0, 0, 0
2
3#define COLOR_BLACK 0, 0, 0
4#define COLOR_WHITE 15,15,15
5#define COLOR_GRAY 7, 7, 7
6
7#define COLOR_RED 15, 0, 0
8#define COLOR_GREEN 0,15, 0
9#define COLOR_BLUE 0, 0,15
10
11#define COLOR_YELLOW 15,15, 0
12#define COLOR_MAGENTA 15, 0,15
13#define COLOR_CYAN 0,15,15
14
15#define COLOR_ORANGE 15, 5, 0 \ No newline at end of file
diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h
index 24f02993f..efb9ebdd7 100644
--- a/keyboards/handwired/promethium/config.h
+++ b/keyboards/handwired/promethium/config.h
@@ -35,12 +35,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
35#define DESCRIPTION 35#define DESCRIPTION
36 36
37/* key matrix size */ 37/* key matrix size */
38#define MATRIX_ROWS 8
39#define MATRIX_COLS 6 38#define MATRIX_COLS 6
39#define MATRIX_ROWS 9
40 40
41/* default pin-out */ 41/* default pin-out */
42#define MATRIX_COL_PINS { B6, B7, D6, C7, F6, F7 } 42#define MATRIX_COL_PINS { F4, F1, F0, D6, D0, D1 }
43#define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 } 43#define MATRIX_ROW_PINS { F5, F6, F7 }
44#define TRACKPOINT_PINS { B7, B6, D7 }
44#define UNUSED_PINS 45#define UNUSED_PINS
45 46
46/* 47/*
@@ -152,17 +153,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
152//#define NO_ACTION_MACRO 153//#define NO_ACTION_MACRO
153//#define NO_ACTION_FUNCTION 154//#define NO_ACTION_FUNCTION
154 155
155#define PS2_INIT_DELAY 2000 156#define PS2_MOUSE_INIT_DELAY 2000
156#define BATTERY_PIN 9 157#define BATTERY_PIN 9
157#define BATTERY_POLL 30000 158#define BATTERY_POLL 30000
158#define MAX_VOLTAGE 4.2 159#define MAX_VOLTAGE 4.2
159#define MIN_VOLTAGE 3.2 160#define MIN_VOLTAGE 3.2
160 161
162#define ___ KC_NO
163
161#define KEYMAP( \ 164#define KEYMAP( \
162 k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ 165 k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
163 k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ 166 k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
164 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ 167 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
165 k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c \ 168 k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, \
169 tp1, tp2, tp3 \
166) \ 170) \
167{ \ 171{ \
168 {k11, k12, k13, k14, k15, k16}, \ 172 {k11, k12, k13, k14, k15, k16}, \
@@ -172,25 +176,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
172 {k17, k18, k19, k1a, k1b, k1c}, \ 176 {k17, k18, k19, k1a, k1b, k1c}, \
173 {k27, k28, k29, k2a, k2b, k2c}, \ 177 {k27, k28, k29, k2a, k2b, k2c}, \
174 {k37, k38, k39, k3a, k3b, k3c}, \ 178 {k37, k38, k39, k3a, k3b, k3c}, \
175 {k47, k48, k49, k4a, k4b, k4c} \ 179 {k47, k48, k49, k4a, k4b, k4c}, \
180 {tp1, tp2, tp3, ___, ___, ___} \
176} 181}
177 182
178#ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file 183#ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file
179enum led_sequence { 184enum led_sequence {
185 LED_IND_LINUX,
186 LED_IND_APPLE,
187 LED_IND_WINDOWS,
188 LED_IND_QWERTY,
189 LED_IND_ALT,
190 LED_IND_AUDIO,
180 LED_IND_BLUETOOTH, 191 LED_IND_BLUETOOTH,
181 LED_IND_USB, 192 LED_IND_USB,
182 LED_IND_BATTERY,
183 193
194 LED_IND_BATTERY,
195 LED_IND_CAPSLOCK,
196 LED_IND_GUI,
184 LED_IND_FUN, 197 LED_IND_FUN,
185 LED_IND_NUM, 198 LED_IND_NUM,
199 LED_IND_PUNC,
186 LED_IND_EMOJI, 200 LED_IND_EMOJI,
201 LED_IND_GREEK,
187 202
188 LED_BKSP, 203 LED_BKSP,
189 LED_ENT, 204 LED_ENT,
190 LED_RSFT, 205 LED_RSFT,
191 LED_RCTL, 206 LED_RCTL,
192 207
193 LED_RGUI, 208 LED_RALT,
194 LED_SLSH, 209 LED_SLSH,
195 LED_SCLN, 210 LED_SCLN,
196 LED_P, 211 LED_P,
@@ -198,9 +213,9 @@ enum led_sequence {
198 LED_O, 213 LED_O,
199 LED_L, 214 LED_L,
200 LED_DOT, 215 LED_DOT,
201 LED_RALT, 216 LED_RGUI,
202 217
203 LED_EMOJI, 218 LED_GREEK,
204 LED_COMM, 219 LED_COMM,
205 LED_K, 220 LED_K,
206 LED_I, 221 LED_I,
@@ -219,35 +234,35 @@ enum led_sequence {
219 LED_TRACKPOINT2, 234 LED_TRACKPOINT2,
220 LED_TRACKPOINT1, 235 LED_TRACKPOINT1,
221 236
222 LED_LSPC,
223 LED_B,
224 LED_G,
225 LED_T, 237 LED_T,
238 LED_G,
239 LED_B,
240 LED_LSPC,
226 241
227 LED_R,
228 LED_F,
229 LED_V,
230 LED_NUM, 242 LED_NUM,
243 LED_V,
244 LED_F,
245 LED_R,
231 246
232 LED_PUNC,
233 LED_C,
234 LED_D,
235 LED_E, 247 LED_E,
248 LED_D,
249 LED_C,
250 LED_EMPTY,
236 251
237 LED_W, 252 LED_LGUI,
238 LED_S,
239 LED_X, 253 LED_X,
240 LED_LALT, 254 LED_S,
255 LED_W,
241 256
242 LED_LGUI,
243 LED_Z,
244 LED_A,
245 LED_Q, 257 LED_Q,
258 LED_A,
259 LED_Z,
260 LED_LALT,
246 261
247 LED_TAB,
248 LED_ESC,
249 LED_LSFT,
250 LED_LCTL, 262 LED_LCTL,
263 LED_LSFT,
264 LED_ESC,
265 LED_TAB,
251 266
252 LED_TOTAL 267 LED_TOTAL
253}; 268};
@@ -261,7 +276,7 @@ enum led_sequence {
261# define PS2_CLOCK_PORT PORTD 276# define PS2_CLOCK_PORT PORTD
262# define PS2_CLOCK_PIN PIND 277# define PS2_CLOCK_PIN PIND
263# define PS2_CLOCK_DDR DDRD 278# define PS2_CLOCK_DDR DDRD
264# define PS2_CLOCK_BIT 1 279# define PS2_CLOCK_BIT 3
265# define PS2_DATA_PORT PORTD 280# define PS2_DATA_PORT PORTD
266# define PS2_DATA_PIN PIND 281# define PS2_DATA_PIN PIND
267# define PS2_DATA_DDR DDRD 282# define PS2_DATA_DDR DDRD
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/Makefile b/keyboards/handwired/promethium/keymaps/priyadi/Makefile
index 46fdfa011..bd1a06734 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/Makefile
+++ b/keyboards/handwired/promethium/keymaps/priyadi/Makefile
@@ -19,6 +19,8 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
19RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. 19RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
20PS2_MOUSE_ENABLE = yes 20PS2_MOUSE_ENABLE = yes
21PS2_USE_INT = yes 21PS2_USE_INT = yes
22FAUXCLICKY_ENABLE = yes
23BLUETOOTH = AdafruitBLE
22 24
23# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 25# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
24SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 26SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/README.md b/keyboards/handwired/promethium/keymaps/priyadi/README.md
index ddeaed939..48824b9f7 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/README.md
+++ b/keyboards/handwired/promethium/keymaps/priyadi/README.md
@@ -37,8 +37,8 @@ On Promethium, USB or Bluetooth output is detected on startup. If USB is connect
37 37
38SYS-W, SYS-L, SYS-M switch Unicode input method. SYS-Q, SYS-D, SYS-C, SYS-K, SYS-N switch to QWERTY, DVORAK, Colemak, Workman and Norman, respectively. 38SYS-W, SYS-L, SYS-M switch Unicode input method. SYS-Q, SYS-D, SYS-C, SYS-K, SYS-N switch to QWERTY, DVORAK, Colemak, Workman and Norman, respectively.
39 39
40On Planck, SYS-A (mnemonic: audio) toggles faux clicky: use buzzer to emit clicks on key presses and releases. 40SYS-A (mnemonic: audio) toggles faux clicky: use buzzer to emit clicks on key presses and releases.
41 41
42On Promethium there are 6 indicator LEDs, and under switch LEDs on each switches, including Trackpoint buttons. Totaling 57 LEDs. Output is limited to 0xF for each LEDs to conserve power. SYS-G (mnemonic: glow) toggles various backlighting modes. 42On Promethium there are 16 indicator LEDs, and under switch LEDs on each switches, including Trackpoint buttons. Totaling 67 LEDs. Output is limited to 0xF for each LEDs to conserve power. SYS-G (mnemonic: glow) toggles various backlighting modes.
43 43
44On Promethium, there's a LED to indicate battery level. Hue indicates level: green is full, red is empty. \ No newline at end of file 44On Promethium, there's a LED to indicate battery level. Hue indicates level: green is full, red is empty. \ No newline at end of file
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h
index 3f5dd5817..fa86e2247 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/config.h
+++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h
@@ -14,6 +14,7 @@
14#define PREVENT_STUCK_MODIFIERS 14#define PREVENT_STUCK_MODIFIERS
15 15
16#define RGBSPS_ENABLE 16#define RGBSPS_ENABLE
17#define RGBSPS_DEMO_ENABLE
17 18
18#define UNICODE_TYPE_DELAY 0 19#define UNICODE_TYPE_DELAY 0
19 20
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index cf7c67339..d562c7bbf 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -31,6 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
31#include "quantum.h" 31#include "quantum.h"
32#ifdef RGBSPS_ENABLE 32#ifdef RGBSPS_ENABLE
33#include "rgbsps.h" 33#include "rgbsps.h"
34#include "rgbtheme.h"
34#endif 35#endif
35#ifdef PS2_MOUSE_ENABLE 36#ifdef PS2_MOUSE_ENABLE
36#include "ps2_mouse.h" 37#include "ps2_mouse.h"
@@ -38,6 +39,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
38#endif 39#endif
39#ifdef FAUXCLICKY_ENABLE 40#ifdef FAUXCLICKY_ENABLE
40#include "fauxclicky.h" 41#include "fauxclicky.h"
42#ifdef RGBSPS_ENABLE
43#undef FAUXCLICKY_OFF
44#define FAUXCLICKY_OFF do { \
45 fauxclicky_enabled = false; \
46 rgbsps_set(LED_AUDIO, COLOR_BLANK); \
47 fauxclicky_stop(); \
48} while (0)
49#undef FAUXCLICKY_ON
50#define FAUXCLICKY_ON do { \
51 fauxclicky_enabled = true; \
52 rgbsps_set(LED_AUDIO, THEME_COLOR_AUDIO); \
53} while (0)
54#endif
41#endif 55#endif
42#include "outputselect.h" 56#include "outputselect.h"
43#include "led.h" 57#include "led.h"
@@ -128,9 +142,10 @@ enum planck_keycodes {
128#ifndef FAUXCLICKY_ENABLE 142#ifndef FAUXCLICKY_ENABLE
129 FC_TOG, 143 FC_TOG,
130#endif 144#endif
131#ifndef ADAFRUIT_BLE_ENABLE 145#ifndef MODULE_ADAFRUIT_BLE
132 OUT_BLE, 146 OUT_BT,
133#endif 147#endif
148 RGBDEMO,
134 KEYCODE_END 149 KEYCODE_END
135}; 150};
136 151
@@ -421,19 +436,30 @@ const uint8_t PROGMEM LED_MODS[] = {
421}; 436};
422 437
423const uint8_t PROGMEM LED_FN[] = { 438const uint8_t PROGMEM LED_FN[] = {
424 LED_PUNC, 439 LED_EMPTY,
425 LED_NUM, 440 LED_NUM,
426 LED_FUN, 441 LED_FUN,
427 LED_EMOJI 442 LED_GREEK
428}; 443};
429 444
430const uint8_t PROGMEM LED_INDICATORS[] = { 445const uint8_t PROGMEM LED_INDICATORS[] = {
431 LED_IND_EMOJI, 446 LED_IND_LINUX,
432 LED_IND_NUM, 447 LED_IND_APPLE,
433 LED_IND_FUN, 448 LED_IND_WINDOWS,
434 LED_IND_BATTERY, 449 LED_IND_QWERTY,
435 LED_IND_USB, 450 LED_IND_ALT,
451 LED_IND_AUDIO,
436 LED_IND_BLUETOOTH, 452 LED_IND_BLUETOOTH,
453 LED_IND_USB,
454
455 LED_IND_BATTERY,
456 LED_IND_CAPSLOCK,
457 LED_IND_GUI,
458 LED_IND_FUN,
459 LED_IND_NUM,
460 LED_IND_PUNC,
461 LED_IND_EMOJI,
462 LED_IND_GREEK,
437}; 463};
438 464
439const uint8_t PROGMEM LED_TRACKPOINT[] = { 465const uint8_t PROGMEM LED_TRACKPOINT[] = {
@@ -444,16 +470,37 @@ const uint8_t PROGMEM LED_TRACKPOINT[] = {
444 470
445void led_turnoff_keys(void) { 471void led_turnoff_keys(void) {
446 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 472 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
447 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); 473 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), COLOR_BLACK);
448 } 474 }
449 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { 475 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
450 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 0, 0); 476 rgbsps_set(pgm_read_byte(&LED_MODS[i]), COLOR_BLACK);
451 } 477 }
452 for(uint8_t i = 0; i < COUNT(LED_FN); i++) { 478 for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
453 rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 0); 479 rgbsps_set(pgm_read_byte(&LED_FN[i]), COLOR_BLACK);
454 } 480 }
455} 481}
456 482
483#ifdef RGBSPS_DEMO_ENABLE
484void led_demo(void) {
485 rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
486 rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
487 rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
488 rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
489 rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT);
490 rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
491 rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH);
492 rgbsps_set(LED_IND_USB, THEME_COLOR_USB);
493 rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
494 rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI);
495 rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN);
496 rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM);
497 rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC);
498 rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK);
499 rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI);
500 rgbsps_send();
501}
502#endif
503
457void led_reset(void) { 504void led_reset(void) {
458 switch (glow_mode) { 505 switch (glow_mode) {
459 case GLOW_NONE: 506 case GLOW_NONE:
@@ -462,39 +509,55 @@ void led_reset(void) {
462 case GLOW_MIN: 509 case GLOW_MIN:
463 led_turnoff_keys(); 510 led_turnoff_keys();
464 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { 511 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
465 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 8, 8, 8); 512 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW1_HOME);
466 } 513 }
467 rgbsps_set(LED_F, 15, 0, 0); 514 rgbsps_set(LED_F, THEME_COLOR_GLOW1_HOMING);
468 rgbsps_set(LED_J, 15, 0, 0); 515 rgbsps_set(LED_J, THEME_COLOR_GLOW1_HOMING);
469 break; 516 break;
470 case GLOW_FULL: 517 case GLOW_FULL:
471 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { 518 for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
472 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 8, 8, 8); 519 rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), THEME_COLOR_GLOW2_ALPHA);
473 } 520 }
474 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { 521 for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
475 rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 15, 0); 522 rgbsps_set(pgm_read_byte(&LED_MODS[i]), THEME_COLOR_GLOW2_MODS);
476 } 523 }
477 for(uint8_t i = 0; i < COUNT(LED_FN); i++) { 524 for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
478 rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 15); 525 rgbsps_set(pgm_read_byte(&LED_FN[i]), THEME_COLOR_GLOW2_FN);
479 } 526 }
480 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { 527 for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) {
481 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 15, 0, 0); 528 rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW2_HOME);
482 } 529 }
483 rgbsps_set(LED_F, 15, 15, 0); 530 rgbsps_set(LED_F, THEME_COLOR_GLOW2_HOMING);
484 rgbsps_set(LED_J, 15, 15, 0); 531 rgbsps_set(LED_J, THEME_COLOR_GLOW2_HOMING);
485 break; 532 break;
486 } 533 }
487} 534}
488 535
536void led_set_default_layer_indicator(void) {
537 uint8_t default_layer = biton32(default_layer_state);
538 if (default_layer == _QWERTY) {
539 rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
540 rgbsps_set(LED_IND_ALT, COLOR_BLANK);
541 } else {
542 rgbsps_set(LED_IND_QWERTY, COLOR_BLANK);
543 rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT);
544 }
545 rgbsps_send();
546 return;
547}
548
489void led_set_layer_indicator(void) { 549void led_set_layer_indicator(void) {
490 static uint8_t oldlayer = 255; 550 static uint8_t oldlayer = 255;
491 551
492 rgbsps_set(LED_IND_FUN, 0, 0, 0);
493 // rgbsps_set(LED_IND_NUM, 0, 0, 0);
494 rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
495
496 led_reset(); 552 led_reset();
497 553
554 rgbsps_set(LED_IND_GUI, COLOR_BLANK);
555 rgbsps_set(LED_IND_FUN, COLOR_BLANK);
556 rgbsps_set(LED_IND_NUM, COLOR_BLANK);
557 rgbsps_set(LED_IND_PUNC, COLOR_BLANK);
558 rgbsps_set(LED_IND_GREEK, COLOR_BLANK);
559 rgbsps_set(LED_IND_EMOJI, COLOR_BLANK);
560
498 uint8_t layer = biton32(layer_state); 561 uint8_t layer = biton32(layer_state);
499 if (oldlayer == layer) { 562 if (oldlayer == layer) {
500 return; 563 return;
@@ -508,39 +571,72 @@ void led_set_layer_indicator(void) {
508 } 571 }
509 572
510 switch(layer) { 573 switch(layer) {
574 case _GUI:
575 rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI);
576 break;
511 case _FUN: 577 case _FUN:
512 rgbsps_set(LED_IND_FUN, 15, 0, 0); 578 rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN);
579 break;
580 case _NUM:
581 rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM);
582 break;
583 case _PUNC:
584 rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC);
585 break;
586 case _GREEKL:
587 case _GREEKU:
588 rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK);
513 break; 589 break;
514 // case _NUM:
515 // rgbsps_set(LED_IND_NUM, 0, 0, 15);
516 // break;
517 case _EMOJI: 590 case _EMOJI:
518 rgbsps_set(LED_IND_EMOJI, 15, 15, 0); 591 rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI);
519 break; 592 break;
520 default: 593 default:
521 rgbsps_set(LED_IND_FUN, 3, 3, 3); 594 rgbsps_set(LED_IND_GUI, THEME_COLOR_OTHERLAYER);
522 // rgbsps_set(LED_IND_NUM, 3, 3, 3); 595 rgbsps_set(LED_IND_FUN, THEME_COLOR_OTHERLAYER);
523 rgbsps_set(LED_IND_EMOJI, 3, 3, 3); 596 rgbsps_set(LED_IND_NUM, THEME_COLOR_OTHERLAYER);
597 rgbsps_set(LED_IND_PUNC, THEME_COLOR_OTHERLAYER);
598 rgbsps_set(LED_IND_GREEK, THEME_COLOR_OTHERLAYER);
599 rgbsps_set(LED_IND_EMOJI, THEME_COLOR_OTHERLAYER);
524 } 600 }
525 601
526 rgbsps_send(); 602 rgbsps_send();
527} 603}
528 604
605void led_set_unicode_input_mode(void) {
606 rgbsps_set(LED_IND_LINUX, COLOR_BLANK);
607 rgbsps_set(LED_IND_APPLE, COLOR_BLANK);
608 rgbsps_set(LED_IND_WINDOWS, COLOR_BLANK);
609
610 switch (get_unicode_input_mode()) {
611 case UC_LNX:
612 rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX);
613 break;
614 case UC_OSX:
615 rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE);
616 break;
617 case UC_WIN:
618 case UC_WINC:
619 rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS);
620 break;
621 }
622 rgbsps_send();
623}
624
529void led_set_output_ble(void) { 625void led_set_output_ble(void) {
530 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15); 626 rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH);
531 rgbsps_set(LED_IND_USB, 0, 0, 0); 627 rgbsps_set(LED_IND_USB, COLOR_BLANK);
532 rgbsps_send(); 628 rgbsps_send();
533} 629}
534 630
535void led_set_output_usb(void) { 631void led_set_output_usb(void) {
536 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); 632 rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK);
537 rgbsps_set(LED_IND_USB, 15, 15, 15); 633 rgbsps_set(LED_IND_USB, THEME_COLOR_USB);
538 rgbsps_send(); 634 rgbsps_send();
539} 635}
540 636
541void led_set_output_none(void) { 637void led_set_output_none(void) {
542 rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); 638 rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK);
543 rgbsps_set(LED_IND_USB, 0, 0, 0); 639 rgbsps_set(LED_IND_USB, COLOR_BLANK);
544 rgbsps_send(); 640 rgbsps_send();
545} 641}
546 642
@@ -549,10 +645,30 @@ void led_init(void) {
549 rgbsps_turnoff(); 645 rgbsps_turnoff();
550 646
551 // set trackpoint color 647 // set trackpoint color
552 rgbsps_set(LED_TRACKPOINT1, 15, 0, 0); 648 rgbsps_set(LED_TRACKPOINT1, THEME_COLOR_TP1);
553 rgbsps_set(LED_TRACKPOINT2, 0, 0, 15); 649 rgbsps_set(LED_TRACKPOINT2, THEME_COLOR_TP2);
554 rgbsps_set(LED_TRACKPOINT3, 15, 0, 0); 650 rgbsps_set(LED_TRACKPOINT3, THEME_COLOR_TP3);
651
652 // unicode input mode
653 led_set_unicode_input_mode();
654
655 // layer indicator
656 led_set_layer_indicator();
657 led_set_default_layer_indicator();
658
659 // clicky
660#ifdef FAUXCLICKY_ENABLE
661 if (fauxclicky_enabled) {
662 rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
663 } else {
664 rgbsps_set(LED_IND_AUDIO, COLOR_BLANK);
665 }
666#endif
667
668 rgbsps_send();
555} 669}
670
671
556#endif // RGBSPS_ENABLE 672#endif // RGBSPS_ENABLE
557 673
558// keymaps 674// keymaps
@@ -574,7 +690,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
574 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 690 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
575 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT , 691 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT ,
576 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, 692 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
577 KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL 693 KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL,
694 _______, _______, _______
578), 695),
579 696
580/* Dvorak 697/* Dvorak
@@ -593,7 +710,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
593 _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______, 710 _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______,
594 _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______, 711 _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______,
595 _______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______, 712 _______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______,
596 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 713 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
714 _______, _______, _______
597), 715),
598#endif 716#endif
599 717
@@ -614,7 +732,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
614 _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______, 732 _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______,
615 _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______, 733 _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
616 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, 734 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
617 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 735 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
736 _______, _______, _______
618), 737),
619#endif 738#endif
620 739
@@ -635,7 +754,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
635 _______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______, 754 _______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______,
636 _______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______, 755 _______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______,
637 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, 756 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
638 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 757 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
758 _______, _______, _______
639), 759),
640#endif 760#endif
641 761
@@ -656,7 +776,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
656 _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______, 776 _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______,
657 _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______, 777 _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______,
658 _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______, 778 _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______,
659 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 779 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
780 _______, _______, _______
660), 781),
661#endif 782#endif
662 783
@@ -675,7 +796,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
675 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______, 796 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
676 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______, 797 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
677 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______, 798 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
678 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, _______ 799 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, _______,
800 _______, _______, _______
679), 801),
680 802
681/* Num 803/* Num
@@ -690,10 +812,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
690 * `-----------------------------------------------------------------------------------' 812 * `-----------------------------------------------------------------------------------'
691 */ 813 */
692[_NUM] = KEYMAP( 814[_NUM] = KEYMAP(
693 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______, 815 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_1, KC_2, KC_3, S(KC_D), _______,
694 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______, 816 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
695 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), _______, 817 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_7, KC_8, KC_9, S(KC_F), _______,
696 _______, _______, KC_X, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_COLN, _______ 818 _______, _______, KC_X, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_COLN, _______,
819 _______, _______, _______
697), 820),
698 821
699/* Func 822/* Func
@@ -711,7 +834,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
711 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL, 834 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
712 KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, 835 KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
713 _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______, 836 _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
714 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 837 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
838 _______, _______, _______
715), 839),
716 840
717/* Uppercase Greek 841/* Uppercase Greek
@@ -729,7 +853,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
729 _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______, 853 _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
730 _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______, 854 _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
731 _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______, 855 _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______,
732 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 856 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
857 _______, _______, _______
733), 858),
734 859
735/* Lowercase Greek 860/* Lowercase Greek
@@ -747,7 +872,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
747 _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______, 872 _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
748 _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______, 873 _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
749 _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______, 874 _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______,
750 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 875 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
876 _______, _______, _______
751), 877),
752 878
753/* Empty 879/* Empty
@@ -765,7 +891,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
765 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 891 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
766 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 892 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
767 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 893 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
768 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 894 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
895 _______, _______, _______
769), 896),
770 897
771/* Emoji 898/* Emoji
@@ -783,7 +910,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
783 X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW), 910 X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
784 X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS), 911 X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
785 X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH), 912 X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
786 X(POO), X(EYES), X(HUNRD),_______, X(SKULL),X(HORNS), X(HALO), X(FEAR),_______,X(YUMMY),X(DISAP),X(NOEVK) 913 X(POO), X(EYES), X(HUNRD),_______, X(SKULL),X(HORNS), X(HALO), X(FEAR),_______,X(YUMMY),X(DISAP),X(NOEVK),
914 _______, _______, _______
787), 915),
788 916
789/* GUI 917/* GUI
@@ -801,7 +929,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
801 XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX, 929 XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
802 KC_ESC, XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX, 930 KC_ESC, XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
803 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC, KC_SPC, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, 931 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC, KC_SPC, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
804 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX 932 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
933 _______, _______, _______
805), 934),
806 935
807/* Sys 936/* Sys
@@ -816,10 +945,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
816 * `-----------------------------------------------------------------------------------' 945 * `-----------------------------------------------------------------------------------'
817 */ 946 */
818[_SYS] = KEYMAP( 947[_SYS] = KEYMAP(
819 XXXXXXX, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 948 DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
820 XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX, 949 XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
821 XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BLE, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 950 XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
822 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ 951 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
952 _______, _______, _______
823), 953),
824 954
825 955
@@ -828,6 +958,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
828void persistant_default_layer_set(uint16_t default_layer) { 958void persistant_default_layer_set(uint16_t default_layer) {
829 eeconfig_update_default_layer(default_layer); 959 eeconfig_update_default_layer(default_layer);
830 default_layer_set(default_layer); 960 default_layer_set(default_layer);
961#ifdef RGBSPS_ENABLE
962 led_set_default_layer_indicator();
963#endif
831} 964}
832 965
833#ifdef DOUBLESPACE_LAYER_ENABLE 966#ifdef DOUBLESPACE_LAYER_ENABLE
@@ -1072,14 +1205,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1072 // OS switchers 1205 // OS switchers
1073 case LINUX: 1206 case LINUX:
1074 set_unicode_input_mode(UC_LNX); 1207 set_unicode_input_mode(UC_LNX);
1208#ifdef RGBSPS_ENABLE
1209 led_set_unicode_input_mode();
1210#endif
1075 return false; 1211 return false;
1076 break; 1212 break;
1077 case WIN: 1213 case WIN:
1078 set_unicode_input_mode(UC_WINC); 1214 set_unicode_input_mode(UC_WINC);
1215#ifdef RGBSPS_ENABLE
1216 led_set_unicode_input_mode();
1217#endif
1079 return false; 1218 return false;
1080 break; 1219 break;
1081 case OSX: 1220 case OSX:
1082 set_unicode_input_mode(UC_OSX); 1221 set_unicode_input_mode(UC_OSX);
1222#ifdef RGBSPS_ENABLE
1223 led_set_unicode_input_mode();
1224#endif
1083 return false; 1225 return false;
1084 break; 1226 break;
1085 1227
@@ -1101,20 +1243,35 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
1101 // faux clicky indicator 1243 // faux clicky indicator
1102#ifdef FAUXCLICKY_ENABLE 1244#ifdef FAUXCLICKY_ENABLE
1103 case FC_TOG: 1245 case FC_TOG:
1246#ifdef RGBSPS_ENABLE
1247 if (fauxclicky_enabled) {
1248 rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO);
1249 } else {
1250 rgbsps_set(LED_IND_AUDIO, COLOR_BLANK);
1251 }
1252 rgbsps_send();
1253#endif
1104 return true; 1254 return true;
1105 break; 1255 break;
1106#endif 1256#endif
1257
1258#ifdef RGBSPS_DEMO_ENABLE
1259 case RGBDEMO:
1260 led_demo();
1261 return false;
1262 break;
1263#endif
1107 } 1264 }
1108 return true; 1265 return true;
1109} 1266}
1110 1267
1111void set_output_user(uint8_t output) { 1268void set_output_user(uint8_t output) {
1112#ifdef ADAFRUIT_BLE_ENABLE 1269#ifdef MODULE_ADAFRUIT_BLE
1113 switch(output) { 1270 switch(output) {
1114 case OUTPUT_USB: 1271 case OUTPUT_USB:
1115 led_set_output_usb(); 1272 led_set_output_usb();
1116 break; 1273 break;
1117 case OUTPUT_ADAFRUIT_BLE: 1274 case OUTPUT_BLUETOOTH:
1118 led_set_output_ble(); 1275 led_set_output_ble();
1119 break; 1276 break;
1120 default: 1277 default:
@@ -1133,12 +1290,12 @@ void matrix_init_user() {
1133#endif 1290#endif
1134 1291
1135 // auto detect output on init 1292 // auto detect output on init
1136#ifdef ADAFRUIT_BLE_ENABLE 1293#ifdef MODULE_ADAFRUIT_BLE
1137 uint8_t output = auto_detect_output(); 1294 uint8_t output = auto_detect_output();
1138 if (output == OUTPUT_USB) { 1295 if (output == OUTPUT_USB) {
1139 set_output(OUTPUT_USB); 1296 set_output(OUTPUT_USB);
1140 } else { 1297 } else {
1141 set_output(OUTPUT_ADAFRUIT_BLE); 1298 set_output(OUTPUT_BLUETOOTH);
1142 } 1299 }
1143#endif 1300#endif
1144} 1301}
@@ -1164,9 +1321,9 @@ void turn_off_capslock() {
1164 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK); 1321 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
1165 if (new_capslock ^ capslock) { // capslock state is different 1322 if (new_capslock ^ capslock) { // capslock state is different
1166 if ((capslock = new_capslock)) { 1323 if ((capslock = new_capslock)) {
1167 rgbsps_set(LED_IND_NUM, 15, 0, 0); 1324 rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK);
1168 } else { 1325 } else {
1169 rgbsps_set(LED_IND_NUM, 0, 0, 0); 1326 rgbsps_set(LED_IND_CAPSLOCK, COLOR_BLANK);
1170 } 1327 }
1171 rgbsps_send(); 1328 rgbsps_send();
1172 } 1329 }
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h
new file mode 100644
index 000000000..e60971035
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme.h
@@ -0,0 +1 @@
#include "rgbtheme_default.h"
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h
new file mode 100644
index 000000000..8e0a98b09
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_carbon.h
@@ -0,0 +1,36 @@
1#include "color.h"
2
3#define THEME_COLOR_LINUX COLOR_WHITE
4#define THEME_COLOR_APPLE COLOR_WHITE
5#define THEME_COLOR_WINDOWS COLOR_WHITE
6
7#define THEME_COLOR_QWERTY COLOR_RED
8#define THEME_COLOR_ALT COLOR_RED
9
10#define THEME_COLOR_AUDIO COLOR_GREEN
11
12#define THEME_COLOR_BLUETOOTH 7,7,15
13#define THEME_COLOR_USB COLOR_WHITE
14
15#define THEME_COLOR_CAPSLOCK COLOR_RED
16
17#define THEME_COLOR_GUI COLOR_MAGENTA
18#define THEME_COLOR_FUN COLOR_RED
19#define THEME_COLOR_NUM 7,7,15
20#define THEME_COLOR_PUNC COLOR_GREEN
21#define THEME_COLOR_GREEK COLOR_CYAN
22#define THEME_COLOR_EMOJI COLOR_YELLOW
23#define THEME_COLOR_OTHERLAYER COLOR_GRAY
24
25#define THEME_COLOR_GLOW1_HOME COLOR_ORANGE
26#define THEME_COLOR_GLOW1_HOMING COLOR_RED
27
28#define THEME_COLOR_GLOW2_ALPHA COLOR_ORANGE
29#define THEME_COLOR_GLOW2_MODS COLOR_ORANGE
30#define THEME_COLOR_GLOW2_FN COLOR_ORANGE
31#define THEME_COLOR_GLOW2_HOME COLOR_ORANGE
32#define THEME_COLOR_GLOW2_HOMING COLOR_RED
33
34#define THEME_COLOR_TP1 COLOR_ORANGE
35#define THEME_COLOR_TP2 COLOR_RED
36#define THEME_COLOR_TP3 COLOR_ORANGE \ No newline at end of file
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h
new file mode 100644
index 000000000..4c3fb1369
--- /dev/null
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rgbtheme_default.h
@@ -0,0 +1,36 @@
1#include "color.h"
2
3#define THEME_COLOR_LINUX COLOR_WHITE
4#define THEME_COLOR_APPLE COLOR_WHITE
5#define THEME_COLOR_WINDOWS COLOR_WHITE
6
7#define THEME_COLOR_QWERTY COLOR_RED
8#define THEME_COLOR_ALT COLOR_RED
9
10#define THEME_COLOR_AUDIO COLOR_GREEN
11
12#define THEME_COLOR_BLUETOOTH COLOR_BLUE
13#define THEME_COLOR_USB COLOR_WHITE
14
15#define THEME_COLOR_CAPSLOCK COLOR_RED
16
17#define THEME_COLOR_GUI COLOR_MAGENTA
18#define THEME_COLOR_FUN COLOR_RED
19#define THEME_COLOR_NUM COLOR_BLUE
20#define THEME_COLOR_PUNC COLOR_GREEN
21#define THEME_COLOR_GREEK COLOR_CYAN
22#define THEME_COLOR_EMOJI COLOR_YELLOW
23#define THEME_COLOR_OTHERLAYER COLOR_GRAY
24
25#define THEME_COLOR_GLOW1_HOME COLOR_GRAY
26#define THEME_COLOR_GLOW1_HOMING COLOR_RED
27
28#define THEME_COLOR_GLOW2_ALPHA COLOR_GRAY
29#define THEME_COLOR_GLOW2_MODS COLOR_GREEN
30#define THEME_COLOR_GLOW2_FN COLOR_BLUE
31#define THEME_COLOR_GLOW2_HOME COLOR_RED
32#define THEME_COLOR_GLOW2_HOMING COLOR_YELLOW
33
34#define THEME_COLOR_TP1 COLOR_RED
35#define THEME_COLOR_TP2 COLOR_BLUE
36#define THEME_COLOR_TP3 COLOR_RED \ No newline at end of file
diff --git a/keyboards/handwired/promethium/matrix.c b/keyboards/handwired/promethium/matrix.c
new file mode 100644
index 000000000..72dbe8d4d
--- /dev/null
+++ b/keyboards/handwired/promethium/matrix.c
@@ -0,0 +1,306 @@
1/*
2Copyright 2012 Jun Wako
3Copyright 2014 Jack Humbert
4Copyright 2017 Priyadi Iman Nurcahyo
5
6This program is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation, either version 2 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program. If not, see <http://www.gnu.org/licenses/>.
18*/
19#include <stdint.h>
20#include <stdbool.h>
21#if defined(__AVR__)
22#include <avr/io.h>
23#endif
24#include "wait.h"
25#include "print.h"
26#include "debug.h"
27#include "util.h"
28#include "matrix.h"
29#include "timer.h"
30
31
32/* Set 0 if debouncing isn't needed */
33
34#ifndef DEBOUNCING_DELAY
35# define DEBOUNCING_DELAY 5
36#endif
37
38#if (DEBOUNCING_DELAY > 0)
39 static uint16_t debouncing_time;
40 static bool debouncing = false;
41#endif
42
43#if (MATRIX_COLS <= 8)
44# define print_matrix_header() print("\nr/c 01234567\n")
45# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row))
46# define matrix_bitpop(i) bitpop(matrix[i])
47# define ROW_SHIFTER ((uint8_t)1)
48#elif (MATRIX_COLS <= 16)
49# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n")
50# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row))
51# define matrix_bitpop(i) bitpop16(matrix[i])
52# define ROW_SHIFTER ((uint16_t)1)
53#elif (MATRIX_COLS <= 32)
54# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n")
55# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row))
56# define matrix_bitpop(i) bitpop32(matrix[i])
57# define ROW_SHIFTER ((uint32_t)1)
58#endif
59
60#ifdef MATRIX_MASKED
61 extern const matrix_row_t matrix_mask[];
62#endif
63
64static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
65static const uint8_t tp_pins[3] = TRACKPOINT_PINS;
66
67/* matrix state(1:on, 0:off) */
68static matrix_row_t matrix[MATRIX_ROWS];
69static matrix_row_t matrix_debouncing[MATRIX_ROWS];
70
71static void init_cols(void);
72static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
73static void unselect_rows(void);
74static void select_row(uint8_t row);
75static void unselect_row(uint8_t row);
76
77__attribute__ ((weak))
78void matrix_init_quantum(void) {
79 matrix_init_kb();
80}
81
82__attribute__ ((weak))
83void matrix_scan_quantum(void) {
84 matrix_scan_kb();
85}
86
87__attribute__ ((weak))
88void matrix_init_kb(void) {
89 matrix_init_user();
90}
91
92__attribute__ ((weak))
93void matrix_scan_kb(void) {
94 matrix_scan_user();
95}
96
97__attribute__ ((weak))
98void matrix_init_user(void) {
99}
100
101__attribute__ ((weak))
102void matrix_scan_user(void) {
103}
104
105inline
106uint8_t matrix_rows(void) {
107 return MATRIX_ROWS;
108}
109
110inline
111uint8_t matrix_cols(void) {
112 return MATRIX_COLS;
113}
114
115void matrix_init(void) {
116
117 // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
118 #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__))
119 MCUCR |= _BV(JTD);
120 MCUCR |= _BV(JTD);
121 #endif
122
123 // initialize row and col
124 unselect_rows();
125 init_cols();
126
127 // initialize matrix state: all keys off
128 for (uint8_t i=0; i < MATRIX_ROWS; i++) {
129 matrix[i] = 0;
130 matrix_debouncing[i] = 0;
131 }
132
133 matrix_init_quantum();
134}
135
136uint8_t matrix_scan(void)
137{
138 // Set row, read cols
139 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
140# if (DEBOUNCING_DELAY > 0)
141 bool matrix_changed = read_cols_on_row(matrix_debouncing, current_row);
142
143 if (matrix_changed) {
144 debouncing = true;
145 debouncing_time = timer_read();
146 }
147
148# else
149 read_cols_on_row(matrix, current_row);
150# endif
151
152 }
153
154# if (DEBOUNCING_DELAY > 0)
155 if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
156 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
157 matrix[i] = matrix_debouncing[i];
158 }
159 debouncing = false;
160 }
161# endif
162
163 matrix_scan_quantum();
164 return 1;
165}
166
167bool matrix_is_modified(void)
168{
169#if (DEBOUNCING_DELAY > 0)
170 if (debouncing) return false;
171#endif
172 return true;
173}
174
175inline
176bool matrix_is_on(uint8_t row, uint8_t col)
177
178{
179 return (matrix[row] & ((matrix_row_t)1<col));
180}
181
182inline
183matrix_row_t matrix_get_row(uint8_t row)
184{
185 // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a
186 // switch blocker installed and the switch is always pressed.
187#ifdef MATRIX_MASKED
188 return matrix[row] & matrix_mask[row];
189#else
190 return matrix[row];
191#endif
192}
193
194void matrix_print(void)
195{
196 print_matrix_header();
197
198 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
199 phex(row); print(": ");
200 print_matrix_row(row);
201 print("\n");
202 }
203}
204
205uint8_t matrix_key_count(void)
206{
207 uint8_t count = 0;
208 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
209 count += matrix_bitpop(i);
210 }
211 return count;
212}
213
214
215#define ROW_MASK 0b11100000
216
217static const uint8_t row_bit[MATRIX_ROWS] = {
218 // 76543210
219 0b00000000,
220 0b00100000,
221 0b01000000,
222 0b01100000,
223 0b10000000,
224 0b10100000,
225 0b11000000,
226 0b11100000,
227};
228
229static void init_cols(void)
230{
231 // columns
232 for(uint8_t x = 0; x < MATRIX_COLS; x++) {
233 uint8_t pin = col_pins[x];
234 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
235 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
236 }
237
238 // rows
239 DDRF |= ROW_MASK;
240 PORTF &= ~ROW_MASK;
241
242 // trackpoint
243 for(uint8_t x = 0; x < 3; x++) {
244 uint8_t pin = tp_pins[x];
245 _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
246 _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
247 }
248}
249
250static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
251 {
252 // Store last value of row prior to reading
253 matrix_row_t last_row_value = current_matrix[current_row];
254
255 // Clear data in matrix row
256 current_matrix[current_row] = 0;
257
258 // special case for trackpoint
259 if (current_row == 8) {
260 for(uint8_t tp_index = 0; tp_index < 3; tp_index++) {
261
262 // Select the TP pin to read (active low)
263 uint8_t pin = tp_pins[tp_index];
264 uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
265
266 // Populate the matrix row with the state of the col pin
267 current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << tp_index);
268 }
269 return (last_row_value != current_matrix[current_row]);
270 }
271
272 // Select row and wait for row selecton to stabilize
273 select_row(current_row);
274 _delay_us(5); // without this wait it won't read stable value.
275 // wait_us(50);
276
277 // For each col...
278 for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
279
280 // Select the col pin to read (active low)
281 uint8_t pin = col_pins[col_index];
282 uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
283
284 // Populate the matrix row with the state of the col pin
285 current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
286 }
287
288 // Unselect row
289 unselect_row(current_row);
290
291 return (last_row_value != current_matrix[current_row]);
292}
293
294static void select_row(uint8_t row)
295{
296 PORTF = row_bit[row] | (PORTF & ~ROW_MASK);
297}
298
299static void unselect_row(uint8_t row)
300{
301}
302
303static void unselect_rows(void)
304{
305}
306
diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c
index 4943f8c9f..3cc0f5a8c 100644
--- a/keyboards/handwired/promethium/promethium.c
+++ b/keyboards/handwired/promethium/promethium.c
@@ -2,6 +2,11 @@
2#include "analog.h" 2#include "analog.h"
3#include "timer.h" 3#include "timer.h"
4#include "matrix.h" 4#include "matrix.h"
5#include "musical_notes.h"
6
7float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A4, 0.0625);
8float fauxclicky_released_note[2] = MUSICAL_NOTE(_A4, 0.0625);
9float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C6, 0.25);
5 10
6// cubic fit {3.3, 0}, {3.5, 2.9}, {3.6, 5}, {3.7, 8.6}, {3.8, 36}, {3.9, 62}, {4.0, 73}, {4.05, 83}, {4.1, 89}, {4.15, 94}, {4.2, 100} 11// cubic fit {3.3, 0}, {3.5, 2.9}, {3.6, 5}, {3.7, 8.6}, {3.8, 36}, {3.9, 62}, {4.0, 73}, {4.05, 83}, {4.1, 89}, {4.15, 94}, {4.2, 100}
7 12
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index e75cf4dde..a6dd43b85 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -65,12 +65,14 @@ BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
65RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. 65RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
66PS2_MOUSE_ENABLE ?= yes 66PS2_MOUSE_ENABLE ?= yes
67PS2_USE_INT ?= yes 67PS2_USE_INT ?= yes
68ADAFRUIT_BLE_ENABLE ?= yes
69API_SYSEX_ENABLE ?= no 68API_SYSEX_ENABLE ?= no
69CUSTOM_MATRIX ?= yes
70BLUETOOTH ?= AdafruitBLE
70 71
71# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 72# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
72SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend 73SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
73 74
74SRC += $(QUANTUM_DIR)/light_ws2812.c 75SRC += $(QUANTUM_DIR)/light_ws2812.c
75SRC += rgbsps.c 76SRC += rgbsps.c
76SRC += $(QUANTUM_DIR)/analog.c \ No newline at end of file 77SRC += $(QUANTUM_DIR)/analog.c
78SRC += matrix.c