|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|