aboutsummaryrefslogtreecommitdiff
path: root/keyboard/atomic/keymaps/pvc/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/atomic/keymaps/pvc/keymap.c')
-rw-r--r--keyboard/atomic/keymaps/pvc/keymap.c216
1 files changed, 123 insertions, 93 deletions
diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c
index 9a2c57cb1..aaef6b041 100644
--- a/keyboard/atomic/keymaps/pvc/keymap.c
+++ b/keyboard/atomic/keymaps/pvc/keymap.c
@@ -17,6 +17,13 @@
17#define M_LW 1 17#define M_LW 1
18#define M_RS 2 18#define M_RS 2
19#define M_FN 3 19#define M_FN 3
20#define M_T1 4
21#define M_T2 5
22#define M_T3 6
23#define M_T4 7
24#define M_TU 8
25#define M_TD 9
26#define M_DF 10
20 27
21 28
22#define _______ KC_TRNS 29#define _______ KC_TRNS
@@ -63,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, 70 { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ },
64 { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR }, 71 { KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR },
65 { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, 72 { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U },
66 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, 73 { _______, M(M_T1), M(M_T2), M(M_T3), M(M_T4), M(M_TU), M(M_TD), M(M_DF), _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D },
67 { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, 74 { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R },
68 }, 75 },
69 [_AD] = { /* ADJUST */ 76 [_AD] = { /* ADJUST */
@@ -75,76 +82,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
75 }, 82 },
76}; 83};
77 84
78void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)
79{
80 if (order)
81 {
82 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
83 {
84 layer_on(layer3);
85 }
86 else
87 {
88 layer_off(layer3);
89 layer_off(layer4);
90 }
91 }
92 else
93 {
94 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
95 {
96 layer_on(layer4);
97 }
98 else
99 {
100 layer_off(layer3);
101 layer_off(layer4);
102 }
103 }
104}
105
106
107const uint16_t PROGMEM fn_actions[] = {
108};
109
110
111const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
112{
113
114 // MACRODOWN only works in this function
115 switch(id) {
116 case M_LW:
117 if (record->event.pressed) {
118 #ifdef AUDIO_ENABLE
119 println("PlayNotes LW");
120 PLAY_NOTE_ARRAY(tone_lw, false, STACCATO);
121 #endif
122 layer_on(_LW);
123 update_tri_layer(_LW, _RS, _FN);
124 } else {
125 layer_off(_LW);
126 update_tri_layer(_LW, _RS, _FN);
127 }
128 break;
129 case M_RS:
130 if (record->event.pressed) {
131 #ifdef AUDIO_ENABLE
132 println("PlayNotes RS");
133 PLAY_NOTE_ARRAY(tone_rs, false, LEGATO);
134 #endif
135 layer_on(_RS);
136 update_tri_layer(_LW, _RS, _FN);
137 } else {
138 layer_off(_RS);
139 update_tri_layer(_LW, _RS, _FN);
140 }
141 break;
142 default:
143 break;
144 }
145 return MACRO_NONE;
146};
147
148 85
149 86
150#ifdef AUDIO_ENABLE 87#ifdef AUDIO_ENABLE
@@ -152,20 +89,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
152float start_up[][2] = SONG(ODE_TO_JOY); 89float start_up[][2] = SONG(ODE_TO_JOY);
153 90
154float tone_lw[][2] = { 91float tone_lw[][2] = {
155 /*
156 Q__NOTE(_C1 ) ,
157 Q__NOTE(_CS1 ) ,
158 Q__NOTE(_D1 ) ,
159 Q__NOTE(_DS1 ) ,
160 Q__NOTE(_E1 ) ,
161 Q__NOTE(_F1 ) ,
162 Q__NOTE(_FS1 ) ,
163 Q__NOTE(_G1 ) ,
164 Q__NOTE(_GS1 ) ,
165 Q__NOTE(_A1 ) ,
166 Q__NOTE(_AS1 ) ,
167 Q__NOTE(_B1 ) ,
168 */
169 92
170 Q__NOTE(_C4 ) , 93 Q__NOTE(_C4 ) ,
171 Q__NOTE(_CS4 ) , 94 Q__NOTE(_CS4 ) ,
@@ -178,6 +101,7 @@ float tone_lw[][2] = {
178 Q__NOTE(_GS4 ) , 101 Q__NOTE(_GS4 ) ,
179 Q__NOTE(_A4 ) , 102 Q__NOTE(_A4 ) ,
180 Q__NOTE(_AS4 ) , 103 Q__NOTE(_AS4 ) ,
104
181 Q__NOTE(_B1 ) , 105 Q__NOTE(_B1 ) ,
182 106
183 Q__NOTE(_C2 ) , 107 Q__NOTE(_C2 ) ,
@@ -266,14 +190,7 @@ float tone_lw[][2] = {
266 Q__NOTE(_B8 ) , 190 Q__NOTE(_B8 ) ,
267}; 191};
268 192
269float tone_rs[][2] = { 193float tone_rs[][2] = SONG(ROCK_A_BYE_BABY);
270 Q__NOTE(_A4 ) ,
271 Q__NOTE(_A4 ) ,
272 Q__NOTE(_A4 ) ,
273 Q__NOTE(_A4 ) ,
274 Q__NOTE(_AS8 ) ,
275 Q__NOTE(_B8 ) ,
276};
277 194
278void matrix_init_user(void) { 195void matrix_init_user(void) {
279 init_notes(); 196 init_notes();
@@ -282,3 +199,116 @@ void matrix_init_user(void) {
282} 199}
283 200
284#endif 201#endif
202
203
204void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order)
205{
206 if (order)
207 {
208 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
209 {
210 layer_on(layer3);
211 }
212 else
213 {
214 layer_off(layer3);
215 layer_off(layer4);
216 }
217 }
218 else
219 {
220 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2))
221 {
222 layer_on(layer4);
223 }
224 else
225 {
226 layer_off(layer3);
227 layer_off(layer4);
228 }
229 }
230}
231
232
233const uint16_t PROGMEM fn_actions[] = {
234};
235
236
237const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
238{
239
240 // MACRODOWN only works in this function
241 switch(id)
242 {
243 case M_LW:
244 if (record->event.pressed) {
245 #ifdef AUDIO_ENABLE
246 PLAY_NOTE_ARRAY(tone_lw, false, STACCATO);
247 #endif
248 layer_on(_LW);
249 update_tri_layer(_LW, _RS, _AD);
250 } else {
251 layer_off(_LW);
252 update_tri_layer(_LW, _RS, _AD);
253 }
254 break;
255 case M_RS:
256 if (record->event.pressed) {
257 #ifdef AUDIO_ENABLE
258 PLAY_NOTE_ARRAY(tone_rs, false, LEGATO);
259 #endif
260 layer_on(_RS);
261 update_tri_layer(_LW, _RS, _AD);
262 } else {
263 layer_off(_RS);
264 update_tri_layer(_LW, _RS, _AD);
265 }
266 break;
267
268 case M_FN:
269 if (record->event.pressed) {
270 layer_on(_FN);
271 } else {
272 layer_off(_FN);
273 }
274 break;
275
276 case M_T1:
277 if (record->event.pressed) set_timbre(TIMBRE_12);
278 break;
279
280 case M_T2:
281 if (record->event.pressed) set_timbre(TIMBRE_25);
282 break;
283
284 case M_T3:
285 if (record->event.pressed) set_timbre(TIMBRE_50);
286 break;
287
288 case M_T4:
289 if (record->event.pressed) set_timbre(TIMBRE_75);
290 break;
291
292
293 case M_TU:
294 if (record->event.pressed) increase_tempo(10);
295 break;
296
297 case M_TD:
298 if (record->event.pressed) decrease_tempo(10);
299 break;
300
301 case M_DF:
302 if (record->event.pressed)
303 {
304 set_timbre(TIMBRE_DEFAULT);
305 set_tempo(TEMPO_DEFAULT);
306 }
307 break;
308
309 default:
310 break;
311
312 }
313 return MACRO_NONE;
314}; \ No newline at end of file