|
|
|
|
@ -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
|
|
|
|
|
|