[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
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