diff --git a/tests/plugins/Qukeys/basic/common.h b/tests/plugins/Qukeys/basic/common.h index 71b91a3d..2295c88a 100644 --- a/tests/plugins/Qukeys/basic/common.h +++ b/tests/plugins/Qukeys/basic/common.h @@ -1,5 +1,4 @@ // -*- mode: c++ -*- - /* Kaleidoscope - Firmware for computer input devices * Copyright (C) 2020 Keyboard.io, Inc. * @@ -19,6 +18,10 @@ #pragma once #include +#include +#include + +#include "keymap.h" namespace kaleidoscope { namespace testing { @@ -27,5 +30,5 @@ constexpr uint16_t QUKEYS_HOLD_TIMEOUT = 200; constexpr uint8_t QUKEYS_OVERLAP_THRESHOLD = 90; constexpr uint8_t QUKEYS_MINIMUM_HOLD_TIME = 10; -} -} +} // namespace testing +} // namespace kaleidoscope diff --git a/tests/plugins/Qukeys/basic/keymap-overrides.h b/tests/plugins/Qukeys/basic/keymap-overrides.h new file mode 100644 index 00000000..c1bfe699 --- /dev/null +++ b/tests/plugins/Qukeys/basic/keymap-overrides.h @@ -0,0 +1,44 @@ +// -*- mode: c++ -*- +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2020 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +#include +#include +#include "testing/keymap-defaults.h" + +#include + +namespace kaleidoscope { +namespace testing { +namespace keymap { + +class Keymap : public KeymapDefaults { + public: + // Layer 0 + static constexpr Key key_0AA = Key_A; + static constexpr Key key_0AB = Key_F; + static constexpr Key key_0AC = Key_X; +}; + +constexpr KeyAddr key_addr_A = addr_AA; +constexpr KeyAddr key_addr_F = addr_AB; +constexpr KeyAddr key_addr_X = addr_AC; + +} // namespace keymap +} // namespace testing +} // namespace kaleidoscope diff --git a/tests/plugins/Qukeys/basic/keymap.h b/tests/plugins/Qukeys/basic/keymap.h new file mode 100644 index 00000000..1a187167 --- /dev/null +++ b/tests/plugins/Qukeys/basic/keymap.h @@ -0,0 +1,31 @@ +// -*- mode: c++ -*- +/* Kaleidoscope - Firmware for computer input devices + * Copyright (C) 2020 Keyboard.io, Inc. + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#pragma once + +// Default key values to be used in sketches are defined from the +// `keymap-defaults.h` file, provided by Kaleidoscope. +#include "testing/keymap-defaults.h" + +// For keys of interest, the values can be overridden by defining them in the +// `keymap-overrides.h` file, in this directory. +#include "keymap-overrides.h" + +// Finally, we include this file so we can refer to key values in the keymap +// more briefly (`key_0AA` vs `Keymap::key_0AA`, both in the +// `kaleidoscope::testing::keymap` namespace). +#include "testing/keymap-aliases.inc" diff --git a/tests/plugins/Qukeys/basic/sketch.ino b/tests/plugins/Qukeys/basic/sketch.ino index a1f3ab0a..d652809a 100644 --- a/tests/plugins/Qukeys/basic/sketch.ino +++ b/tests/plugins/Qukeys/basic/sketch.ino @@ -19,72 +19,18 @@ #include #include "./common.h" +#include "testing/default-layers.h" -enum { MACRO_TOGGLE_QUKEYS }; +using namespace kaleidoscope::testing::keymap; -// *INDENT-OFF* -KEYMAPS( - [0] = KEYMAP_STACKED - ( - Key_NoKey, Key_1, Key_2, Key_3, Key_4, Key_5, Key_NoKey, - Key_Backtick, Key_Q, Key_W, Key_E, Key_R, Key_T, Key_Tab, - Key_PageUp, Key_A, Key_S, Key_D, Key_F, Key_G, - Key_PageDown, Key_Z, Key_X, Key_C, Key_V, Key_B, Key_Escape, +KEYMAPS(LAYER_0); - Key_LeftControl, Key_Backspace, Key_LeftGui, Key_LeftShift, - Key_Q, - - M(MACRO_TOGGLE_QUKEYS), Key_6, Key_7, Key_8, Key_9, Key_0, Key_skip, - Key_Enter, Key_Y, Key_U, Key_I, Key_O, Key_P, Key_Equals, - Key_H, SFT_T(J), CTL_T(K), ALT_T(L), GUI_T(Semicolon), Key_Quote, - Key_skip, Key_N, Key_M, Key_Comma, Key_Period, Key_Slash, Key_Minus, - - Key_RightShift, Key_RightAlt, Key_Spacebar, Key_RightControl, - LT(1,E) - ), - [1] = KEYMAP_STACKED - ( - ___, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, - Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, - Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, - Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, - - Key_1, Key_2, Key_3, Key_4, - ___, - - - ___, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, - Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, - Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, - Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, - - Key_1, Key_2, Key_3, Key_4, - ___ - ), -) -// *INDENT-ON* - -// Defining a macro (on the "any" key: see above) to toggle Qukeys on and off -const macro_t *macroAction(uint8_t macro_index, uint8_t key_state) { - switch (macro_index) { - case MACRO_TOGGLE_QUKEYS: - if (keyToggledOn(key_state)) - Qukeys.toggle(); - break; - } - return MACRO_NONE; -} - -// Use Qukeys -KALEIDOSCOPE_INIT_PLUGINS(Qukeys, Macros); +KALEIDOSCOPE_INIT_PLUGINS(Qukeys); void setup() { QUKEYS( - kaleidoscope::plugin::Qukey(0, KeyAddr(2, 1), Key_LeftGui), // A/cmd - kaleidoscope::plugin::Qukey(0, KeyAddr(2, 2), Key_LeftAlt), // S/alt - kaleidoscope::plugin::Qukey(0, KeyAddr(2, 3), Key_LeftControl), // D/ctrl - kaleidoscope::plugin::Qukey(0, KeyAddr(2, 4), Key_LeftShift), // F/shift - kaleidoscope::plugin::Qukey(0, KeyAddr(3, 6), ShiftToLayer(1)) // Q/layer-shift (on `fn`) + kaleidoscope::plugin::Qukey(0, key_addr_A, Key_LeftGui), // A/cmd + kaleidoscope::plugin::Qukey(0, key_addr_F, Key_LeftShift), // F/shift ) Qukeys.setHoldTimeout(kaleidoscope::testing::QUKEYS_HOLD_TIMEOUT); Qukeys.setOverlapThreshold(kaleidoscope::testing::QUKEYS_OVERLAP_THRESHOLD); diff --git a/tests/plugins/Qukeys/basic/test/testcase.cpp b/tests/plugins/Qukeys/basic/test/testcase.cpp index a0d59482..9121b403 100644 --- a/tests/plugins/Qukeys/basic/test/testcase.cpp +++ b/tests/plugins/Qukeys/basic/test/testcase.cpp @@ -24,11 +24,7 @@ namespace kaleidoscope { namespace testing { namespace { -constexpr KeyAddr key_addr_A{2, 1}; -constexpr KeyAddr key_addr_S{2, 2}; -constexpr KeyAddr key_addr_D{2, 3}; -constexpr KeyAddr key_addr_F{2, 4}; -constexpr KeyAddr key_addr_X{3, 2}; +using namespace kaleidoscope::testing::keymap; class QukeysBasic : public VirtualDeviceTest {};