diff options
| author | Jack Humbert <jack.humb@gmail.com> | 2016-05-09 13:17:15 -0400 |
|---|---|---|
| committer | Jack Humbert <jack.humb@gmail.com> | 2016-05-09 13:17:15 -0400 |
| commit | 3f02637f4dd765803671c2611191beb096d60b36 (patch) | |
| tree | c11714b62494097226253d3951de2472e7954129 | |
| parent | 684793360cdb08ac1e50a6d27e1796fadd527adb (diff) | |
| download | qmk_firmware-3f02637f4dd765803671c2611191beb096d60b36.tar.gz qmk_firmware-3f02637f4dd765803671c2611191beb096d60b36.zip | |
Backlight Breathing for Planck and Atomic
* Updated personal layouts
* tweaked personal
* Nightly - Audio Cleanup
Refactored the LUTs. Abstracted some of the registers out of audio to
use more functional names. Split audio into audio and audio_pwm. WIP
* nightly - collapsed code
* Added check for note playing to LEDs
* Usability tweaks
* TWEAE
* nightly
added extra kcs to keymap common
* turned on Plank audio
* Added backlight breathing to atomic
* reverted accidental merge
* adds backlight pulse to planck
| -rw-r--r-- | keyboard/atomic/atomic.c | 260 | ||||
| -rw-r--r-- | keyboard/atomic/atomic.h | 16 | ||||
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/config.h | 3 | ||||
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/keymap.c | 357 | ||||
| -rw-r--r-- | keyboard/atomic/keymaps/pvc/makefile.mk | 2 | ||||
| -rw-r--r-- | keyboard/planck/keymaps/experimental/README.md | 2 | ||||
| -rw-r--r-- | keyboard/planck/keymaps/experimental/keymap.c | 383 | ||||
| -rw-r--r-- | keyboard/planck/keymaps/experimental/makefile.mk | 2 | ||||
| -rw-r--r-- | keyboard/planck/keymaps/pvc/keymap.c | 13 | ||||
| -rw-r--r-- | keyboard/planck/keymaps/pvc/makefile.mk | 6 | ||||
| -rw-r--r-- | keyboard/planck/planck.c | 221 | ||||
| -rw-r--r-- | keyboard/planck/planck.h | 18 | ||||
| -rw-r--r-- | quantum/audio/audio.c | 4 | ||||
| -rw-r--r-- | quantum/audio/audio.h | 11 | ||||
| -rw-r--r-- | quantum/keymap_common.h | 18 | ||||
| -rw-r--r-- | quantum/keymap_midi.h | 10 | ||||
| -rw-r--r-- | quantum/quantum.mk | 6 | ||||
| -rw-r--r-- | tmk_core/common/backlight.c | 5 | ||||
| -rw-r--r-- | tmk_core/common/backlight.h | 1 | ||||
| -rw-r--r-- | tmk_core/common/command.c | 4 | ||||
| -rw-r--r-- | tmk_core/common/nodebug.h | 12 |
21 files changed, 1153 insertions, 201 deletions
diff --git a/keyboard/atomic/atomic.c b/keyboard/atomic/atomic.c index 399649716..b4b261457 100644 --- a/keyboard/atomic/atomic.c +++ b/keyboard/atomic/atomic.c | |||
| @@ -2,27 +2,27 @@ | |||
| 2 | 2 | ||
| 3 | __attribute__ ((weak)) | 3 | __attribute__ ((weak)) |
| 4 | void matrix_init_user(void) { | 4 | void matrix_init_user(void) { |
| 5 | // leave this function blank - it can be defined in a keymap file | 5 | // leave this function blank - it can be defined in a keymap file |
| 6 | }; | 6 | }; |
| 7 | 7 | ||
| 8 | __attribute__ ((weak)) | 8 | __attribute__ ((weak)) |
| 9 | void matrix_scan_user(void) { | 9 | void matrix_scan_user(void) { |
| 10 | // leave this function blank - it can be defined in a keymap file | 10 | // leave this function blank - it can be defined in a keymap file |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | __attribute__ ((weak)) | 13 | __attribute__ ((weak)) |
| 14 | void process_action_user(keyrecord_t *record) { | 14 | void process_action_user(keyrecord_t *record) { |
| 15 | // leave this function blank - it can be defined in a keymap file | 15 | // leave this function blank - it can be defined in a keymap file |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | __attribute__ ((weak)) | 18 | __attribute__ ((weak)) |
| 19 | void led_set_user(uint8_t usb_led) { | 19 | void led_set_user(uint8_t usb_led) { |
| 20 | // leave this function blank - it can be defined in a keymap file | 20 | // leave this function blank - it can be defined in a keymap file |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | void matrix_init_kb(void) { | 23 | void matrix_init_kb(void) { |
| 24 | // put your keyboard start-up code here | 24 | // put your keyboard start-up code here |
| 25 | // runs once when the firmware starts up | 25 | // runs once when the firmware starts up |
| 26 | 26 | ||
| 27 | MCUCR |= (1<<JTD); | 27 | MCUCR |= (1<<JTD); |
| 28 | MCUCR |= (1<<JTD); | 28 | MCUCR |= (1<<JTD); |
| @@ -35,31 +35,39 @@ void matrix_init_kb(void) { | |||
| 35 | DDRE |= (1<<6); | 35 | DDRE |= (1<<6); |
| 36 | PORTE |= (1<<6); | 36 | PORTE |= (1<<6); |
| 37 | 37 | ||
| 38 | matrix_init_user(); | 38 | matrix_init_user(); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | void matrix_scan_kb(void) { | 41 | void matrix_scan_kb(void) { |
| 42 | // put your looping keyboard code here | 42 | // put your looping keyboard code here |
| 43 | // runs every cycle (a lot) | 43 | // runs every cycle (a lot) |
| 44 | 44 | ||
| 45 | matrix_scan_user(); | 45 | matrix_scan_user(); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | void process_action_kb(keyrecord_t *record) { | 48 | void process_action_kb(keyrecord_t *record) { |
| 49 | // put your per-action keyboard code here | 49 | // put your per-action keyboard code here |
| 50 | // runs for every action, just before processing by the firmware | 50 | // runs for every action, just before processing by the firmware |
| 51 | 51 | ||
| 52 | process_action_user(record); | 52 | process_action_user(record); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | void led_set_kb(uint8_t usb_led) { | 55 | void led_set_kb(uint8_t usb_led) { |
| 56 | // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here | 56 | // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here |
| 57 | 57 | ||
| 58 | led_set_user(usb_led); | 58 | led_set_user(usb_led); |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | #ifdef BACKLIGHT_ENABLE | 61 | #ifdef BACKLIGHT_ENABLE |
| 62 | #define CHANNEL OCR1C | 62 | #define CHANNEL OCR1C |
| 63 | #define BREATHING_NO_HALT 0 | ||
| 64 | #define BREATHING_HALT_OFF 1 | ||
| 65 | #define BREATHING_HALT_ON 2 | ||
| 66 | |||
| 67 | static uint8_t breath_intensity; | ||
| 68 | static uint8_t breath_speed; | ||
| 69 | static uint16_t breathing_index; | ||
| 70 | static uint8_t breathing_halt; | ||
| 63 | 71 | ||
| 64 | void backlight_init_ports() | 72 | void backlight_init_ports() |
| 65 | { | 73 | { |
| @@ -67,54 +75,250 @@ void backlight_init_ports() | |||
| 67 | // Setup PB7 as output and output low. | 75 | // Setup PB7 as output and output low. |
| 68 | DDRB |= (1<<7); | 76 | DDRB |= (1<<7); |
| 69 | PORTB &= ~(1<<7); | 77 | PORTB &= ~(1<<7); |
| 70 | 78 | ||
| 71 | // Use full 16-bit resolution. | 79 | // Use full 16-bit resolution. |
| 72 | ICR1 = 0xFFFF; | 80 | ICR1 = 0xFFFF; |
| 73 | 81 | ||
| 74 | // I could write a wall of text here to explain... but TL;DW | 82 | // I could write a wall of text here to explain... but TL;DW |
| 75 | // Go read the ATmega32u4 datasheet. | 83 | // Go read the ATmega32u4 datasheet. |
| 76 | // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on | 84 | // And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on |
| 77 | 85 | ||
| 78 | // Pin PB7 = OCR1C (Timer 1, Channel C) | 86 | // Pin PB7 = OCR1C (Timer 1, Channel C) |
| 79 | // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 | 87 | // Compare Output Mode = Clear on compare match, Channel C = COM1C1=1 COM1C0=0 |
| 80 | // (i.e. start high, go low when counter matches.) | 88 | // (i.e. start high, go low when counter matches.) |
| 81 | // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 | 89 | // WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0 |
| 82 | // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 | 90 | // Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1 |
| 83 | 91 | ||
| 84 | TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; | 92 | TCCR1A = _BV(COM1C1) | _BV(WGM11); // = 0b00001010; |
| 85 | TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; | 93 | TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; |
| 86 | 94 | ||
| 87 | backlight_init(); | 95 | backlight_init(); |
| 96 | breathing_defaults(); | ||
| 88 | } | 97 | } |
| 89 | 98 | ||
| 90 | void backlight_set(uint8_t level) | 99 | void backlight_set(uint8_t level) |
| 91 | { | 100 | { |
| 101 | // Prevent backlight blink on lowest level | ||
| 102 | PORTB &= ~(_BV(PORTB7)); | ||
| 103 | |||
| 92 | if ( level == 0 ) | 104 | if ( level == 0 ) |
| 93 | { | 105 | { |
| 94 | // Turn off PWM control on PB7, revert to output low. | 106 | // Turn off PWM control on PB7, revert to output low. |
| 95 | TCCR1A &= ~(_BV(COM1C1)); | 107 | TCCR1A &= ~(_BV(COM1C1)); |
| 108 | |||
| 109 | // Set the brightness to 0 | ||
| 96 | CHANNEL = 0x0; | 110 | CHANNEL = 0x0; |
| 97 | // Prevent backlight blink on lowest level | ||
| 98 | PORTB &= ~(_BV(PORTB7)); | ||
| 99 | } | 111 | } |
| 100 | else if ( level == BACKLIGHT_LEVELS ) | 112 | else if ( level >= BACKLIGHT_LEVELS ) |
| 101 | { | 113 | { |
| 102 | // Prevent backlight blink on lowest level | ||
| 103 | PORTB &= ~(_BV(PORTB7)); | ||
| 104 | // Turn on PWM control of PB7 | 114 | // Turn on PWM control of PB7 |
| 105 | TCCR1A |= _BV(COM1C1); | 115 | TCCR1A |= _BV(COM1C1); |
| 106 | // Set the brightness | 116 | |
| 117 | // Set the brightness to max | ||
| 107 | CHANNEL = 0xFFFF; | 118 | CHANNEL = 0xFFFF; |
| 108 | } | 119 | } |
| 109 | else | 120 | else |
| 110 | { | 121 | { |
| 111 | // Prevent backlight blink on lowest level | ||
| 112 | PORTB &= ~(_BV(PORTB7)); | ||
| 113 | // Turn on PWM control of PB7 | 122 | // Turn on PWM control of PB7 |
| 114 | TCCR1A |= _BV(COM1C1); | 123 | TCCR1A |= _BV(COM1C1); |
| 124 | |||
| 115 | // Set the brightness | 125 | // Set the brightness |
| 116 | CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); | 126 | CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); |
| 117 | } | 127 | } |
| 128 | breathing_intensity_default(); | ||
| 129 | } | ||
| 130 | |||
| 131 | |||
| 132 | void breathing_enable(void) | ||
| 133 | { | ||
| 134 | if (get_backlight_level() == 0) | ||
| 135 | { | ||
| 136 | breathing_index = 0; | ||
| 137 | } | ||
| 138 | else | ||
| 139 | { | ||
| 140 | // Set breathing_index to be at the midpoint (brightest point) | ||
| 141 | breathing_index = 0x20 << breath_speed; | ||
| 142 | } | ||
| 143 | |||
| 144 | breathing_halt = BREATHING_NO_HALT; | ||
| 145 | |||
| 146 | // Enable breathing interrupt | ||
| 147 | TIMSK1 |= _BV(OCIE1A); | ||
| 148 | } | ||
| 149 | |||
| 150 | void breathing_pulse(void) | ||
| 151 | { | ||
| 152 | if (get_backlight_level() == 0) | ||
| 153 | { | ||
| 154 | breathing_index = 0; | ||
| 155 | } | ||
| 156 | else | ||
| 157 | { | ||
| 158 | // Set breathing_index to be at the midpoint + 1 (brightest point) | ||
| 159 | breathing_index = 0x21 << breath_speed; | ||
| 160 | } | ||
| 161 | |||
| 162 | breathing_halt = BREATHING_HALT_ON; | ||
| 163 | |||
| 164 | // Enable breathing interrupt | ||
| 165 | TIMSK1 |= _BV(OCIE1A); | ||
| 166 | } | ||
| 167 | |||
| 168 | void breathing_disable(void) | ||
| 169 | { | ||
| 170 | // Disable breathing interrupt | ||
| 171 | TIMSK1 &= ~_BV(OCIE1A); | ||
| 172 | backlight_set(get_backlight_level()); | ||
| 173 | } | ||
| 174 | |||
| 175 | void breathing_self_disable(void) | ||
| 176 | { | ||
| 177 | if (get_backlight_level() == 0) | ||
| 178 | { | ||
| 179 | breathing_halt = BREATHING_HALT_OFF; | ||
| 180 | } | ||
| 181 | else | ||
| 182 | { | ||
| 183 | breathing_halt = BREATHING_HALT_ON; | ||
| 184 | } | ||
| 185 | |||
| 186 | //backlight_set(get_backlight_level()); | ||
| 187 | } | ||
| 188 | |||
| 189 | void breathing_toggle(void) | ||
| 190 | { | ||
| 191 | if (!is_breathing()) | ||
| 192 | { | ||
| 193 | if (get_backlight_level() == 0) | ||
| 194 | { | ||
| 195 | breathing_index = 0; | ||
| 196 | } | ||
| 197 | else | ||
| 198 | { | ||
| 199 | // Set breathing_index to be at the midpoint + 1 (brightest point) | ||
| 200 | breathing_index = 0x21 << breath_speed; | ||
| 201 | } | ||
| 202 | |||
| 203 | breathing_halt = BREATHING_NO_HALT; | ||
| 204 | } | ||
| 205 | |||
| 206 | // Toggle breathing interrupt | ||
| 207 | TIMSK1 ^= _BV(OCIE1A); | ||
| 208 | |||
| 209 | // Restore backlight level | ||
| 210 | if (!is_breathing()) | ||
| 211 | { | ||
| 212 | backlight_set(get_backlight_level()); | ||
| 213 | } | ||
| 214 | } | ||
| 215 | |||
| 216 | bool is_breathing(void) | ||
| 217 | { | ||
| 218 | return (TIMSK1 && _BV(OCIE1A)); | ||
| 219 | } | ||
| 220 | |||
| 221 | void breathing_intensity_default(void) | ||
| 222 | { | ||
| 223 | //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); | ||
| 224 | breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); | ||
| 225 | } | ||
| 226 | |||
| 227 | void breathing_intensity_set(uint8_t value) | ||
| 228 | { | ||
| 229 | breath_intensity = value; | ||
| 230 | } | ||
| 231 | |||
| 232 | void breathing_speed_default(void) | ||
| 233 | { | ||
| 234 | breath_speed = 4; | ||
| 235 | } | ||
| 236 | |||
| 237 | void breathing_speed_set(uint8_t value) | ||
| 238 | { | ||
| 239 | bool is_breathing_now = is_breathing(); | ||
| 240 | uint8_t old_breath_speed = breath_speed; | ||
| 241 | |||
| 242 | if (is_breathing_now) | ||
| 243 | { | ||
| 244 | // Disable breathing interrupt | ||
| 245 | TIMSK1 &= ~_BV(OCIE1A); | ||
| 246 | } | ||
| 247 | |||
| 248 | breath_speed = value; | ||
| 249 | |||
| 250 | if (is_breathing_now) | ||
| 251 | { | ||
| 252 | // Adjust index to account for new speed | ||
| 253 | breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; | ||
| 254 | |||
| 255 | // Enable breathing interrupt | ||
| 256 | TIMSK1 |= _BV(OCIE1A); | ||
| 257 | } | ||
| 258 | |||
| 259 | } | ||
| 260 | |||
| 261 | void breathing_speed_inc(uint8_t value) | ||
| 262 | { | ||
| 263 | if ((uint16_t)(breath_speed - value) > 10 ) | ||
| 264 | { | ||
| 265 | breathing_speed_set(0); | ||
| 266 | } | ||
| 267 | else | ||
| 268 | { | ||
| 269 | breathing_speed_set(breath_speed - value); | ||
| 270 | } | ||
| 271 | } | ||
| 272 | |||
| 273 | void breathing_speed_dec(uint8_t value) | ||
| 274 | { | ||
| 275 | if ((uint16_t)(breath_speed + value) > 10 ) | ||
| 276 | { | ||
| 277 | breathing_speed_set(10); | ||
| 278 | } | ||
| 279 | else | ||
| 280 | { | ||
| 281 | breathing_speed_set(breath_speed + value); | ||
| 282 | } | ||
| 283 | } | ||
| 284 | |||
| 285 | void breathing_defaults(void) | ||
| 286 | { | ||
| 287 | breathing_intensity_default(); | ||
| 288 | breathing_speed_default(); | ||
| 289 | breathing_halt = BREATHING_NO_HALT; | ||
| 290 | } | ||
| 291 | |||
| 292 | /* Breathing Sleep LED brighness(PWM On period) table | ||
| 293 | * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle | ||
| 294 | * | ||
| 295 | * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 | ||
| 296 | * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } | ||
| 297 | */ | ||
| 298 | static const uint8_t breathing_table[64] PROGMEM = { | ||
| 299 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, | ||
| 300 | 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, | ||
| 301 | 255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, | ||
| 302 | 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 303 | }; | ||
| 304 | |||
| 305 | ISR(TIMER1_COMPA_vect) | ||
| 306 | { | ||
| 307 | // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; | ||
| 308 | |||
| 309 | |||
| 310 | uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; | ||
| 311 | |||
| 312 | if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) | ||
| 313 | { | ||
| 314 | // Disable breathing interrupt | ||
| 315 | TIMSK1 &= ~_BV(OCIE1A); | ||
| 316 | } | ||
| 317 | |||
| 318 | CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; | ||
| 319 | |||
| 118 | } | 320 | } |
| 119 | 321 | ||
| 322 | |||
| 323 | |||
| 120 | #endif \ No newline at end of file | 324 | #endif \ No newline at end of file |
diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index 0c7aeb1cc..845a9043e 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h | |||
| @@ -33,4 +33,20 @@ void process_action_user(keyrecord_t *record); | |||
| 33 | void led_set_user(uint8_t usb_led); | 33 | void led_set_user(uint8_t usb_led); |
| 34 | void backlight_init_ports(void); | 34 | void backlight_init_ports(void); |
| 35 | 35 | ||
| 36 | void breathing_enable(void); | ||
| 37 | void breathing_pulse(void); | ||
| 38 | void breathing_disable(void); | ||
| 39 | void breathing_self_disable(void); | ||
| 40 | void breathing_toggle(void); | ||
| 41 | bool is_breathing(void); | ||
| 42 | |||
| 43 | |||
| 44 | void breathing_defaults(void); | ||
| 45 | void breathing_intensity_default(void); | ||
| 46 | void breathing_speed_default(void); | ||
| 47 | void breathing_speed_set(uint8_t value); | ||
| 48 | void breathing_speed_inc(uint8_t value); | ||
| 49 | void breathing_speed_dec(uint8_t value); | ||
| 50 | |||
| 51 | |||
| 36 | #endif \ No newline at end of file | 52 | #endif \ No newline at end of file |
diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h index 034bc5dc5..5e956286b 100644 --- a/keyboard/atomic/keymaps/pvc/config.h +++ b/keyboard/atomic/keymaps/pvc/config.h | |||
| @@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 22 | 22 | ||
| 23 | /* USB Device descriptor parameter */ | 23 | /* USB Device descriptor parameter */ |
| 24 | #define VENDOR_ID 0xFEED | 24 | #define VENDOR_ID 0xFEED |
| 25 | #define PRODUCT_ID 0x6060 | 25 | #define PRODUCT_ID 0x0419 |
| 26 | #define DEVICE_VER 0x0001 | 26 | #define DEVICE_VER 0x0001 |
| 27 | #define MANUFACTURER Ortholinear Keyboards | 27 | #define MANUFACTURER Ortholinear Keyboards |
| 28 | #define PRODUCT The Atomic Keyboard | 28 | #define PRODUCT The Atomic Keyboard |
| @@ -162,5 +162,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 162 | //#define VIBRATO_ENABLE | 162 | //#define VIBRATO_ENABLE |
| 163 | //#define VIBRATO_STRENGTH_ENABLE | 163 | //#define VIBRATO_STRENGTH_ENABLE |
| 164 | 164 | ||
| 165 | |||
| 166 | #endif | 165 | #endif |
diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 3d604a868..ff7384268 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c | |||
| @@ -8,41 +8,44 @@ | |||
| 8 | #include "song_list.h" | 8 | #include "song_list.h" |
| 9 | #endif | 9 | #endif |
| 10 | 10 | ||
| 11 | #define LAYER_QWERTY 0 | 11 | #define LAYER_QWERTY 0 |
| 12 | #define LAYER_COLEMAK 1 | 12 | #define LAYER_COLEMAK 1 |
| 13 | #define LAYER_DVORAK 2 | 13 | #define LAYER_DVORAK 2 |
| 14 | #define LAYER_RAISE 3 | 14 | #define LAYER_UPPER 3 |
| 15 | #define LAYER_LOWER 4 | 15 | #define LAYER_LOWER 4 |
| 16 | #define LAYER_FUNCTION 5 | 16 | #define LAYER_FUNCTION 5 |
| 17 | #define LAYER_MOUSE 6 | 17 | #define LAYER_MOUSE 6 |
| 18 | #define LAYER_MUSIC 7 | 18 | #define LAYER_MUSIC 7 |
| 19 | #define LAYER_ADJUST 8 | 19 | #define LAYER_ADJUST 8 |
| 20 | 20 | ||
| 21 | #define MACRO_QWERTY 0 | 21 | #define MACRO_QWERTY 0 |
| 22 | #define MACRO_COLEMAK 1 | 22 | #define MACRO_COLEMAK 1 |
| 23 | #define MACRO_DVORAK 2 | 23 | #define MACRO_DVORAK 2 |
| 24 | #define MACRO_RAISE 3 | 24 | #define MACRO_UPPER 3 |
| 25 | #define MACRO_LOWER 4 | 25 | #define MACRO_LOWER 4 |
| 26 | #define MACRO_FUNCTION 5 | 26 | #define MACRO_FUNCTION 5 |
| 27 | #define MACRO_MOUSE 6 | 27 | #define MACRO_MOUSE 6 |
| 28 | #define MACRO_TIMBRE_1 7 | 28 | #define MACRO_TIMBRE_1 7 |
| 29 | #define MACRO_TIMBRE_2 8 | 29 | #define MACRO_TIMBRE_2 8 |
| 30 | #define MACRO_TIMBRE_3 9 | 30 | #define MACRO_TIMBRE_3 9 |
| 31 | #define MACRO_TIMBRE_4 10 | 31 | #define MACRO_TIMBRE_4 10 |
| 32 | #define MACRO_TEMPO_U 11 | 32 | #define MACRO_TEMPO_U 11 |
| 33 | #define MACRO_TEMPO_D 12 | 33 | #define MACRO_TEMPO_D 12 |
| 34 | #define MACRO_TONE_DEFAULT 13 | 34 | #define MACRO_TONE_DEFAULT 13 |
| 35 | #define MACRO_MUSIC_ON 14 | 35 | #define MACRO_MUSIC_TOGGLE 14 |
| 36 | #define MACRO_MUSIC_OFF 15 | 36 | #define MACRO_AUDIO_TOGGLE 16 |
| 37 | #define MACRO_AUDIO_ON 16 | 37 | #define MACRO_INC_VOICE 18 |
| 38 | #define MACRO_AUDIO_OFF 17 | 38 | #define MACRO_DEC_VOICE 19 |
| 39 | #define MACRO_INC_VOICE 18 | 39 | #define MACRO_BACKLIGHT 20 |
| 40 | #define MACRO_DEC_VOICE 19 | 40 | #define MACRO_BREATH_TOGGLE 21 |
| 41 | #define MACRO_BREATH_SPEED_INC 23 | ||
| 42 | #define MACRO_BREATH_SPEED_DEC 24 | ||
| 43 | #define MACRO_BREATH_DEFAULT 25 | ||
| 41 | 44 | ||
| 42 | #define M_QWRTY M(MACRO_QWERTY) | 45 | #define M_QWRTY M(MACRO_QWERTY) |
| 43 | #define M_COLMK M(MACRO_COLEMAK) | 46 | #define M_COLMK M(MACRO_COLEMAK) |
| 44 | #define M_DVORK M(MACRO_DVORAK) | 47 | #define M_DVORK M(MACRO_DVORAK) |
| 45 | #define M_RAISE M(MACRO_RAISE) | 48 | #define M_UPPER M(MACRO_UPPER) |
| 46 | #define M_LOWER M(MACRO_LOWER) | 49 | #define M_LOWER M(MACRO_LOWER) |
| 47 | #define M_FUNCT M(MACRO_FUNCTION) | 50 | #define M_FUNCT M(MACRO_FUNCTION) |
| 48 | #define M_MOUSE M(MACRO_MOUSE) | 51 | #define M_MOUSE M(MACRO_MOUSE) |
| @@ -53,12 +56,15 @@ | |||
| 53 | #define TMPO_UP M(MACRO_TEMPO_U) | 56 | #define TMPO_UP M(MACRO_TEMPO_U) |
| 54 | #define TMPO_DN M(MACRO_TEMPO_D) | 57 | #define TMPO_DN M(MACRO_TEMPO_D) |
| 55 | #define TMPO_DF M(MACRO_TONE_DEFAULT) | 58 | #define TMPO_DF M(MACRO_TONE_DEFAULT) |
| 59 | #define M_BACKL M(MACRO_BACKLIGHT) | ||
| 60 | #define M_BRTOG M(MACRO_BREATH_TOGGLE) | ||
| 61 | #define M_BSPDU M(MACRO_BREATH_SPEED_INC) | ||
| 62 | #define M_BSPDD M(MACRO_BREATH_SPEED_DEC) | ||
| 63 | #define M_BDFLT M(MACRO_BREATH_DEFAULT) | ||
| 56 | 64 | ||
| 57 | 65 | ||
| 58 | #define MUS_ON M(MACRO_MUSIC_ON) | 66 | #define MUS_TOG M(MACRO_MUSIC_TOGGLE) |
| 59 | #define MUS_OFF M(MACRO_MUSIC_OFF) | 67 | #define AUD_TOG M(MACRO_AUDIO_TOGGLE) |
| 60 | #define AUD_OFF M(MACRO_AUDIO_OFF) | ||
| 61 | #define AUD_ON M(MACRO_AUDIO_ON) | ||
| 62 | #define VC_UP M(MACRO_INC_VOICE) | 68 | #define VC_UP M(MACRO_INC_VOICE) |
| 63 | #define VC_DOWN M(MACRO_DEC_VOICE) | 69 | #define VC_DOWN M(MACRO_DEC_VOICE) |
| 64 | 70 | ||
| @@ -74,6 +80,7 @@ | |||
| 74 | #define SC_ACLS LALT(KC_F4) | 80 | #define SC_ACLS LALT(KC_F4) |
| 75 | #define SC_CCLS LCTL(KC_F4) | 81 | #define SC_CCLS LCTL(KC_F4) |
| 76 | 82 | ||
| 83 | #define OS_SHFT KC_FN0 | ||
| 77 | 84 | ||
| 78 | #define _______ KC_TRNS | 85 | #define _______ KC_TRNS |
| 79 | #define XXXXXXX KC_NO | 86 | #define XXXXXXX KC_NO |
| @@ -92,16 +99,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 92 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| | 99 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| |
| 93 | * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | | 100 | * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | |
| 94 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| | 101 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| |
| 95 | * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | | 102 | * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | |
| 96 | * '--------------------------------------------------------------------------------------------------------------------------------------' | 103 | * '--------------------------------------------------------------------------------------------------------------------------------------' |
| 97 | */ | 104 | */ |
| 98 | 105 | ||
| 99 | [LAYER_QWERTY] = { /* QWERTY */ | 106 | [LAYER_QWERTY] = { // QWERTY |
| 100 | { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, | 107 | { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, |
| 101 | { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, | 108 | { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, |
| 102 | { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, | 109 | { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, |
| 103 | { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, | 110 | { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, |
| 104 | { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, | 111 | { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, |
| 105 | }, | 112 | }, |
| 106 | 113 | ||
| 107 | /* COLEMAK | 114 | /* COLEMAK |
| @@ -114,17 +121,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 114 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| | 121 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| |
| 115 | * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | | 122 | * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | |
| 116 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| | 123 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| |
| 117 | * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | | 124 | * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | |
| 118 | * '--------------------------------------------------------------------------------------------------------------------------------------' | 125 | * '--------------------------------------------------------------------------------------------------------------------------------------' |
| 119 | */ | 126 | */ |
| 120 | 127 | ||
| 121 | [LAYER_COLEMAK] = { /* COLEMAK */ | 128 | [LAYER_COLEMAK] = { // COLEMAK |
| 122 | { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, | 129 | { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC }, |
| 123 | { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, | 130 | { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, |
| 124 | { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, | 131 | { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, |
| 125 | { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, | 132 | { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, |
| 126 | { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, | 133 | { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, |
| 127 | }, | 134 | }, |
| 128 | 135 | ||
| 129 | /* DVORAK | 136 | /* DVORAK |
| 130 | * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. | 137 | * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. |
| @@ -136,35 +143,63 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 136 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| | 143 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| |
| 137 | * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | | 144 | * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | |
| 138 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| | 145 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| |
| 139 | * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT | | 146 | * | LCTRL | LWIN | FN | LALT | UPPER | XXXXXX . SPACE | LOWER | SHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | |
| 140 | * '--------------------------------------------------------------------------------------------------------------------------------------' | 147 | * '--------------------------------------------------------------------------------------------------------------------------------------' |
| 141 | */ | 148 | */ |
| 142 | 149 | ||
| 143 | [LAYER_DVORAK] = { /* DVORAK */ | 150 | [LAYER_DVORAK] = { // DVORAK |
| 144 | { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, | 151 | { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_BSPC }, |
| 145 | { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, | 152 | { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, |
| 146 | { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, | 153 | { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, |
| 147 | { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, | 154 | { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, |
| 148 | { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, | 155 | { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_UPPER, KC_SPC, KC_SPC, M_LOWER, OS_SHFT, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, |
| 149 | }, | 156 | }, |
| 150 | 157 | ||
| 151 | [LAYER_RAISE] = { /* RAISED */ | 158 | /* UPPER |
| 152 | { KC_TILD, KC_PSCR, KC_PAUS, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, | 159 | * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. |
| 153 | { _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, | 160 | * | PRINT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | NUM LK | / | * | - | NUM LK | SCR LK | XXXXXX . PAUSE | |
| 154 | { _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, | 161 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| |
| 155 | { _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, | 162 | * | | F1 | F2 | F3 | F4 | | | 7 | 8 | 9 | + | ~ | | | INS | |
| 156 | { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, | 163 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| |
| 164 | * | CAP LK | F5 | F6 | F7 | F8 | | | 4 | 5 | 6 | + | ` | XXXXXX . | HOME | | ||
| 165 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| | ||
| 166 | * | | F9 | F10 | F11 | F12 | | | 1 | 2 | 3 | ENTER | XXXXXX . | | END | | ||
| 167 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| | ||
| 168 | * | | | | | | 0 | | RALT | . | ENTER | | | | | | ||
| 169 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 170 | */ | ||
| 171 | |||
| 172 | [LAYER_UPPER] = { // UPPER | ||
| 173 | { KC_PSCR, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, XXXXXXX, XXXXXXX, KC_SLCK, KC_PAUS, KC_PAUS }, | ||
| 174 | { _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS }, | ||
| 175 | { KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, ________________, KC_HOME }, | ||
| 176 | { _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, ________________, _______, KC_END }, | ||
| 177 | { _______, _______, _______, _______, _______, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, _______, _______, _______, _______ }, | ||
| 157 | }, | 178 | }, |
| 158 | 179 | ||
| 159 | [LAYER_LOWER] = { /* LOWERED */ | 180 | /* LOWER |
| 160 | { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, | 181 | * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. |
| 161 | { _______, KC_F13, KC_F14, KC_F15, KC_F16, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, | 182 | * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . BACKSP | |
| 162 | { _______, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, _______, _______, _______, _______, _______, ________________, KC_HOME }, | 183 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| |
| 163 | { _______, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, _______, _______, _______, ________________, _______, KC_END }, | 184 | * | | $ | { | [ | ( | % | # | ) | ] | } | @ | | | | INS | |
| 164 | { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______ }, | 185 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| |
| 186 | * | | ^ | * | + | - | ; | : | _ | ' | " | ` | | XXXXXX . | HOME | | ||
| 187 | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| | ||
| 188 | * | | | | & | ! | ~ | / | \ | = | < | > | ? | XXXXXX . | | END | | ||
| 189 | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| | ||
| 190 | * | | | | | | | | | | | | | | | | ||
| 191 | * '--------------------------------------------------------------------------------------------------------------------------------------' | ||
| 192 | */ | ||
| 193 | |||
| 194 | [LAYER_LOWER] = { // LOWER | ||
| 195 | { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ________________ }, | ||
| 196 | { _______, KC_DLR, KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT, _______, _______, _______, KC_INS }, | ||
| 197 | { _______, KC_CIRC, KC_ASTR, KC_PPLS, KC_PMNS, KC_SCLN, KC_COLN, KC_UNDS, KC_QUOT, KC_DQT, KC_GRV, _______, ________________, KC_HOME }, | ||
| 198 | { _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SLSH, KC_BSLS, KC_EQL, KC_LT, KC_GT, KC_QUES, ________________, _______, KC_END }, | ||
| 199 | { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, _______, _______ }, | ||
| 165 | }, | 200 | }, |
| 166 | 201 | ||
| 167 | [LAYER_FUNCTION] = { /* FUNCTION */ | 202 | [LAYER_FUNCTION] = { // FUNCTION |
| 168 | { 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, ________________ }, | 203 | { 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, ________________ }, |
| 169 | { 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 }, | 204 | { 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 }, |
| 170 | { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR }, | 205 | { KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, KC_PSCR }, |
| @@ -174,7 +209,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 174 | 209 | ||
| 175 | #ifdef MOUSEKEY_ENABLE | 210 | #ifdef MOUSEKEY_ENABLE |
| 176 | 211 | ||
| 177 | [LAYER_MOUSE] = { /* MOUSE */ | 212 | [LAYER_MOUSE] = { // MOUSE |
| 178 | { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, | 213 | { _______, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX }, |
| 179 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, | 214 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, |
| 180 | { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, | 215 | { XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXXXXXXXXXXX, KC_WH_U }, |
| @@ -184,25 +219,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 184 | 219 | ||
| 185 | #endif | 220 | #endif |
| 186 | 221 | ||
| 187 | [LAYER_MUSIC] = { /* MUSIC */ | 222 | [LAYER_MUSIC] = { // MUSIC |
| 188 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, | 223 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, |
| 189 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, | 224 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, |
| 190 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, | 225 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, |
| 191 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, | 226 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, |
| 192 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, | 227 | { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX }, |
| 193 | }, | 228 | }, |
| 194 | 229 | ||
| 195 | [LAYER_ADJUST] = { /* ADJUST */ | 230 | [LAYER_ADJUST] = { // ADJUST |
| 196 | { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF, ________________ }, | 231 | { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, _______, _______, _______, MUS_TOG, AUD_TOG, ________________ }, |
| 197 | { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, | 232 | { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, |
| 198 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, | 233 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, |
| 199 | { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, | 234 | { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, ________________, VC_UP, _______ }, |
| 200 | { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______ }, | 235 | { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, _______, VC_DOWN, _______ }, |
| 201 | }, | 236 | }, |
| 202 | 237 | ||
| 203 | 238 | ||
| 204 | /* | 239 | /* |
| 205 | [LAYER_EMPTY] = { | 240 | [LAYER_EMPTY] = { // LAYER |
| 206 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, | 241 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________ }, |
| 207 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, | 242 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, |
| 208 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, | 243 | { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ________________, _______ }, |
| @@ -241,6 +276,7 @@ void persistant_default_layer_set(uint16_t default_layer) | |||
| 241 | } | 276 | } |
| 242 | 277 | ||
| 243 | const uint16_t PROGMEM fn_actions[] = { | 278 | const uint16_t PROGMEM fn_actions[] = { |
| 279 | [0] = ACTION_MODS_ONESHOT(MOD_LSFT), | ||
| 244 | }; | 280 | }; |
| 245 | 281 | ||
| 246 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | 282 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) |
| @@ -250,13 +286,41 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 250 | switch(id) | 286 | switch(id) |
| 251 | { | 287 | { |
| 252 | 288 | ||
| 289 | case MACRO_BREATH_TOGGLE: | ||
| 290 | if (record->event.pressed) | ||
| 291 | { | ||
| 292 | breathing_toggle(); | ||
| 293 | } | ||
| 294 | break; | ||
| 295 | |||
| 296 | case MACRO_BREATH_SPEED_INC: | ||
| 297 | if (record->event.pressed) | ||
| 298 | { | ||
| 299 | breathing_speed_inc(1); | ||
| 300 | } | ||
| 301 | break; | ||
| 302 | |||
| 303 | case MACRO_BREATH_SPEED_DEC: | ||
| 304 | if (record->event.pressed) | ||
| 305 | { | ||
| 306 | breathing_speed_dec(1); | ||
| 307 | } | ||
| 308 | break; | ||
| 309 | |||
| 310 | case MACRO_BREATH_DEFAULT: | ||
| 311 | if (record->event.pressed) | ||
| 312 | { | ||
| 313 | breathing_defaults(); | ||
| 314 | } | ||
| 315 | break; | ||
| 316 | |||
| 253 | case MACRO_QWERTY: | 317 | case MACRO_QWERTY: |
| 254 | if (record->event.pressed) | 318 | if (record->event.pressed) |
| 255 | { | 319 | { |
| 256 | persistant_default_layer_set(1UL<<LAYER_QWERTY); | 320 | persistant_default_layer_set(1UL<<LAYER_QWERTY); |
| 257 | #ifdef AUDIO_ENABLE | 321 | #ifdef AUDIO_ENABLE |
| 258 | PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO); | 322 | PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO); |
| 259 | #endif /* AUDIO_ENABLE */ | 323 | #endif /* AUDIO_ENABLE */ |
| 260 | } | 324 | } |
| 261 | break; | 325 | break; |
| 262 | 326 | ||
| @@ -264,9 +328,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 264 | if (record->event.pressed) | 328 | if (record->event.pressed) |
| 265 | { | 329 | { |
| 266 | persistant_default_layer_set(1UL<<LAYER_COLEMAK); | 330 | persistant_default_layer_set(1UL<<LAYER_COLEMAK); |
| 267 | #ifdef AUDIO_ENABLE | 331 | #ifdef AUDIO_ENABLE |
| 268 | PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO); | 332 | PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO); |
| 269 | #endif /* AUDIO_ENABLE */ | 333 | #endif /* AUDIO_ENABLE */ |
| 270 | } | 334 | } |
| 271 | break; | 335 | break; |
| 272 | 336 | ||
| @@ -274,22 +338,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 274 | if (record->event.pressed) | 338 | if (record->event.pressed) |
| 275 | { | 339 | { |
| 276 | persistant_default_layer_set(1UL<<LAYER_DVORAK); | 340 | persistant_default_layer_set(1UL<<LAYER_DVORAK); |
| 277 | #ifdef AUDIO_ENABLE | 341 | #ifdef AUDIO_ENABLE |
| 278 | PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO); | 342 | PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO); |
| 279 | #endif /* AUDIO_ENABLE */ | 343 | #endif /* AUDIO_ENABLE */ |
| 280 | } | 344 | } |
| 281 | break; | 345 | break; |
| 282 | 346 | ||
| 283 | case MACRO_RAISE: | 347 | case MACRO_UPPER: |
| 284 | if (record->event.pressed) | 348 | if (record->event.pressed) |
| 285 | { | 349 | { |
| 286 | layer_on(LAYER_RAISE); | 350 | layer_on(LAYER_UPPER); |
| 287 | update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); | 351 | breathing_speed_set(2); |
| 352 | breathing_pulse(); | ||
| 353 | update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); | ||
| 288 | } | 354 | } |
| 289 | else | 355 | else |
| 290 | { | 356 | { |
| 291 | layer_off(LAYER_RAISE); | 357 | layer_off(LAYER_UPPER); |
| 292 | update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); | 358 | update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); |
| 293 | } | 359 | } |
| 294 | break; | 360 | break; |
| 295 | 361 | ||
| @@ -297,22 +363,28 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 297 | if (record->event.pressed) | 363 | if (record->event.pressed) |
| 298 | { | 364 | { |
| 299 | layer_on(LAYER_LOWER); | 365 | layer_on(LAYER_LOWER); |
| 300 | update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); | 366 | breathing_speed_set(2); |
| 367 | breathing_pulse(); | ||
| 368 | update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); | ||
| 301 | } | 369 | } |
| 302 | else | 370 | else |
| 303 | { | 371 | { |
| 304 | layer_off(LAYER_LOWER); | 372 | layer_off(LAYER_LOWER); |
| 305 | update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); | 373 | update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); |
| 306 | } | 374 | } |
| 307 | break; | 375 | break; |
| 308 | 376 | ||
| 309 | case MACRO_FUNCTION: | 377 | case MACRO_FUNCTION: |
| 310 | if (record->event.pressed) | 378 | if (record->event.pressed) |
| 311 | { | 379 | { |
| 380 | breathing_speed_set(3); | ||
| 381 | breathing_enable(); | ||
| 312 | layer_on(LAYER_FUNCTION); | 382 | layer_on(LAYER_FUNCTION); |
| 313 | } | 383 | } |
| 314 | else | 384 | else |
| 315 | { | 385 | { |
| 386 | breathing_speed_set(1); | ||
| 387 | breathing_self_disable(); | ||
| 316 | layer_off(LAYER_FUNCTION); | 388 | layer_off(LAYER_FUNCTION); |
| 317 | } | 389 | } |
| 318 | break; | 390 | break; |
| @@ -362,42 +434,34 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 362 | } | 434 | } |
| 363 | break; | 435 | break; |
| 364 | 436 | ||
| 365 | case MACRO_AUDIO_OFF: | 437 | case MACRO_AUDIO_TOGGLE: |
| 366 | if (record->event.pressed) | ||
| 367 | { | ||
| 368 | #ifdef AUDIO_ENABLE | ||
| 369 | audio_off(); | ||
| 370 | #endif | ||
| 371 | } | ||
| 372 | break; | ||
| 373 | |||
| 374 | case MACRO_AUDIO_ON: | ||
| 375 | if (record->event.pressed) | 438 | if (record->event.pressed) |
| 376 | { | 439 | { |
| 377 | #ifdef AUDIO_ENABLE | 440 | if (is_audio_on()) |
| 378 | audio_on(); | 441 | { |
| 379 | PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); | 442 | audio_off(); |
| 380 | #endif | 443 | } |
| 444 | else | ||
| 445 | { | ||
| 446 | audio_on(); | ||
| 447 | PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); | ||
| 448 | } | ||
| 381 | } | 449 | } |
| 382 | break; | 450 | break; |
| 383 | 451 | ||
| 384 | case MACRO_MUSIC_ON: | 452 | case MACRO_MUSIC_TOGGLE: |
| 385 | if (record->event.pressed) | 453 | if (record->event.pressed) |
| 386 | { | 454 | { |
| 387 | #ifdef AUDIO_ENABLE | 455 | if (IS_LAYER_ON(LAYER_MUSIC)) |
| 456 | { | ||
| 457 | layer_off(LAYER_MUSIC); | ||
| 458 | stop_all_notes(); | ||
| 459 | } | ||
| 460 | else | ||
| 461 | { | ||
| 388 | PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); | 462 | PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); |
| 389 | layer_on(LAYER_MUSIC); | 463 | layer_on(LAYER_MUSIC); |
| 390 | #endif | 464 | } |
| 391 | } | ||
| 392 | break; | ||
| 393 | |||
| 394 | case MACRO_MUSIC_OFF: | ||
| 395 | if (record->event.pressed) | ||
| 396 | { | ||
| 397 | #ifdef AUDIO_ENABLE | ||
| 398 | layer_off(LAYER_MUSIC); | ||
| 399 | stop_all_notes(); | ||
| 400 | #endif | ||
| 401 | } | 465 | } |
| 402 | break; | 466 | break; |
| 403 | 467 | ||
| @@ -423,6 +487,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 423 | 487 | ||
| 424 | #endif /* AUDIO_ENABLE */ | 488 | #endif /* AUDIO_ENABLE */ |
| 425 | 489 | ||
| 490 | #ifdef BACKLIGHT_ENABLE | ||
| 491 | case MACRO_BACKLIGHT: | ||
| 492 | if (record->event.pressed) | ||
| 493 | { | ||
| 494 | backlight_step(); | ||
| 495 | } | ||
| 496 | #endif | ||
| 497 | |||
| 426 | default: | 498 | default: |
| 427 | break; | 499 | break; |
| 428 | 500 | ||
| @@ -467,39 +539,39 @@ void led_set_user(uint8_t usb_led) | |||
| 467 | 539 | ||
| 468 | _delay_ms(10); // gets rid of tick | 540 | _delay_ms(10); // gets rid of tick |
| 469 | 541 | ||
| 470 | if (!is_playing_notes()) | 542 | if (!is_playing_notes()) |
| 471 | { | 543 | { |
| 472 | if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) | 544 | if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) |
| 473 | { | 545 | { |
| 474 | // If CAPS LK LED is turning on... | 546 | // If CAPS LK LED is turning on... |
| 475 | PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO); | 547 | PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO); |
| 476 | } | 548 | } |
| 477 | else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) | 549 | else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) |
| 478 | { | 550 | { |
| 479 | // If CAPS LK LED is turning off... | 551 | // If CAPS LK LED is turning off... |
| 480 | PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); | 552 | PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); |
| 481 | } | 553 | } |
| 482 | else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) | 554 | else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) |
| 483 | { | 555 | { |
| 484 | // If NUM LK LED is turning on... | 556 | // If NUM LK LED is turning on... |
| 485 | PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO); | 557 | PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO); |
| 486 | } | 558 | } |
| 487 | else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) | 559 | else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) |
| 488 | { | 560 | { |
| 489 | // If NUM LED is turning off... | 561 | // If NUM LED is turning off... |
| 490 | PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); | 562 | PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); |
| 491 | } | 563 | } |
| 492 | else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) | 564 | else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) |
| 493 | { | 565 | { |
| 494 | // If SCROLL LK LED is turning on... | 566 | // If SCROLL LK LED is turning on... |
| 495 | PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO); | 567 | PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO); |
| 496 | } | 568 | } |
| 497 | else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) | 569 | else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) |
| 498 | { | 570 | { |
| 499 | // If SCROLL LED is turning off... | 571 | // If SCROLL LED is turning off... |
| 500 | PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); | 572 | PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); |
| 501 | } | 573 | } |
| 502 | } | 574 | } |
| 503 | 575 | ||
| 504 | old_usb_led = usb_led; | 576 | old_usb_led = usb_led; |
| 505 | } | 577 | } |
| @@ -514,7 +586,8 @@ void play_startup_tone() | |||
| 514 | void play_goodbye_tone() | 586 | void play_goodbye_tone() |
| 515 | { | 587 | { |
| 516 | PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); | 588 | PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); |
| 517 | _delay_ms(1000); | 589 | _delay_ms(2000); |
| 590 | stop_all_notes(); | ||
| 518 | } | 591 | } |
| 519 | 592 | ||
| 520 | #endif /* AUDIO_ENABLE */ \ No newline at end of file | 593 | #endif /* AUDIO_ENABLE */ \ No newline at end of file |
diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk index eefa42855..f7798b09d 100644 --- a/keyboard/atomic/keymaps/pvc/makefile.mk +++ b/keyboard/atomic/keymaps/pvc/makefile.mk | |||
| @@ -4,7 +4,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | |||
| 4 | CONSOLE_ENABLE = no # Console for debug(+400) | 4 | CONSOLE_ENABLE = no # Console for debug(+400) |
| 5 | COMMAND_ENABLE = yes # Commands for debug and configuration | 5 | COMMAND_ENABLE = yes # Commands for debug and configuration |
| 6 | NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | 6 | NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work |
| 7 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | 7 | BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality |
| 8 | MIDI_ENABLE = no # MIDI controls | 8 | MIDI_ENABLE = no # MIDI controls |
| 9 | AUDIO_ENABLE = yes # Audio output on port C6 | 9 | AUDIO_ENABLE = yes # Audio output on port C6 |
| 10 | UNICODE_ENABLE = no # Unicode | 10 | UNICODE_ENABLE = no # Unicode |
diff --git a/keyboard/planck/keymaps/experimental/README.md b/keyboard/planck/keymaps/experimental/README.md new file mode 100644 index 000000000..de9680b49 --- /dev/null +++ b/keyboard/planck/keymaps/experimental/README.md | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | # The Default Planck Layout | ||
| 2 | |||
diff --git a/keyboard/planck/keymaps/experimental/keymap.c b/keyboard/planck/keymaps/experimental/keymap.c new file mode 100644 index 000000000..fc3ac4a97 --- /dev/null +++ b/keyboard/planck/keymaps/experimental/keymap.c | |||
| @@ -0,0 +1,383 @@ | |||
| 1 | // This is the canonical layout file for the Quantum project. If you want to add another keyboard, | ||
| 2 | // this is the style you want to emulate. | ||
| 3 | |||
| 4 | #include "planck.h" | ||
| 5 | #include "action_layer.h" | ||
| 6 | #ifdef AUDIO_ENABLE | ||
| 7 | #include "audio.h" | ||
| 8 | #endif | ||
| 9 | #include "eeconfig.h" | ||
| 10 | |||
| 11 | extern keymap_config_t keymap_config; | ||
| 12 | |||
| 13 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
| 14 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
| 15 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
| 16 | // entirely and just use numbers. | ||
| 17 | #define _QWERTY 0 | ||
| 18 | #define _COLEMAK 1 | ||
| 19 | #define _DVORAK 2 | ||
| 20 | #define _LOWER 3 | ||
| 21 | #define _RAISE 4 | ||
| 22 | #define _MUSIC 5 | ||
| 23 | #define _PLOVER 6 | ||
| 24 | #define _ADJUST 16 | ||
| 25 | |||
| 26 | // Macro name shortcuts | ||
| 27 | #define QWERTY M(_QWERTY) | ||
| 28 | #define COLEMAK M(_COLEMAK) | ||
| 29 | #define DVORAK M(_DVORAK) | ||
| 30 | #define LOWER M(_LOWER) | ||
| 31 | #define RAISE M(_RAISE) | ||
| 32 | #define M_BL 5 | ||
| 33 | #define AUD_OFF M(6) | ||
| 34 | #define AUD_ON M(7) | ||
| 35 | #define MUS_OFF M(8) | ||
| 36 | #define MUS_ON M(9) | ||
| 37 | #define VC_IN M(10) | ||
| 38 | #define VC_DE M(11) | ||
| 39 | #define PLOVER M(12) | ||
| 40 | #define EXT_PLV M(13) | ||
| 41 | |||
| 42 | // Fillers to make layering more clear | ||
| 43 | #define _______ KC_TRNS | ||
| 44 | #define XXXXXXX KC_NO | ||
| 45 | |||
| 46 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 47 | |||
| 48 | /* Qwerty | ||
| 49 | * ,-----------------------------------------------------------------------------------. | ||
| 50 | * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | | ||
| 51 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 52 | * | Esc | A | S | D | F | G | H | J | K | L | ; | " | | ||
| 53 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 54 | * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | | ||
| 55 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 56 | * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | ||
| 57 | * `-----------------------------------------------------------------------------------' | ||
| 58 | */ | ||
| 59 | [_QWERTY] = { | ||
| 60 | {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, | ||
| 61 | {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, | ||
| 62 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, | ||
| 63 | {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | ||
| 64 | }, | ||
| 65 | |||
| 66 | /* Colemak | ||
| 67 | * ,-----------------------------------------------------------------------------------. | ||
| 68 | * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | | ||
| 69 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 70 | * | Esc | A | R | S | T | D | H | N | E | I | O | " | | ||
| 71 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 72 | * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | | ||
| 73 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 74 | * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | ||
| 75 | * `-----------------------------------------------------------------------------------' | ||
| 76 | */ | ||
| 77 | [_COLEMAK] = { | ||
| 78 | {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, | ||
| 79 | {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, | ||
| 80 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, | ||
| 81 | {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | ||
| 82 | }, | ||
| 83 | |||
| 84 | /* Dvorak | ||
| 85 | * ,-----------------------------------------------------------------------------------. | ||
| 86 | * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | | ||
| 87 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 88 | * | Esc | A | O | E | U | I | D | H | T | N | S | / | | ||
| 89 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 90 | * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | | ||
| 91 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 92 | * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | | ||
| 93 | * `-----------------------------------------------------------------------------------' | ||
| 94 | */ | ||
| 95 | [_DVORAK] = { | ||
| 96 | {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, | ||
| 97 | {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, | ||
| 98 | {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, | ||
| 99 | {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | ||
| 100 | }, | ||
| 101 | |||
| 102 | /* Lower | ||
| 103 | * ,-----------------------------------------------------------------------------------. | ||
| 104 | * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | | ||
| 105 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 106 | * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | ||
| 107 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 108 | * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | | ||
| 109 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 110 | * | | | | | | | | Next | Vol- | Vol+ | Play | | ||
| 111 | * `-----------------------------------------------------------------------------------' | ||
| 112 | */ | ||
| 113 | [_LOWER] = { | ||
| 114 | {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, | ||
| 115 | {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, | ||
| 116 | {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, | ||
| 117 | {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||
| 118 | }, | ||
| 119 | |||
| 120 | /* Raise | ||
| 121 | * ,-----------------------------------------------------------------------------------. | ||
| 122 | * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | ||
| 123 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 124 | * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | ||
| 125 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 126 | * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | | ||
| 127 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 128 | * | | | | | | | | Next | Vol- | Vol+ | Play | | ||
| 129 | * `-----------------------------------------------------------------------------------' | ||
| 130 | */ | ||
| 131 | [_RAISE] = { | ||
| 132 | {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, | ||
| 133 | {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, | ||
| 134 | {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______}, | ||
| 135 | {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||
| 136 | }, | ||
| 137 | |||
| 138 | /* Music (reserved for process_action_user) | ||
| 139 | * | ||
| 140 | */ | ||
| 141 | [_MUSIC] = { | ||
| 142 | {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | ||
| 143 | {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | ||
| 144 | {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, | ||
| 145 | {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} | ||
| 146 | }, | ||
| 147 | |||
| 148 | /* Plover layer (http://opensteno.org) | ||
| 149 | * ,-----------------------------------------------------------------------------------. | ||
| 150 | * | # | # | # | # | # | # | # | # | # | # | # | # | | ||
| 151 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 152 | * | | S | T | P | H | * | * | F | P | L | T | D | | ||
| 153 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 154 | * | | S | K | W | R | * | * | R | B | G | S | Z | | ||
| 155 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 156 | * | Exit | | | A | O | | E | U | | | | | ||
| 157 | * `-----------------------------------------------------------------------------------' | ||
| 158 | */ | ||
| 159 | |||
| 160 | [_PLOVER] = { | ||
| 161 | {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, | ||
| 162 | {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, | ||
| 163 | {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, | ||
| 164 | {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} | ||
| 165 | }, | ||
| 166 | |||
| 167 | /* Adjust (Lower + Raise) | ||
| 168 | * ,-----------------------------------------------------------------------------------. | ||
| 169 | * | | Reset| | | | | | | | | | Del | | ||
| 170 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 171 | * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | | ||
| 172 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 173 | * | |Voice-|Voice+|Mus on|Musoff| | | | | | | | | ||
| 174 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 175 | * | | | | | | | | | | | | | ||
| 176 | * `-----------------------------------------------------------------------------------' | ||
| 177 | */ | ||
| 178 | [_ADJUST] = { | ||
| 179 | {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, | ||
| 180 | {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, | ||
| 181 | {_______, VC_DE, VC_IN, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, | ||
| 182 | {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||
| 183 | } | ||
| 184 | |||
| 185 | |||
| 186 | }; | ||
| 187 | |||
| 188 | const uint16_t PROGMEM fn_actions[] = { | ||
| 189 | |||
| 190 | }; | ||
| 191 | |||
| 192 | #ifdef AUDIO_ENABLE | ||
| 193 | float tone_startup[][2] = { | ||
| 194 | {440.0*pow(2.0,(31)/12.0), 12}, | ||
| 195 | {440.0*pow(2.0,(28)/12.0), 8}, | ||
| 196 | {440.0*pow(2.0,(19)/12.0), 8}, | ||
| 197 | {440.0*pow(2.0,(24)/12.0), 8}, | ||
| 198 | {440.0*pow(2.0,(28)/12.0), 20} | ||
| 199 | }; | ||
| 200 | |||
| 201 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); | ||
| 202 | float tone_dvorak[][2] = SONG(DVORAK_SOUND); | ||
| 203 | float tone_colemak[][2] = SONG(COLEMAK_SOUND); | ||
| 204 | float tone_plover[][2] = SONG(PLOVER_SOUND); | ||
| 205 | float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); | ||
| 206 | |||
| 207 | float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); | ||
| 208 | float goodbye[][2] = SONG(GOODBYE_SOUND); | ||
| 209 | #endif | ||
| 210 | |||
| 211 | |||
| 212 | void persistant_default_layer_set(uint16_t default_layer) { | ||
| 213 | eeconfig_update_default_layer(default_layer); | ||
| 214 | default_layer_set(default_layer); | ||
| 215 | } | ||
| 216 | |||
| 217 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
| 218 | { | ||
| 219 | switch(id) { | ||
| 220 | case _QWERTY: | ||
| 221 | if (record->event.pressed) { | ||
| 222 | #ifdef AUDIO_ENABLE | ||
| 223 | PLAY_NOTE_ARRAY(tone_qwerty, false, 0); | ||
| 224 | #endif | ||
| 225 | persistant_default_layer_set(1UL<<_QWERTY); | ||
| 226 | } | ||
| 227 | break; | ||
| 228 | case _COLEMAK: | ||
| 229 | if (record->event.pressed) { | ||
| 230 | #ifdef AUDIO_ENABLE | ||
| 231 | PLAY_NOTE_ARRAY(tone_colemak, false, 0); | ||
| 232 | #endif | ||
| 233 | persistant_default_layer_set(1UL<<_COLEMAK); | ||
| 234 | } | ||
| 235 | break; | ||
| 236 | case _DVORAK: | ||
| 237 | if (record->event.pressed) { | ||
| 238 | #ifdef AUDIO_ENABLE | ||
| 239 | PLAY_NOTE_ARRAY(tone_dvorak, false, 0); | ||
| 240 | #endif | ||
| 241 | persistant_default_layer_set(1UL<<_DVORAK); | ||
| 242 | } | ||
| 243 | break; | ||
| 244 | case _LOWER: | ||
| 245 | if (record->event.pressed) { | ||
| 246 | layer_on(_LOWER); | ||
| 247 | breathing_speed_set(2); | ||
| 248 | breathing_pulse(); | ||
| 249 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 250 | } else { | ||
| 251 | layer_off(_LOWER); | ||
| 252 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 253 | } | ||
| 254 | break; | ||
| 255 | case _RAISE: | ||
| 256 | if (record->event.pressed) { | ||
| 257 | layer_on(_RAISE); | ||
| 258 | breathing_speed_set(2); | ||
| 259 | breathing_pulse(); | ||
| 260 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 261 | } else { | ||
| 262 | layer_off(_RAISE); | ||
| 263 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 264 | } | ||
| 265 | break; | ||
| 266 | case M_BL: | ||
| 267 | if (record->event.pressed) { | ||
| 268 | register_code(KC_RSFT); | ||
| 269 | #ifdef BACKLIGHT_ENABLE | ||
| 270 | backlight_step(); | ||
| 271 | #endif | ||
| 272 | } else { | ||
| 273 | unregister_code(KC_RSFT); | ||
| 274 | } | ||
| 275 | break; | ||
| 276 | case 6: | ||
| 277 | if (record->event.pressed) { | ||
| 278 | #ifdef AUDIO_ENABLE | ||
| 279 | audio_off(); | ||
| 280 | #endif | ||
| 281 | } | ||
| 282 | break; | ||
| 283 | case 7: | ||
| 284 | if (record->event.pressed) { | ||
| 285 | #ifdef AUDIO_ENABLE | ||
| 286 | audio_on(); | ||
| 287 | PLAY_NOTE_ARRAY(tone_startup, false, 0); | ||
| 288 | #endif | ||
| 289 | } | ||
| 290 | break; | ||
| 291 | case 8: | ||
| 292 | if (record->event.pressed) { | ||
| 293 | #ifdef AUDIO_ENABLE | ||
| 294 | layer_off(_MUSIC); | ||
| 295 | stop_all_notes(); | ||
| 296 | #endif | ||
| 297 | } | ||
| 298 | break; | ||
| 299 | case 9: | ||
| 300 | if (record->event.pressed) { | ||
| 301 | #ifdef AUDIO_ENABLE | ||
| 302 | PLAY_NOTE_ARRAY(music_scale, false, 0); | ||
| 303 | layer_on(_MUSIC); | ||
| 304 | #endif | ||
| 305 | } | ||
| 306 | break; | ||
| 307 | case 10: | ||
| 308 | if (record->event.pressed) { | ||
| 309 | #ifdef AUDIO_ENABLE | ||
| 310 | voice_iterate(); | ||
| 311 | PLAY_NOTE_ARRAY(music_scale, false, 0); | ||
| 312 | #endif | ||
| 313 | } | ||
| 314 | break; | ||
| 315 | case 11: | ||
| 316 | if (record->event.pressed) { | ||
| 317 | #ifdef AUDIO_ENABLE | ||
| 318 | voice_deiterate(); | ||
| 319 | PLAY_NOTE_ARRAY(music_scale, false, 0); | ||
| 320 | #endif | ||
| 321 | } | ||
| 322 | break; | ||
| 323 | case 12: | ||
| 324 | if (record->event.pressed) { | ||
| 325 | #ifdef AUDIO_ENABLE | ||
| 326 | stop_all_notes(); | ||
| 327 | PLAY_NOTE_ARRAY(tone_plover, false, 0); | ||
| 328 | #endif | ||
| 329 | layer_off(_RAISE); | ||
| 330 | layer_off(_LOWER); | ||
| 331 | layer_off(_ADJUST); | ||
| 332 | layer_off(_MUSIC); | ||
| 333 | layer_on(_PLOVER); | ||
| 334 | if (!eeconfig_is_enabled()) { | ||
| 335 | eeconfig_init(); | ||
| 336 | } | ||
| 337 | keymap_config.raw = eeconfig_read_keymap(); | ||
| 338 | keymap_config.nkro = 1; | ||
| 339 | eeconfig_update_keymap(keymap_config.raw); | ||
| 340 | } | ||
| 341 | break; | ||
| 342 | case 13: | ||
| 343 | if (record->event.pressed) { | ||
| 344 | #ifdef AUDIO_ENABLE | ||
| 345 | PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); | ||
| 346 | #endif | ||
| 347 | layer_off(_PLOVER); | ||
| 348 | } | ||
| 349 | break; | ||
| 350 | |||
| 351 | } | ||
| 352 | return MACRO_NONE; | ||
| 353 | }; | ||
| 354 | |||
| 355 | void matrix_init_user(void) { | ||
| 356 | #ifdef AUDIO_ENABLE | ||
| 357 | _delay_ms(20); // stops the tick | ||
| 358 | PLAY_NOTE_ARRAY(tone_startup, false, 0); | ||
| 359 | #endif | ||
| 360 | } | ||
| 361 | |||
| 362 | #ifdef AUDIO_ENABLE | ||
| 363 | void play_goodbye_tone() | ||
| 364 | { | ||
| 365 | PLAY_NOTE_ARRAY(goodbye, false, 0); | ||
| 366 | _delay_ms(150); | ||
| 367 | } | ||
| 368 | |||
| 369 | uint8_t starting_note = 0x0C; | ||
| 370 | int offset = 0; | ||
| 371 | |||
| 372 | void process_action_user(keyrecord_t *record) { | ||
| 373 | |||
| 374 | if (IS_LAYER_ON(_MUSIC)) { | ||
| 375 | if (record->event.pressed) { | ||
| 376 | play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); | ||
| 377 | } else { | ||
| 378 | stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); | ||
| 379 | } | ||
| 380 | } | ||
| 381 | |||
| 382 | } | ||
| 383 | #endif | ||
diff --git a/keyboard/planck/keymaps/experimental/makefile.mk b/keyboard/planck/keymaps/experimental/makefile.mk new file mode 100644 index 000000000..99fbfbd0b --- /dev/null +++ b/keyboard/planck/keymaps/experimental/makefile.mk | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | AUDIO_ENABLE = yes | ||
| 2 | NKRO_ENABLE = yes \ No newline at end of file | ||
diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c index 830b00a4c..177f04484 100644 --- a/keyboard/planck/keymaps/pvc/keymap.c +++ b/keyboard/planck/keymaps/pvc/keymap.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #define MACRO_AUDIO_OFF 17 | 38 | #define MACRO_AUDIO_OFF 17 |
| 39 | #define MACRO_INC_VOICE 18 | 39 | #define MACRO_INC_VOICE 18 |
| 40 | #define MACRO_DEC_VOICE 19 | 40 | #define MACRO_DEC_VOICE 19 |
| 41 | #define MACRO_BACKLIGHT 20 | ||
| 41 | 42 | ||
| 42 | #define M_QWRTY M(MACRO_QWERTY) | 43 | #define M_QWRTY M(MACRO_QWERTY) |
| 43 | #define M_COLMK M(MACRO_COLEMAK) | 44 | #define M_COLMK M(MACRO_COLEMAK) |
| @@ -53,6 +54,7 @@ | |||
| 53 | #define TMPO_UP M(MACRO_TEMPO_U) | 54 | #define TMPO_UP M(MACRO_TEMPO_U) |
| 54 | #define TMPO_DN M(MACRO_TEMPO_D) | 55 | #define TMPO_DN M(MACRO_TEMPO_D) |
| 55 | #define TMPO_DF M(MACRO_TONE_DEFAULT) | 56 | #define TMPO_DF M(MACRO_TONE_DEFAULT) |
| 57 | #define M_BACKL M(MACRO_BACKLIGHT) | ||
| 56 | 58 | ||
| 57 | 59 | ||
| 58 | #define MUS_ON M(MACRO_MUSIC_ON) | 60 | #define MUS_ON M(MACRO_MUSIC_ON) |
| @@ -217,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 217 | [LAYER_ADJUST] = { /* ADJUST */ | 219 | [LAYER_ADJUST] = { /* ADJUST */ |
| 218 | { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF }, | 220 | { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF }, |
| 219 | { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, | 221 | { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ }, |
| 220 | { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, | 222 | { _______, _______, _______, _______, M_BACKL, RESET, _______, M_MOUSE, _______, _______, _______, _______ }, |
| 221 | { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ }, | 223 | { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ }, |
| 222 | }, | 224 | }, |
| 223 | 225 | ||
| @@ -337,6 +339,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 337 | } | 339 | } |
| 338 | break; | 340 | break; |
| 339 | 341 | ||
| 342 | |||
| 343 | #ifdef BACKLIGHT_ENABLE | ||
| 344 | case MACRO_BACKLIGHT: | ||
| 345 | if (record->event.pressed) | ||
| 346 | { | ||
| 347 | backlight_step(); | ||
| 348 | } | ||
| 349 | #endif | ||
| 350 | |||
| 340 | #ifdef MOUSEKEY_ENABLE | 351 | #ifdef MOUSEKEY_ENABLE |
| 341 | 352 | ||
| 342 | case MACRO_MOUSE: | 353 | case MACRO_MOUSE: |
diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk index b3f1b9e51..f7798b09d 100644 --- a/keyboard/planck/keymaps/pvc/makefile.mk +++ b/keyboard/planck/keymaps/pvc/makefile.mk | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) | 1 | BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) |
| 2 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | 2 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) |
| 3 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | 3 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) |
| 4 | CONSOLE_ENABLE = yes # Console for debug(+400) | 4 | CONSOLE_ENABLE = no # Console for debug(+400) |
| 5 | COMMAND_ENABLE = yes # Commands for debug and configuration | 5 | COMMAND_ENABLE = yes # Commands for debug and configuration |
| 6 | NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | 6 | NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work |
| 7 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | 7 | BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality |
| 8 | MIDI_ENABLE = no # MIDI controls | 8 | MIDI_ENABLE = no # MIDI controls |
| 9 | AUDIO_ENABLE = no # Audio output on port C6 | 9 | AUDIO_ENABLE = yes # Audio output on port C6 |
| 10 | UNICODE_ENABLE = no # Unicode | 10 | UNICODE_ENABLE = no # Unicode |
| 11 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | 11 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID |
| 12 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. | 12 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. |
diff --git a/keyboard/planck/planck.c b/keyboard/planck/planck.c index 655850150..446353dbf 100644 --- a/keyboard/planck/planck.c +++ b/keyboard/planck/planck.c | |||
| @@ -9,6 +9,9 @@ void matrix_scan_user(void) {} | |||
| 9 | __attribute__ ((weak)) | 9 | __attribute__ ((weak)) |
| 10 | void process_action_user(keyrecord_t *record) {} | 10 | void process_action_user(keyrecord_t *record) {} |
| 11 | 11 | ||
| 12 | __attribute__ ((weak)) | ||
| 13 | void led_set_user(uint8_t usb_led) {} | ||
| 14 | |||
| 12 | void matrix_init_kb(void) { | 15 | void matrix_init_kb(void) { |
| 13 | #ifdef BACKLIGHT_ENABLE | 16 | #ifdef BACKLIGHT_ENABLE |
| 14 | backlight_init_ports(); | 17 | backlight_init_ports(); |
| @@ -33,8 +36,22 @@ void process_action_kb(keyrecord_t *record) { | |||
| 33 | process_action_user(record); | 36 | process_action_user(record); |
| 34 | } | 37 | } |
| 35 | 38 | ||
| 39 | void led_set_kb(uint8_t usb_led) { | ||
| 40 | // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here | ||
| 41 | |||
| 42 | led_set_user(usb_led); | ||
| 43 | } | ||
| 44 | |||
| 36 | #ifdef BACKLIGHT_ENABLE | 45 | #ifdef BACKLIGHT_ENABLE |
| 37 | #define CHANNEL OCR1C | 46 | #define CHANNEL OCR1C |
| 47 | #define BREATHING_NO_HALT 0 | ||
| 48 | #define BREATHING_HALT_OFF 1 | ||
| 49 | #define BREATHING_HALT_ON 2 | ||
| 50 | |||
| 51 | static uint8_t breath_intensity; | ||
| 52 | static uint8_t breath_speed; | ||
| 53 | static uint16_t breathing_index; | ||
| 54 | static uint8_t breathing_halt; | ||
| 38 | 55 | ||
| 39 | void backlight_init_ports() | 56 | void backlight_init_ports() |
| 40 | { | 57 | { |
| @@ -60,22 +77,22 @@ void backlight_init_ports() | |||
| 60 | TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; | 77 | TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; |
| 61 | 78 | ||
| 62 | backlight_init(); | 79 | backlight_init(); |
| 80 | breathing_defaults(); | ||
| 63 | } | 81 | } |
| 64 | 82 | ||
| 65 | void backlight_set(uint8_t level) | 83 | void backlight_set(uint8_t level) |
| 66 | { | 84 | { |
| 85 | // Prevent backlight blink on lowest level | ||
| 86 | PORTB &= ~(_BV(PORTB7)); | ||
| 87 | |||
| 67 | if ( level == 0 ) | 88 | if ( level == 0 ) |
| 68 | { | 89 | { |
| 69 | // Turn off PWM control on PB7, revert to output low. | 90 | // Turn off PWM control on PB7, revert to output low. |
| 70 | TCCR1A &= ~(_BV(COM1C1)); | 91 | TCCR1A &= ~(_BV(COM1C1)); |
| 71 | CHANNEL = 0x0; | 92 | CHANNEL = 0x0; |
| 72 | // Prevent backlight blink on lowest level | ||
| 73 | PORTB &= ~(_BV(PORTB7)); | ||
| 74 | } | 93 | } |
| 75 | else if ( level == BACKLIGHT_LEVELS ) | 94 | else if ( level == BACKLIGHT_LEVELS ) |
| 76 | { | 95 | { |
| 77 | // Prevent backlight blink on lowest level | ||
| 78 | PORTB &= ~(_BV(PORTB7)); | ||
| 79 | // Turn on PWM control of PB7 | 96 | // Turn on PWM control of PB7 |
| 80 | TCCR1A |= _BV(COM1C1); | 97 | TCCR1A |= _BV(COM1C1); |
| 81 | // Set the brightness | 98 | // Set the brightness |
| @@ -83,13 +100,205 @@ void backlight_set(uint8_t level) | |||
| 83 | } | 100 | } |
| 84 | else | 101 | else |
| 85 | { | 102 | { |
| 86 | // Prevent backlight blink on lowest level | ||
| 87 | PORTB &= ~(_BV(PORTB7)); | ||
| 88 | // Turn on PWM control of PB7 | 103 | // Turn on PWM control of PB7 |
| 89 | TCCR1A |= _BV(COM1C1); | 104 | TCCR1A |= _BV(COM1C1); |
| 90 | // Set the brightness | 105 | // Set the brightness |
| 91 | CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); | 106 | CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2)); |
| 92 | } | 107 | } |
| 108 | breathing_intensity_default(); | ||
| 109 | } | ||
| 110 | |||
| 111 | |||
| 112 | void breathing_enable(void) | ||
| 113 | { | ||
| 114 | if (get_backlight_level() == 0) | ||
| 115 | { | ||
| 116 | breathing_index = 0; | ||
| 117 | } | ||
| 118 | else | ||
| 119 | { | ||
| 120 | // Set breathing_index to be at the midpoint (brightest point) | ||
| 121 | breathing_index = 0x20 << breath_speed; | ||
| 122 | } | ||
| 123 | |||
| 124 | breathing_halt = BREATHING_NO_HALT; | ||
| 125 | |||
| 126 | // Enable breathing interrupt | ||
| 127 | TIMSK1 |= _BV(OCIE1A); | ||
| 128 | } | ||
| 129 | |||
| 130 | void breathing_pulse(void) | ||
| 131 | { | ||
| 132 | if (get_backlight_level() == 0) | ||
| 133 | { | ||
| 134 | breathing_index = 0; | ||
| 135 | } | ||
| 136 | else | ||
| 137 | { | ||
| 138 | // Set breathing_index to be at the midpoint + 1 (brightest point) | ||
| 139 | breathing_index = 0x21 << breath_speed; | ||
| 140 | } | ||
| 141 | |||
| 142 | breathing_halt = BREATHING_HALT_ON; | ||
| 143 | |||
| 144 | // Enable breathing interrupt | ||
| 145 | TIMSK1 |= _BV(OCIE1A); | ||
| 93 | } | 146 | } |
| 94 | 147 | ||
| 148 | void breathing_disable(void) | ||
| 149 | { | ||
| 150 | // Disable breathing interrupt | ||
| 151 | TIMSK1 &= ~_BV(OCIE1A); | ||
| 152 | backlight_set(get_backlight_level()); | ||
| 153 | } | ||
| 154 | |||
| 155 | void breathing_self_disable(void) | ||
| 156 | { | ||
| 157 | if (get_backlight_level() == 0) | ||
| 158 | { | ||
| 159 | breathing_halt = BREATHING_HALT_OFF; | ||
| 160 | } | ||
| 161 | else | ||
| 162 | { | ||
| 163 | breathing_halt = BREATHING_HALT_ON; | ||
| 164 | } | ||
| 165 | |||
| 166 | //backlight_set(get_backlight_level()); | ||
| 167 | } | ||
| 168 | |||
| 169 | void breathing_toggle(void) | ||
| 170 | { | ||
| 171 | if (!is_breathing()) | ||
| 172 | { | ||
| 173 | if (get_backlight_level() == 0) | ||
| 174 | { | ||
| 175 | breathing_index = 0; | ||
| 176 | } | ||
| 177 | else | ||
| 178 | { | ||
| 179 | // Set breathing_index to be at the midpoint + 1 (brightest point) | ||
| 180 | breathing_index = 0x21 << breath_speed; | ||
| 181 | } | ||
| 182 | |||
| 183 | breathing_halt = BREATHING_NO_HALT; | ||
| 184 | } | ||
| 185 | |||
| 186 | // Toggle breathing interrupt | ||
| 187 | TIMSK1 ^= _BV(OCIE1A); | ||
| 188 | |||
| 189 | // Restore backlight level | ||
| 190 | if (!is_breathing()) | ||
| 191 | { | ||
| 192 | backlight_set(get_backlight_level()); | ||
| 193 | } | ||
| 194 | } | ||
| 195 | |||
| 196 | bool is_breathing(void) | ||
| 197 | { | ||
| 198 | return (TIMSK1 && _BV(OCIE1A)); | ||
| 199 | } | ||
| 200 | |||
| 201 | void breathing_intensity_default(void) | ||
| 202 | { | ||
| 203 | //breath_intensity = (uint8_t)((uint16_t)100 * (uint16_t)get_backlight_level() / (uint16_t)BACKLIGHT_LEVELS); | ||
| 204 | breath_intensity = ((BACKLIGHT_LEVELS - get_backlight_level()) * ((BACKLIGHT_LEVELS + 1) / 2)); | ||
| 205 | } | ||
| 206 | |||
| 207 | void breathing_intensity_set(uint8_t value) | ||
| 208 | { | ||
| 209 | breath_intensity = value; | ||
| 210 | } | ||
| 211 | |||
| 212 | void breathing_speed_default(void) | ||
| 213 | { | ||
| 214 | breath_speed = 4; | ||
| 215 | } | ||
| 216 | |||
| 217 | void breathing_speed_set(uint8_t value) | ||
| 218 | { | ||
| 219 | bool is_breathing_now = is_breathing(); | ||
| 220 | uint8_t old_breath_speed = breath_speed; | ||
| 221 | |||
| 222 | if (is_breathing_now) | ||
| 223 | { | ||
| 224 | // Disable breathing interrupt | ||
| 225 | TIMSK1 &= ~_BV(OCIE1A); | ||
| 226 | } | ||
| 227 | |||
| 228 | breath_speed = value; | ||
| 229 | |||
| 230 | if (is_breathing_now) | ||
| 231 | { | ||
| 232 | // Adjust index to account for new speed | ||
| 233 | breathing_index = (( (uint8_t)( (breathing_index) >> old_breath_speed ) ) & 0x3F) << breath_speed; | ||
| 234 | |||
| 235 | // Enable breathing interrupt | ||
| 236 | TIMSK1 |= _BV(OCIE1A); | ||
| 237 | } | ||
| 238 | |||
| 239 | } | ||
| 240 | |||
| 241 | void breathing_speed_inc(uint8_t value) | ||
| 242 | { | ||
| 243 | if ((uint16_t)(breath_speed - value) > 10 ) | ||
| 244 | { | ||
| 245 | breathing_speed_set(0); | ||
| 246 | } | ||
| 247 | else | ||
| 248 | { | ||
| 249 | breathing_speed_set(breath_speed - value); | ||
| 250 | } | ||
| 251 | } | ||
| 252 | |||
| 253 | void breathing_speed_dec(uint8_t value) | ||
| 254 | { | ||
| 255 | if ((uint16_t)(breath_speed + value) > 10 ) | ||
| 256 | { | ||
| 257 | breathing_speed_set(10); | ||
| 258 | } | ||
| 259 | else | ||
| 260 | { | ||
| 261 | breathing_speed_set(breath_speed + value); | ||
| 262 | } | ||
| 263 | } | ||
| 264 | |||
| 265 | void breathing_defaults(void) | ||
| 266 | { | ||
| 267 | breathing_intensity_default(); | ||
| 268 | breathing_speed_default(); | ||
| 269 | breathing_halt = BREATHING_NO_HALT; | ||
| 270 | } | ||
| 271 | |||
| 272 | /* Breathing Sleep LED brighness(PWM On period) table | ||
| 273 | * (64[steps] * 4[duration]) / 64[PWM periods/s] = 4 second breath cycle | ||
| 274 | * | ||
| 275 | * http://www.wolframalpha.com/input/?i=%28sin%28+x%2F64*pi%29**8+*+255%2C+x%3D0+to+63 | ||
| 276 | * (0..63).each {|x| p ((sin(x/64.0*PI)**8)*255).to_i } | ||
| 277 | */ | ||
| 278 | static const uint8_t breathing_table[64] PROGMEM = { | ||
| 279 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 6, 10, | ||
| 280 | 15, 23, 32, 44, 58, 74, 93, 113, 135, 157, 179, 199, 218, 233, 245, 252, | ||
| 281 | 255, 252, 245, 233, 218, 199, 179, 157, 135, 113, 93, 74, 58, 44, 32, 23, | ||
| 282 | 15, 10, 6, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 283 | }; | ||
| 284 | |||
| 285 | ISR(TIMER1_COMPA_vect) | ||
| 286 | { | ||
| 287 | // CHANNEL = (pgm_read_byte(&breathing_table[ ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F ] )) * breath_intensity; | ||
| 288 | |||
| 289 | |||
| 290 | uint8_t local_index = ( (uint8_t)( (breathing_index++) >> breath_speed ) ) & 0x3F; | ||
| 291 | |||
| 292 | if (((breathing_halt == BREATHING_HALT_ON) && (local_index == 0x20)) || ((breathing_halt == BREATHING_HALT_OFF) && (local_index == 0x3F))) | ||
| 293 | { | ||
| 294 | // Disable breathing interrupt | ||
| 295 | TIMSK1 &= ~_BV(OCIE1A); | ||
| 296 | } | ||
| 297 | |||
| 298 | CHANNEL = (uint16_t)(((uint16_t)pgm_read_byte(&breathing_table[local_index]) * 257)) >> breath_intensity; | ||
| 299 | |||
| 300 | } | ||
| 301 | |||
| 302 | |||
| 303 | |||
| 95 | #endif \ No newline at end of file | 304 | #endif \ No newline at end of file |
diff --git a/keyboard/planck/planck.h b/keyboard/planck/planck.h index c5b59d999..cfd4956bf 100644 --- a/keyboard/planck/planck.h +++ b/keyboard/planck/planck.h | |||
| @@ -45,4 +45,22 @@ void matrix_init_user(void); | |||
| 45 | void matrix_scan_user(void); | 45 | void matrix_scan_user(void); |
| 46 | void process_action_user(keyrecord_t *record); | 46 | void process_action_user(keyrecord_t *record); |
| 47 | 47 | ||
| 48 | void led_set_user(uint8_t usb_led); | ||
| 49 | void backlight_init_ports(void); | ||
| 50 | |||
| 51 | void breathing_enable(void); | ||
| 52 | void breathing_pulse(void); | ||
| 53 | void breathing_disable(void); | ||
| 54 | void breathing_self_disable(void); | ||
| 55 | void breathing_toggle(void); | ||
| 56 | bool is_breathing(void); | ||
| 57 | |||
| 58 | |||
| 59 | void breathing_defaults(void); | ||
| 60 | void breathing_intensity_default(void); | ||
| 61 | void breathing_speed_default(void); | ||
| 62 | void breathing_speed_set(uint8_t value); | ||
| 63 | void breathing_speed_inc(uint8_t value); | ||
| 64 | void breathing_speed_dec(uint8_t value); | ||
| 65 | |||
| 48 | #endif | 66 | #endif |
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 3a7f0f556..27b64f8c9 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c | |||
| @@ -374,6 +374,10 @@ bool is_playing_notes(void) { | |||
| 374 | return playing_notes; | 374 | return playing_notes; |
| 375 | } | 375 | } |
| 376 | 376 | ||
| 377 | bool is_audio_on(void) { | ||
| 378 | return (audio_config.enable != 0); | ||
| 379 | } | ||
| 380 | |||
| 377 | void audio_toggle(void) { | 381 | void audio_toggle(void) { |
| 378 | audio_config.enable ^= 1; | 382 | audio_config.enable ^= 1; |
| 379 | eeconfig_update_audio(audio_config.raw); | 383 | eeconfig_update_audio(audio_config.raw); |
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 3d706587a..4ba879bbb 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h | |||
| @@ -25,6 +25,7 @@ typedef union { | |||
| 25 | }; | 25 | }; |
| 26 | } audio_config_t; | 26 | } audio_config_t; |
| 27 | 27 | ||
| 28 | bool is_audio_on(void); | ||
| 28 | void audio_toggle(void); | 29 | void audio_toggle(void); |
| 29 | void audio_on(void); | 30 | void audio_on(void); |
| 30 | void audio_off(void); | 31 | void audio_off(void); |
| @@ -71,11 +72,11 @@ void stop_note(float freq); | |||
| 71 | void stop_all_notes(void); | 72 | void stop_all_notes(void); |
| 72 | void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest); | 73 | void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest); |
| 73 | 74 | ||
| 74 | #define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ | 75 | #define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ |
| 75 | 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ | 76 | 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ |
| 76 | 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ | 77 | 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ |
| 77 | 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ | 78 | 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ |
| 78 | 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } | 79 | 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } |
| 79 | 80 | ||
| 80 | // These macros are used to allow play_notes to play an array of indeterminate | 81 | // These macros are used to allow play_notes to play an array of indeterminate |
| 81 | // length. This works around the limitation of C's sizeof operation on pointers. | 82 | // length. This works around the limitation of C's sizeof operation on pointers. |
diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 8c27e9035..322fda498 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h | |||
| @@ -87,8 +87,11 @@ extern const uint16_t fn_actions[]; | |||
| 87 | #define KC_EXCLAIM KC_EXLM | 87 | #define KC_EXCLAIM KC_EXLM |
| 88 | 88 | ||
| 89 | #define KC_AT LSFT(KC_2) // @ | 89 | #define KC_AT LSFT(KC_2) // @ |
| 90 | |||
| 91 | |||
| 90 | #define KC_HASH LSFT(KC_3) // # | 92 | #define KC_HASH LSFT(KC_3) // # |
| 91 | 93 | ||
| 94 | |||
| 92 | #define KC_DLR LSFT(KC_4) // $ | 95 | #define KC_DLR LSFT(KC_4) // $ |
| 93 | #define KC_DOLLAR KC_DLR | 96 | #define KC_DOLLAR KC_DLR |
| 94 | 97 | ||
| @@ -110,11 +113,13 @@ extern const uint16_t fn_actions[]; | |||
| 110 | #define KC_RPRN LSFT(KC_0) // ) | 113 | #define KC_RPRN LSFT(KC_0) // ) |
| 111 | #define KC_RIGHT_PAREN KC_RPRN | 114 | #define KC_RIGHT_PAREN KC_RPRN |
| 112 | 115 | ||
| 116 | |||
| 113 | #define KC_UNDS LSFT(KC_MINS) // _ | 117 | #define KC_UNDS LSFT(KC_MINS) // _ |
| 114 | #define KC_UNDERSCORE KC_UNDS | 118 | #define KC_UNDERSCORE KC_UNDS |
| 115 | 119 | ||
| 116 | #define KC_PLUS LSFT(KC_EQL) // + | 120 | #define KC_PLUS LSFT(KC_EQL) // + |
| 117 | 121 | ||
| 122 | |||
| 118 | #define KC_LCBR LSFT(KC_LBRC) // { | 123 | #define KC_LCBR LSFT(KC_LBRC) // { |
| 119 | #define KC_LEFT_CURLY_BRACE KC_LCBR | 124 | #define KC_LEFT_CURLY_BRACE KC_LCBR |
| 120 | 125 | ||
| @@ -132,6 +137,19 @@ extern const uint16_t fn_actions[]; | |||
| 132 | 137 | ||
| 133 | #define KC_PIPE LSFT(KC_BSLS) // | | 138 | #define KC_PIPE LSFT(KC_BSLS) // | |
| 134 | 139 | ||
| 140 | #define KC_LT LSFT(KC_COMM) // < | ||
| 141 | |||
| 142 | |||
| 143 | #define KC_GT LSFT(KC_DOT) // > | ||
| 144 | |||
| 145 | |||
| 146 | #define KC_QUES LSFT(KC_SLSH) // ? | ||
| 147 | #define KC_QUESTION KC_QUES | ||
| 148 | |||
| 149 | |||
| 150 | #define KC_DQT LSFT(KC_QUOT) // " | ||
| 151 | #define KC_DOUBLE_QUOTE KC_DQT | ||
| 152 | |||
| 135 | #define KC_DELT KC_DELETE // Del key (four letter code) | 153 | #define KC_DELT KC_DELETE // Del key (four letter code) |
| 136 | 154 | ||
| 137 | // Alias for function layers than expand past FN31 | 155 | // Alias for function layers than expand past FN31 |
diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index 795f26380..3a2bf3aff 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h | |||
| @@ -25,11 +25,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 25 | 25 | ||
| 26 | #define CHNL(note, channel) (note + (channel << 8)) | 26 | #define CHNL(note, channel) (note + (channel << 8)) |
| 27 | 27 | ||
| 28 | #define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ | 28 | #define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ |
| 29 | 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ | 29 | 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ |
| 30 | 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ | 30 | 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ |
| 31 | 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ | 31 | 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ |
| 32 | 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } | 32 | 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } |
| 33 | 33 | ||
| 34 | #define N_CN1 (0x600C + (12 * -1) + 0 ) | 34 | #define N_CN1 (0x600C + (12 * -1) + 0 ) |
| 35 | #define N_CN1S (0x600C + (12 * -1) + 1 ) | 35 | #define N_CN1S (0x600C + (12 * -1) + 1 ) |
diff --git a/quantum/quantum.mk b/quantum/quantum.mk index ff34c463a..5f4c2f045 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk | |||
| @@ -28,9 +28,9 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) | |||
| 28 | endif | 28 | endif |
| 29 | 29 | ||
| 30 | ifeq ($(strip $(AUDIO_ENABLE)), yes) | 30 | ifeq ($(strip $(AUDIO_ENABLE)), yes) |
| 31 | SRC += $(QUANTUM_DIR)/audio/audio.c | 31 | SRC += $(QUANTUM_DIR)/audio/audio.c |
| 32 | SRC += $(QUANTUM_DIR)/audio/voices.c | 32 | SRC += $(QUANTUM_DIR)/audio/voices.c |
| 33 | SRC += $(QUANTUM_DIR)/audio/luts.c | 33 | SRC += $(QUANTUM_DIR)/audio/luts.c |
| 34 | endif | 34 | endif |
| 35 | 35 | ||
| 36 | ifeq ($(strip $(UNICODE_ENABLE)), yes) | 36 | ifeq ($(strip $(UNICODE_ENABLE)), yes) |
diff --git a/tmk_core/common/backlight.c b/tmk_core/common/backlight.c index 2f6fc1cd6..c9e8fd3fd 100644 --- a/tmk_core/common/backlight.c +++ b/tmk_core/common/backlight.c | |||
| @@ -83,3 +83,8 @@ void backlight_level(uint8_t level) | |||
| 83 | eeconfig_update_backlight(backlight_config.raw); | 83 | eeconfig_update_backlight(backlight_config.raw); |
| 84 | backlight_set(backlight_config.level); | 84 | backlight_set(backlight_config.level); |
| 85 | } | 85 | } |
| 86 | |||
| 87 | uint8_t get_backlight_level(void) | ||
| 88 | { | ||
| 89 | return backlight_config.level; | ||
| 90 | } \ No newline at end of file | ||
diff --git a/tmk_core/common/backlight.h b/tmk_core/common/backlight.h index 525ec8bbe..f57309267 100644 --- a/tmk_core/common/backlight.h +++ b/tmk_core/common/backlight.h | |||
| @@ -36,5 +36,6 @@ void backlight_toggle(void); | |||
| 36 | void backlight_step(void); | 36 | void backlight_step(void); |
| 37 | void backlight_set(uint8_t level); | 37 | void backlight_set(uint8_t level); |
| 38 | void backlight_level(uint8_t level); | 38 | void backlight_level(uint8_t level); |
| 39 | uint8_t get_backlight_level(void); | ||
| 39 | 40 | ||
| 40 | #endif | 41 | #endif |
diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index f06abaf7f..9edcc42a0 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c | |||
| @@ -357,9 +357,11 @@ static bool command_common(uint8_t code) | |||
| 357 | clear_keyboard(); // clear to prevent stuck keys | 357 | clear_keyboard(); // clear to prevent stuck keys |
| 358 | print("\n\nJumping to bootloader... "); | 358 | print("\n\nJumping to bootloader... "); |
| 359 | #ifdef AUDIO_ENABLE | 359 | #ifdef AUDIO_ENABLE |
| 360 | stop_all_notes(); | ||
| 360 | play_goodbye_tone(); | 361 | play_goodbye_tone(); |
| 362 | #else | ||
| 363 | _delay_ms(1000); | ||
| 361 | #endif | 364 | #endif |
| 362 | _delay_ms(1000); | ||
| 363 | bootloader_jump(); // not return | 365 | bootloader_jump(); // not return |
| 364 | break; | 366 | break; |
| 365 | 367 | ||
diff --git a/tmk_core/common/nodebug.h b/tmk_core/common/nodebug.h index 93309ada4..5e18656e5 100644 --- a/tmk_core/common/nodebug.h +++ b/tmk_core/common/nodebug.h | |||
| @@ -16,10 +16,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #ifndef NODEBUG_H | 18 | #ifndef NODEBUG_H |
| 19 | #define NODEBUG_H 1 | 19 | #define NODEBUG_H |
| 20 | 20 | ||
| 21 | #define NO_DEBUG | 21 | #ifndef NO_DEBUG |
| 22 | #include "debug.h" | 22 | #define NO_DEBUG |
| 23 | #undef NO_DEBUG | 23 | #include "debug.h" |
| 24 | #undef NO_DEBUG | ||
| 25 | #else | ||
| 26 | #include "debug.h" | ||
| 27 | #endif | ||
| 24 | 28 | ||
| 25 | #endif | 29 | #endif |
