]> git.donarmstrong.com Git - qmk_firmware.git/blob - users/wanleg/wanleg.c
[Keyboard] Snagpad Configurator bugfix and readme refactor (#6381)
[qmk_firmware.git] / users / wanleg / wanleg.c
1 #include "wanleg.h"
2
3 // Defines actions for my global custom keycodes. Defined in wanleg.h file
4 // Then runs the _keymap's record handier if not processed here
5 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
6   switch (keycode) {
7     case QWERTY:
8       if (record->event.pressed) {
9         set_single_persistent_default_layer(_QW);
10                 #if defined(RGBLIGHT_ENABLE)
11                 rgblight_sethsv_noeeprom(0,0,128);
12         rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING);
13                 #endif
14       }
15       return false;
16       break;
17     case GHERKIN:
18       if (record->event.pressed) {
19         set_single_persistent_default_layer(_GK);
20                 #if defined(RGBLIGHT_ENABLE)
21         rgblight_sethsv_noeeprom(128,255,64);
22                 #endif
23       }
24       return false;
25       break;
26     case gGHERKIN:
27       if (record->event.pressed) {
28         set_single_persistent_default_layer(gGK);
29                 #if defined(RGBLIGHT_ENABLE)
30         rgblight_sethsv_noeeprom(128,255,128);
31         rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT);
32                 #endif
33       }
34       return false;
35       break;
36     case ONEHAND:
37     if (record->event.pressed) {
38       set_single_persistent_default_layer(ONE);
39       }
40       return false;
41       break;
42     case NUMPAD:
43     if (record->event.pressed) {
44       set_single_persistent_default_layer(PAD);
45       }
46       return false;
47       break;
48     case GHERKIN50:
49     if (record->event.pressed) {
50       set_single_persistent_default_layer(GK50);
51       }
52       return false;
53       break;
54     case SUBTER:
55       if (record->event.pressed) {
56         layer_on(SUB);
57       } else {
58         layer_off(SUB);
59       }
60       return false;
61       break;
62     case SUPRA:
63       if (record->event.pressed) {
64         layer_on(SUP);
65       } else {
66         layer_off(SUP);
67       }
68       return false;
69       break;
70         case NUMBER:
71       if (record->event.pressed) {
72         layer_on(NUM);
73       } else {
74         layer_off(NUM);
75       }
76       return false;
77       break;
78         case DIRECTION:
79       if (record->event.pressed) {
80         layer_on(DIR);
81       } else {
82         layer_off(DIR);
83       }
84       return false;
85       break;
86         case ETCETERA:
87       if (record->event.pressed) {
88         layer_on(ETC);
89       } else {
90         layer_off(ETC);
91       }
92       return false;
93       break;
94   case gNUMBER:
95       if (record->event.pressed) {
96         layer_on(gNUM);
97       } else {
98         layer_off(gNUM);
99       }
100       return false;
101       break;
102   case gDIRECTION:
103       if (record->event.pressed) {
104         layer_on(gDIR);
105       } else {
106         layer_off(gDIR);
107       }
108       return false;
109       break;
110         case gETCETERA:
111       if (record->event.pressed) {
112         layer_on(gETC);
113       } else {
114         layer_off(gETC);
115       }
116       return false;
117       break;
118         case FUNCTION:
119       if (record->event.pressed) {
120         layer_on(_FN);
121       } else {
122         layer_off(_FN);
123       }
124       return false;
125       break;
126   //on RESET, underglow red if present
127   case RESET:
128       if (record->event.pressed) {
129                   #if defined(RGBLIGHT_ENABLE)
130                   rgblight_enable_noeeprom(); // enables Rgb, without saving settings
131                   rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
132                   rgblight_sethsv_noeeprom_red();
133                   #endif
134       }
135       return true; // Let QMK send the press/release events as normal
136       break;
137   }
138   return true;
139 }
140
141 /// Turn off LEDs on ProMicros of Let's Split ///
142 // LEDs only on by default on Let's Split
143 // Add reconfigurable functions here, for keymap customization
144 // This allows for a global, userspace functions, and continued
145 // customization of the keymap.  Use _keymap instead of _user
146 // functions in the keymaps
147 __attribute__ ((weak))
148 void matrix_init_keymap(void) {}
149
150 // Call user matrix init, then call the keymap's init function
151 void matrix_init_user(void) {
152 //turn off pro micro LEDs
153 #if defined(KEYBOARD_lets_split_rev2)
154   DDRD &= ~(1<<5);
155   PORTD &= ~(1<<5);
156
157   DDRB &= ~(1<<0);
158   PORTB &= ~(1<<0);
159 #endif
160
161 //disable backlight breathing for keyboard using random flashing RGB LEDs for backlight
162 //(breathing provides insufficient power to integrated LED IC)
163 #if defined(KEYBOARD_kbdfans_kbd6x) && defined(BACKLIGHT_BREATHING)
164   breathing_disable();
165 #endif
166   matrix_init_keymap();
167 }
168
169 //at end of firmware startup process, change powerup default layer and underglow colour for kbd6x
170 void keyboard_post_init_user(void) {
171   #if defined(KEYBOARD_kbdfans_kbd6x)
172     set_single_persistent_default_layer(_QW);
173     rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5);
174     rgblight_sethsv_noeeprom(0,0,128);
175   #endif
176 }