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 |