[Core] Tri Layer Keys (#19795)
Co-authored-by: wilba <wilba@wilba.tech> Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com> Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
parent
4002843797
commit
fe02abc479
19 changed files with 377 additions and 15 deletions
30
quantum/process_keycode/process_tri_layer.c
Normal file
30
quantum/process_keycode/process_tri_layer.c
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "process_tri_layer.h"
|
||||
#include "tri_layer.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
bool process_tri_layer(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QK_TRI_LAYER_LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(get_tri_layer_lower_layer());
|
||||
update_tri_layer(get_tri_layer_lower_layer(), get_tri_layer_upper_layer(), get_tri_layer_adjust_layer());
|
||||
} else {
|
||||
layer_off(get_tri_layer_lower_layer());
|
||||
update_tri_layer(get_tri_layer_lower_layer(), get_tri_layer_upper_layer(), get_tri_layer_adjust_layer());
|
||||
}
|
||||
return false;
|
||||
case QK_TRI_LAYER_UPPER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(get_tri_layer_upper_layer());
|
||||
update_tri_layer(get_tri_layer_lower_layer(), get_tri_layer_upper_layer(), get_tri_layer_adjust_layer());
|
||||
} else {
|
||||
layer_off(get_tri_layer_upper_layer());
|
||||
update_tri_layer(get_tri_layer_lower_layer(), get_tri_layer_upper_layer(), get_tri_layer_adjust_layer());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
16
quantum/process_keycode/process_tri_layer.h
Normal file
16
quantum/process_keycode/process_tri_layer.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "action.h"
|
||||
|
||||
/**
|
||||
* @brief Handles tri layer behavior
|
||||
*
|
||||
* @param keycode the keycode
|
||||
* @param record the key record structure
|
||||
* @return true continue handling keycodes
|
||||
* @return false stop handling keycodes
|
||||
*/
|
||||
bool process_tri_layer(uint16_t keycode, keyrecord_t *record);
|
Loading…
Add table
Add a link
Reference in a new issue