diff options
| -rw-r--r-- | quantum/audio/audio.h | 3 | ||||
| -rw-r--r-- | quantum/process_keycode/process_clicky.c | 60 | ||||
| -rw-r--r-- | quantum/process_keycode/process_clicky.h | 9 |
3 files changed, 53 insertions, 19 deletions
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index da09b2bcd..8136c5b25 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h | |||
| @@ -40,7 +40,8 @@ typedef union { | |||
| 40 | uint8_t raw; | 40 | uint8_t raw; |
| 41 | struct { | 41 | struct { |
| 42 | bool enable :1; | 42 | bool enable :1; |
| 43 | uint8_t level :7; | 43 | bool clicky_enable :1; |
| 44 | uint8_t level :6; | ||
| 44 | }; | 45 | }; |
| 45 | } audio_config_t; | 46 | } audio_config_t; |
| 46 | 47 | ||
diff --git a/quantum/process_keycode/process_clicky.c b/quantum/process_keycode/process_clicky.c index bd2f1b3b3..b3c8d890e 100644 --- a/quantum/process_keycode/process_clicky.c +++ b/quantum/process_keycode/process_clicky.c | |||
| @@ -38,29 +38,53 @@ void clicky_play(void) { | |||
| 38 | PLAY_SONG(clicky_song); | 38 | PLAY_SONG(clicky_song); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | void clicky_freq_up(void) { | ||
| 42 | float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR; | ||
| 43 | if (new_freq < AUDIO_CLICKY_FREQ_MAX) { | ||
| 44 | clicky_freq = new_freq; | ||
| 45 | } | ||
| 46 | } | ||
| 47 | |||
| 48 | void clicky_freq_down(void) { | ||
| 49 | float new_freq = clicky_freq / AUDIO_CLICKY_FREQ_FACTOR; | ||
| 50 | if (new_freq > AUDIO_CLICKY_FREQ_MIN) { | ||
| 51 | clicky_freq = new_freq; | ||
| 52 | } | ||
| 53 | } | ||
| 54 | |||
| 55 | void clicky_freq_reset(void) { | ||
| 56 | clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; | ||
| 57 | } | ||
| 58 | |||
| 59 | void clicky_freq_toggle(void) { | ||
| 60 | audio_config.clicky_enable ^= 1; | ||
| 61 | eeconfig_update_audio(audio_config.raw); | ||
| 62 | } | ||
| 63 | |||
| 64 | void clicky_freq_on(void) { | ||
| 65 | audio_config.clicky_enable = 1; | ||
| 66 | eeconfig_update_audio(audio_config.raw); | ||
| 67 | } | ||
| 68 | |||
| 69 | void clicky_freq_off(void) { | ||
| 70 | audio_config.clicky_enable = 0; | ||
| 71 | eeconfig_update_audio(audio_config.raw); | ||
| 72 | } | ||
| 73 | |||
| 74 | bool is_clicky_on(void) { | ||
| 75 | return (audio_config.clicky_enable != 0); | ||
| 76 | } | ||
| 77 | |||
| 41 | bool process_clicky(uint16_t keycode, keyrecord_t *record) { | 78 | bool process_clicky(uint16_t keycode, keyrecord_t *record) { |
| 42 | if (keycode == CLICKY_TOGGLE && record->event.pressed) { | 79 | if (keycode == CLICKY_TOGGLE && record->event.pressed) { clicky_freq_toggle(); } |
| 43 | audio_config.clicky ^= 1; | ||
| 44 | eeconfig_update_audio(audio_config.raw); | ||
| 45 | } | ||
| 46 | 80 | ||
| 47 | if (keycode == CLICKY_RESET && record->event.pressed) { clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; } | 81 | if (keycode == CLICKY_RESET && record->event.pressed) { clicky_freq_reset(); } |
| 48 | 82 | ||
| 49 | if (keycode == CLICKY_UP && record->event.pressed) { | 83 | if (keycode == CLICKY_UP && record->event.pressed) { clicky_freq_up(); } |
| 50 | float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR; | 84 | if (keycode == CLICKY_DOWN && record->event.pressed) { clicky_freq_down(); } |
| 51 | if (new_freq < AUDIO_CLICKY_FREQ_MAX) { | ||
| 52 | clicky_freq = new_freq; | ||
| 53 | } | ||
| 54 | } | ||
| 55 | if (keycode == CLICKY_DOWN && record->event.pressed) { | ||
| 56 | float new_freq = clicky_freq / AUDIO_CLICKY_FREQ_FACTOR; | ||
| 57 | if (new_freq > AUDIO_CLICKY_FREQ_MIN) { | ||
| 58 | clicky_freq = new_freq; | ||
| 59 | } | ||
| 60 | } | ||
| 61 | 85 | ||
| 62 | 86 | ||
| 63 | if ( audio_config.clicky ) { | 87 | if ( audio_config.clicky_enable ) { |
| 64 | if (record->event.pressed) { | 88 | if (record->event.pressed) { |
| 65 | clicky_play();; | 89 | clicky_play();; |
| 66 | } | 90 | } |
diff --git a/quantum/process_keycode/process_clicky.h b/quantum/process_keycode/process_clicky.h index e274af56f..6ee3cc5d9 100644 --- a/quantum/process_keycode/process_clicky.h +++ b/quantum/process_keycode/process_clicky.h | |||
| @@ -4,4 +4,13 @@ | |||
| 4 | void clicky_play(void); | 4 | void clicky_play(void); |
| 5 | bool process_clicky(uint16_t keycode, keyrecord_t *record); | 5 | bool process_clicky(uint16_t keycode, keyrecord_t *record); |
| 6 | 6 | ||
| 7 | void clicky_freq_up(void); | ||
| 8 | void clicky_freq_down(void); | ||
| 9 | void clicky_freq_reset(void); | ||
| 10 | void clicky_freq_toggle(void); | ||
| 11 | void clicky_freq_on(void); | ||
| 12 | void clicky_freq_off(void); | ||
| 13 | |||
| 14 | bool is_clicky_on(void); | ||
| 15 | |||
| 7 | #endif | 16 | #endif |
