mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-17 13:12:08 +00:00
* Add Super Alt-Tab macro example as module * Make module more configurable * remove unneeded comments Co-authored-by: jack <jack@pngu.org> * Update modules/qmk/super_alt_tab/super_alt_tab.c Co-authored-by: Nick Brassel <nick@tzarc.org> --------- Co-authored-by: jack <jack@pngu.org> Co-authored-by: Nick Brassel <nick@tzarc.org>
51 lines
1.8 KiB
C
51 lines
1.8 KiB
C
// Copyright 2025 Christopher Courtney, aka Drashna Jael're (@drashna)
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#include QMK_KEYBOARD_H
|
|
|
|
ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0);
|
|
|
|
static bool is_alt_tab_active = false;
|
|
static uint16_t alt_tab_timer = 0;
|
|
|
|
#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT
|
|
# define COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT 1000
|
|
#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT
|
|
#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER
|
|
# define COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER MOD_LALT
|
|
#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER
|
|
#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_KEY
|
|
# define COMMUNITY_MODULE_SUPER_ALT_TAB_KEY KC_TAB
|
|
#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_KEY
|
|
|
|
bool process_record_super_alt_tab(uint16_t keycode, keyrecord_t *record) {
|
|
if (!process_record_super_alt_tab_kb(keycode, record)) {
|
|
return false;
|
|
}
|
|
|
|
switch (keycode) { // This will do most of the grunt work with the keycodes.
|
|
case COMMUNITY_MODULE_SUPER_ALT_TAB:
|
|
if (record->event.pressed) {
|
|
if (!is_alt_tab_active) {
|
|
is_alt_tab_active = true;
|
|
register_mods(COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER);
|
|
}
|
|
alt_tab_timer = timer_read();
|
|
register_code(COMMUNITY_MODULE_SUPER_ALT_TAB_KEY);
|
|
} else {
|
|
unregister_code(COMMUNITY_MODULE_SUPER_ALT_TAB_KEY);
|
|
}
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void housekeeping_task_super_alt_tab(void) {
|
|
if (is_alt_tab_active) {
|
|
if (timer_elapsed(alt_tab_timer) > COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT) {
|
|
unregister_mods(COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER);
|
|
is_alt_tab_active = false;
|
|
}
|
|
}
|
|
}
|