|
|
@ -147,12 +147,16 @@ void clear_oneshot_swaphands(void) { |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
void set_oneshot_layer(uint8_t layer, uint8_t state) { |
|
|
|
oneshot_layer_data = layer << 3 | state; |
|
|
|
layer_on(layer); |
|
|
|
if (!keymap_config.oneshot_disable) { |
|
|
|
oneshot_layer_data = layer << 3 | state; |
|
|
|
layer_on(layer); |
|
|
|
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) |
|
|
|
oneshot_layer_time = timer_read(); |
|
|
|
oneshot_layer_time = timer_read(); |
|
|
|
# endif |
|
|
|
oneshot_layer_changed_kb(get_oneshot_layer()); |
|
|
|
oneshot_layer_changed_kb(get_oneshot_layer()); |
|
|
|
} else { |
|
|
|
layer_on(layer); |
|
|
|
} |
|
|
|
} |
|
|
|
/** \brief Reset oneshot layer |
|
|
|
* |
|
|
@ -172,7 +176,7 @@ void reset_oneshot_layer(void) { |
|
|
|
void clear_oneshot_layer_state(oneshot_fullfillment_t state) { |
|
|
|
uint8_t start_state = oneshot_layer_data; |
|
|
|
oneshot_layer_data &= ~state; |
|
|
|
if (!get_oneshot_layer_state() && start_state != oneshot_layer_data) { |
|
|
|
if ((!get_oneshot_layer_state() && start_state != oneshot_layer_data) || keymap_config.oneshot_disable) { |
|
|
|
layer_off(get_oneshot_layer()); |
|
|
|
reset_oneshot_layer(); |
|
|
|
} |
|
|
@ -182,6 +186,39 @@ void clear_oneshot_layer_state(oneshot_fullfillment_t state) { |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
bool is_oneshot_layer_active(void) { return get_oneshot_layer_state(); } |
|
|
|
|
|
|
|
/** \brief set oneshot |
|
|
|
* |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
void oneshot_set(bool active) { |
|
|
|
if (keymap_config.oneshot_disable != active) { |
|
|
|
keymap_config.oneshot_disable = active; |
|
|
|
eeconfig_update_keymap(keymap_config.raw); |
|
|
|
dprintf("Oneshot: active: %d\n", active); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** \brief toggle oneshot |
|
|
|
* |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
void oneshot_toggle(void) { oneshot_set(!keymap_config.oneshot_disable); } |
|
|
|
|
|
|
|
/** \brief enable oneshot |
|
|
|
* |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
void oneshot_enable(void) { oneshot_set(true); } |
|
|
|
|
|
|
|
/** \brief disable oneshot |
|
|
|
* |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
void oneshot_disable(void) { oneshot_set(false); } |
|
|
|
|
|
|
|
bool is_oneshot_enabled(void) { return keymap_config.oneshot_disable; } |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
/** \brief Send keyboard report |
|
|
@ -321,14 +358,17 @@ void del_oneshot_mods(uint8_t mods) { |
|
|
|
* FIXME: needs doc |
|
|
|
*/ |
|
|
|
void set_oneshot_mods(uint8_t mods) { |
|
|
|
if (oneshot_mods != mods) { |
|
|
|
if (!keymap_config.oneshot_disable) { |
|
|
|
if (oneshot_mods != mods) { |
|
|
|
# if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) |
|
|
|
oneshot_time = timer_read(); |
|
|
|
oneshot_time = timer_read(); |
|
|
|
# endif |
|
|
|
oneshot_mods = mods; |
|
|
|
oneshot_mods_changed_kb(mods); |
|
|
|
oneshot_mods = mods; |
|
|
|
oneshot_mods_changed_kb(mods); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** \brief clear oneshot mods |
|
|
|
* |
|
|
|
* FIXME: needs doc |
|
|
|