mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-16 04:41:28 +00:00
Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
commit
0be239b45c
10
modules/qmk/super_alt_tab/qmk_module.json
Normal file
10
modules/qmk/super_alt_tab/qmk_module.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"module_name": "Super Alt Tab",
|
||||
"maintainer": "QMK Maintainers",
|
||||
"keycodes": [
|
||||
{
|
||||
"key": "COMMUNITY_MODULE_SUPER_ALT_TAB",
|
||||
"aliases": ["CM_S_AT"]
|
||||
}
|
||||
]
|
||||
}
|
50
modules/qmk/super_alt_tab/super_alt_tab.c
Normal file
50
modules/qmk/super_alt_tab/super_alt_tab.c
Normal file
@ -0,0 +1,50 @@
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user