diff options
Diffstat (limited to 'keyboard/atomic/keymaps/pvc/keymap.c')
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/keymap.c | 216 |
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 | ||
| 78 | void 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 | |||
| 107 | const uint16_t PROGMEM fn_actions[] = { | ||
| 108 | }; | ||
| 109 | |||
| 110 | |||
| 111 | const 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) | |||
| 152 | float start_up[][2] = SONG(ODE_TO_JOY); | 89 | float start_up[][2] = SONG(ODE_TO_JOY); |
| 153 | 90 | ||
| 154 | float tone_lw[][2] = { | 91 | float 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 | ||
| 269 | float tone_rs[][2] = { | 193 | float 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 | ||
| 278 | void matrix_init_user(void) { | 195 | void 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 | |||
| 204 | void 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 | |||
| 233 | const uint16_t PROGMEM fn_actions[] = { | ||
| 234 | }; | ||
| 235 | |||
| 236 | |||
| 237 | const 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 | ||
