diff options
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/audio/audio.c | 27 | ||||
-rw-r--r-- | quantum/audio/audio.h | 6 | ||||
-rw-r--r-- | quantum/pointing_device/pointing_device_auto_mouse.c | 20 | ||||
-rw-r--r-- | quantum/pointing_device/pointing_device_auto_mouse.h | 4 |
4 files changed, 52 insertions, 5 deletions
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index c1a1500493..b2611c5f09 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -20,6 +20,7 @@ #include "debug.h" #include "wait.h" #include "util.h" +#include "gpio.h" /* audio system: * @@ -121,6 +122,32 @@ static bool audio_initialized = false; static bool audio_driver_stopped = true; audio_config_t audio_config; +#ifndef AUDIO_POWER_CONTROL_PIN_ON_STATE +# define AUDIO_POWER_CONTROL_PIN_ON_STATE 1 +#endif + +void audio_driver_initialize(void) { +#ifdef AUDIO_POWER_CONTROL_PIN + gpio_set_pin_output_push_pull(AUDIO_POWER_CONTROL_PIN); + gpio_write_pin(AUDIO_POWER_CONTROL_PIN, !AUDIO_POWER_CONTROL_PIN_ON_STATE); +#endif + audio_driver_initialize_impl(); +} + +void audio_driver_stop(void) { + audio_driver_stop_impl(); +#ifdef AUDIO_POWER_CONTROL_PIN + gpio_write_pin(AUDIO_POWER_CONTROL_PIN, !AUDIO_POWER_CONTROL_PIN_ON_STATE); +#endif +} + +void audio_driver_start(void) { +#ifdef AUDIO_POWER_CONTROL_PIN + gpio_write_pin(AUDIO_POWER_CONTROL_PIN, AUDIO_POWER_CONTROL_PIN_ON_STATE); +#endif + audio_driver_start_impl(); +} + void eeconfig_update_audio_current(void) { eeconfig_update_audio(audio_config.raw); } diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index eb0bedc6f9..054331d6f3 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -215,9 +215,9 @@ void audio_startup(void); // hardware interface // implementation in the driver_avr/arm_* respective parts -void audio_driver_initialize(void); -void audio_driver_start(void); -void audio_driver_stop(void); +void audio_driver_initialize_impl(void); +void audio_driver_start_impl(void); +void audio_driver_stop_impl(void); /** * @brief get the number of currently active tones diff --git a/quantum/pointing_device/pointing_device_auto_mouse.c b/quantum/pointing_device/pointing_device_auto_mouse.c index 1b11fffedb..d9f924e258 100644 --- a/quantum/pointing_device/pointing_device_auto_mouse.c +++ b/quantum/pointing_device/pointing_device_auto_mouse.c @@ -45,7 +45,7 @@ static inline bool layer_hold_check(void) { } /* check all layer activation criteria */ -static inline bool is_auto_mouse_active(void) { +bool is_auto_mouse_active(void) { return auto_mouse_context.status.is_activated || auto_mouse_context.status.mouse_key_tracker || layer_hold_check(); } @@ -99,6 +99,15 @@ bool get_auto_mouse_toggle(void) { } /** + * @brief get key tracker value + * + * @return bool of current layer_toggled state + */ +int8_t get_auto_mouse_key_tracker(void) { + return auto_mouse_context.status.mouse_key_tracker; +} + +/** * @brief Reset auto mouse context * * Clear timers and status @@ -164,6 +173,15 @@ void set_auto_mouse_debounce(uint8_t debounce) { } /** + * @brief Changes the timeout for the mouse auto layer to be disabled + * + * @param key_tracker + */ +void set_auto_mouse_key_tracker(int8_t key_tracker) { + auto_mouse_context.status.mouse_key_tracker = key_tracker; +} + +/** * @brief toggle mouse layer setting * * Change state of local layer_toggled bool meant to track when the mouse layer is toggled on by other means diff --git a/quantum/pointing_device/pointing_device_auto_mouse.h b/quantum/pointing_device/pointing_device_auto_mouse.h index 904f18b68e..a596c065a3 100644 --- a/quantum/pointing_device/pointing_device_auto_mouse.h +++ b/quantum/pointing_device/pointing_device_auto_mouse.h @@ -81,9 +81,11 @@ void set_auto_mouse_timeout(uint16_t timeout); // set l uint16_t get_auto_mouse_timeout(void); // get layer timeout void set_auto_mouse_debounce(uint8_t debounce); // set debounce uint8_t get_auto_mouse_debounce(void); // get debounce +void set_auto_mouse_key_tracker(int8_t key_tracker); // set key tracker +int8_t get_auto_mouse_key_tracker(void); // get key tracker void auto_mouse_layer_off(void); // disable target layer if appropriate (DO NOT USE in layer_state_set stack!!) layer_state_t remove_auto_mouse_layer(layer_state_t state, bool force); // remove auto mouse target layer from state if appropriate (can be forced) - +bool is_auto_mouse_active(void); // check if target layer is active /* ----------For custom pointing device activation----------------------------------------------------------- */ bool auto_mouse_activation(report_mouse_t mouse_report); // handles pointing device trigger conditions for target layer activation (overwritable) |