37 lines
1.1 KiB
C
37 lines
1.1 KiB
C
|
/**
|
||
|
* Cool Function where a single key does ALT+TAB
|
||
|
* From: https://beta.docs.qmk.fm/features/feature_macros#super-alt-tab
|
||
|
*/
|
||
|
bool is_alt_tab_active = false; // ADD this near the begining of keymap.c
|
||
|
uint16_t alt_tab_timer = 0; // we will be using them soon.
|
||
|
|
||
|
enum custom_keycodes { // Make sure have the awesome keycode ready
|
||
|
ALT_TAB = SAFE_RANGE,
|
||
|
};
|
||
|
|
||
|
// key processing
|
||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||
|
switch (keycode) { // This will do most of the grunt work with the keycodes.
|
||
|
case ALT_TAB:
|
||
|
if (record->event.pressed) {
|
||
|
if (!is_alt_tab_active) {
|
||
|
is_alt_tab_active = true;
|
||
|
register_code(KC_LALT);
|
||
|
}
|
||
|
alt_tab_timer = timer_read();
|
||
|
register_code(KC_TAB);
|
||
|
} else {
|
||
|
unregister_code(KC_TAB);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
// The very important timer.
|
||
|
void matrix_scan_user(void) {
|
||
|
if (is_alt_tab_active && timer_elapsed(alt_tab_timer) > 1000) {
|
||
|
unregister_code(KC_LALT);
|
||
|
is_alt_tab_active = false;
|
||
|
}
|
||
|
}
|