[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
|
@ -659,5 +659,7 @@ std::map<uint16_t, std::string> KEYCODE_ID_TABLE = {
|
|||
{QK_AUTOCORRECT_ON, "QK_AUTOCORRECT_ON"},
|
||||
{QK_AUTOCORRECT_OFF, "QK_AUTOCORRECT_OFF"},
|
||||
{QK_AUTOCORRECT_TOGGLE, "QK_AUTOCORRECT_TOGGLE"},
|
||||
{QK_TRI_LAYER_LOWER, "QK_TRI_LAYER_LOWER"},
|
||||
{QK_TRI_LAYER_UPPER, "QK_TRI_LAYER_UPPER"},
|
||||
{SAFE_RANGE, "SAFE_RANGE"},
|
||||
};
|
||||
|
|
6
tests/tri_layer/config.h
Normal file
6
tests/tri_layer/config.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "test_common.h"
|
8
tests/tri_layer/test.mk
Normal file
8
tests/tri_layer/test.mk
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# --------------------------------------------------------------------------------
|
||||
# Keep this file, even if it is empty, as a marker that this folder contains tests
|
||||
# --------------------------------------------------------------------------------
|
||||
|
||||
TRI_LAYER_ENABLE = yes
|
103
tests/tri_layer/test_tri_layer.cpp
Normal file
103
tests/tri_layer/test_tri_layer.cpp
Normal file
|
@ -0,0 +1,103 @@
|
|||
// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "test_common.hpp"
|
||||
|
||||
using testing::_;
|
||||
using testing::InSequence;
|
||||
|
||||
class TriLayer : public TestFixture {};
|
||||
|
||||
TEST_F(TriLayer, TriLayerLowerTest) {
|
||||
TestDriver driver;
|
||||
KeymapKey lower_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_LOWER};
|
||||
|
||||
set_keymap({lower_layer_key, KeymapKey{1, 0, 0, KC_TRNS}});
|
||||
|
||||
/* Press Lower. */
|
||||
EXPECT_NO_REPORT(driver);
|
||||
lower_layer_key.press();
|
||||
run_one_scan_loop();
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
|
||||
/* Release Lower. */
|
||||
EXPECT_NO_REPORT(driver);
|
||||
lower_layer_key.release();
|
||||
run_one_scan_loop();
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(TriLayer, TriLayerUpperTest) {
|
||||
TestDriver driver;
|
||||
KeymapKey upper_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_UPPER};
|
||||
|
||||
set_keymap({upper_layer_key, KeymapKey{2, 0, 0, KC_TRNS}});
|
||||
|
||||
/* Press Raise. */
|
||||
EXPECT_NO_REPORT(driver);
|
||||
upper_layer_key.press();
|
||||
run_one_scan_loop();
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
|
||||
/* Release Raise. */
|
||||
EXPECT_NO_REPORT(driver);
|
||||
upper_layer_key.release();
|
||||
run_one_scan_loop();
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
||||
|
||||
TEST_F(TriLayer, TriLayerAdjustTest) {
|
||||
TestDriver driver;
|
||||
KeymapKey lower_layer_key = KeymapKey{0, 0, 0, QK_TRI_LAYER_LOWER};
|
||||
KeymapKey upper_layer_key = KeymapKey{0, 1, 0, QK_TRI_LAYER_UPPER};
|
||||
|
||||
set_keymap({
|
||||
upper_layer_key,
|
||||
lower_layer_key,
|
||||
KeymapKey{1, 0, 0, KC_TRNS},
|
||||
KeymapKey{1, 1, 0, KC_TRNS},
|
||||
KeymapKey{2, 0, 0, KC_TRNS},
|
||||
KeymapKey{2, 1, 0, KC_TRNS},
|
||||
KeymapKey{3, 0, 0, KC_TRNS},
|
||||
KeymapKey{3, 1, 0, KC_TRNS},
|
||||
});
|
||||
|
||||
/* Press Lower, then upper, and release upper and then lower. */
|
||||
EXPECT_NO_REPORT(driver);
|
||||
lower_layer_key.press();
|
||||
run_one_scan_loop();
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
|
||||
upper_layer_key.press();
|
||||
run_one_scan_loop();
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
|
||||
lower_layer_key.release();
|
||||
run_one_scan_loop();
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_TRUE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
|
||||
upper_layer_key.release();
|
||||
run_one_scan_loop();
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_lower_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_upper_layer()));
|
||||
EXPECT_FALSE(layer_state_is(get_tri_layer_adjust_layer()));
|
||||
VERIFY_AND_CLEAR(driver);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue