diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index 93f2cc89..da28bef9 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -983,38 +983,6 @@ Older versions of the plugin were based on `Key` values; OneShot is now based on `KeyAddr` coordinates instead, in order to improve reliability and functionality. -The following deprecated functions and variables will be removed after -**2021-04-31**. - -#### Deprecated functions - -- `OneShot.inject(key, key_state)`: This `Key`-based function still works, but - because OneShot keys are now required to have a valid `KeyAddr`, it will now - look for an idle key, and use that, masking whatever value was mapped to that - key. Most of the reasons for using this function are better addressed by using - the newer features of the plugin, such as automatic one-shot modifiers. Use is - very strongly discouraged. -- `OneShot.isActive(key)`: This `Key`-based function no longer makes sense now - that OneShot is `KeyAddr`-based. There is a `OneShot.isActive(key_addr)` - function that should be used instead. The deprecated function still works, but - its use is discouraged. -- `OneShot.isSticky(key)`: This `Key`-based function no longer makes sense now - that OneShot is `KeyAddr`-based. There is a `OneShot.isSticky(key_addr)` - function that should be used instead. The deprecated function still works, but - its use is discouraged. -- `OneShot.isPressed()`: This function no longer has any reason for existing. In - older versions, the Escape-OneShot companion plugin used it to solve a problem - that no longer exists. It now always returns `false`. -- `OneShot.isModifierActive(key)`: This function still works, but is not - perfectly reliable, because it now returns positive results for keys other - than OneShot modifiers. It should not be used. - -#### Deprecated variables - -- `OneShot.time_out`: Use `OneShot.setTimeout()` instead. -- `OneShot.hold_time_out`: Use `OneShot.setHoldTimeout()` instead. -- `OneShot.double_tap_time_out`: Use `OneShot.setDoubleTapTimeout()` instead. - ### Qukeys Older versions of the plugin used `row` and `col` indexing for defining `Qukey` @@ -1092,6 +1060,28 @@ Second, the `Layer.eventHandler()` function has been deprecated. There wasn't mu # Removed APIs +#### OneShot public variables + +The following deprecated `OneShot` public variables were removed on **2022-03-03**. Please use the following methods instead: + + - For `OneShot.time_out`, use `OneShot.setTimeout(ms)` + - For `OneShot.hold_time_out`, use `OneShot.setHoldTimeout(ms)` + - For `OneShot.double_tap_time_out`, use `OneShot.setDoubleTapTimeout(ms)` + +#### Deprecated OneShot API functions + +OneShot was completely rewritten in early 2021, and now is based on `KeyAddr` values (as if it keeps physical keys pressed) rather than `Key` values (with no corresponding physical key location). This allows it to operate on any `Key` value, not just modifiers and layer shifts. + +The deprecated `OneShot.inject(key, key_state)` function was removed on **2022-03-03**. Its use was very strongly discouraged, and is now unavailable. See below for alternatives. + +The deprecated `OneShot.isActive(key)` function was removed on **2022-03-03**. There is a somewhat equivalent `OneShot.isActive(KeyAddr addr)` function to use when the address of a key that might be currently held active by OneShot is known. Any code that needs information about active keys is better served by not querying OneShot specifically. + +The deprecated `OneShot.isSticky(key)` function was removed on **2022-03-03**. There is a somewhat equivalent `OneShot.isStick(KeyAddr addr)` function to use when the address of a key that may be in the one-shot sticky state is known. + +The deprecated `OneShot.isPressed()` function was removed on **2022-03-03**. It was already devoid of functionality, and references to it can be safely removed. + +The deprecated `OneShot.isModifierActive(key)` function was removed on **2022-03-03**. OneShot modifiers are now indistinguishable from other modifier keys, so it is better for client code to do a more general search of `live_keys` or to use another mechanism for tracking this state. + #### `HostPowerManagement.enableWakeup()` This deprecated function was removed on **2022-03-03**. The firmware now supports wakeup by default, so any references to it can be safely removed. diff --git a/plugins/Kaleidoscope-OneShot/README.md b/plugins/Kaleidoscope-OneShot/README.md index 0b3e2725..c103a8c0 100644 --- a/plugins/Kaleidoscope-OneShot/README.md +++ b/plugins/Kaleidoscope-OneShot/README.md @@ -275,42 +275,6 @@ based on `Key` values; it has since be rewritten to be based on > not a one-shot key is still pressed any more. This function was > mainly used by LED-ActiveModColor, which no longer needs it. -## Plugin properties **[DEPRECATED]** - -Along with the methods listed above, the `OneShot` object has the -following properties, too. [Note: these have all been deprecated, -please use the `.set*Timeout()` methods above instead.] - -### `.time_out` - -> Set this property to the number of milliseconds to wait before timing out and -> cancelling the one-shot effect (unless interrupted or cancelled before by any -> other means). -> -> Defaults to 2500. - -### `.hold_time_out` - -> Set this property to the number of milliseconds to wait before considering a -> held one-shot key as intentionally held. In this case, the one-shot effect -> will not trigger when the key is released. In other words, holding a one-shot -> key at least this long, and then releasing it, will not trigger the one-shot -> effect. -> -> Defaults to 200. - -### `.double_tap_time_out` - -> Set this property to the number of milliseconds within which a second -> uninterrupted tap of the same one-shot key will be treated as a sticky-tap. -> Only takes effect when `.double_tap_sticky` is set. -> -> -> Setting the property to `-1` will make the double-tap timeout use `.time_out` -> for its calculations. -> -> Defaults to -1. - ## Dependencies * [Kaleidoscope-Ranges](Kaleidoscope-Ranges.md) diff --git a/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.cpp b/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.cpp index eb239591..16e7c9ea 100644 --- a/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.cpp +++ b/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.cpp @@ -31,13 +31,6 @@ uint16_t OneShot::timeout_ = 2500; uint16_t OneShot::hold_timeout_ = 250; int16_t OneShot::double_tap_timeout_ = -1; -// Deprecated -#ifndef NDEPRECATED -uint16_t OneShot::time_out = 2500; -uint16_t OneShot::hold_time_out = 250; -int16_t OneShot::double_tap_time_out = -1; -#endif - // ---------------------------------------------------------------------------- // State variables @@ -333,16 +326,6 @@ EventHandlerResult OneShot::afterEachCycle() { start_time_ = Runtime.millisAtCycleStart(); } - // Temporary fix for deprecated variables -#ifndef NDEPRECATED -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - timeout_ = time_out; - hold_timeout_ = hold_time_out; - double_tap_timeout_ = double_tap_time_out; -#pragma GCC diagnostic pop -#endif - return EventHandlerResult::OK; } @@ -417,68 +400,6 @@ void OneShot::releaseKey(KeyAddr key_addr) { Runtime.handleKeyEvent(event); } -// ------------------------------------------------------------------------------ -// Deprecated functions -#ifndef NDEPRECATED -void OneShot::inject(Key key, uint8_t key_state) { - if (isOneShotKey(key)) { - key = decodeOneShotKey(key); - } - // Find an idle keyswitch to use for the injected OneShot key and activate - // it. This is an ugly hack, but it will work. It does mean that whatever key - // is used will be unavailable for its normal function until the injected - // OneShot key is deactivated, so use of `inject()` is strongly discouraged. - for (KeyAddr key_addr : KeyAddr::all()) { - if (live_keys[key_addr] == Key_Transparent) { - pressKey(key_addr, key); - glue_addrs_.set(key_addr); - break; - } - } -} - -bool OneShot::isModifierActive(Key key) { - // This actually works for any `Key` value, not just modifiers. Because we're - // just searching the keymap cache, it's also possible to return a false - // positive (a plugin might have altered the cache for an idle `KeyAddr`), or - // a false negative (a plugin might be inserting a modifier without a valid - // `KeyAddr`), but as this is a deprecated function, I think this is good - // enough. - for (KeyAddr key_addr : KeyAddr::all()) { - if (live_keys[key_addr] == key) { - return true; - } - } - return false; -} - -bool OneShot::isActive(Key key) { - if (isOneShotKey(key)) { - key = decodeOneShotKey(key); - } - for (KeyAddr key_addr : glue_addrs_) { - if (live_keys[key_addr] == key) { - return true; - } - } - return false; -} - -bool OneShot::isSticky(Key key) { - if (isOneShotKey(key)) { - key = decodeOneShotKey(key); - } - for (KeyAddr key_addr : glue_addrs_) { - if (live_keys[key_addr] == key && - !temp_addrs_.read(key_addr)) { - return true; - } - } - return false; -} -#endif - - } // namespace plugin } // namespace kaleidoscope diff --git a/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.h b/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.h index 034dec5b..dbafc29b 100644 --- a/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.h +++ b/plugins/Kaleidoscope-OneShot/src/kaleidoscope/plugin/OneShot.h @@ -22,46 +22,6 @@ #include "kaleidoscope/key_events.h" #include "kaleidoscope/KeyAddrBitfield.h" -// ---------------------------------------------------------------------------- -// Deprecation warning messages -#define _DEPRECATED_MESSAGE_ONESHOT_TIMEOUT \ - "The `OneShot.time_out` variable is deprecated. Please use the\n" \ - "`OneShot.setTimeout()` function instead.\n" \ - "This variable will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_HOLD_TIMEOUT \ - "The `OneShot.hold_time_out` variable is deprecated. Please use the\n" \ - "`OneShot.setHoldTimeout()` function instead.\n" \ - "This variable will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_DOUBLE_TAP_TIMEOUT \ - "The `OneShot.double_tap_time_out` variable is deprecated. Please use the\n" \ - "`OneShot.setDoubleTapTimeout()` function instead.\n" \ - "This variable will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_INJECT \ - "The `OneShot.inject(key, key_state)` function has been deprecated.\n" \ - "This function will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_ISACTIVE_KEY \ - "The `OneShot.isActive(key)` function is deprecated. Please use\n" \ - "`OneShot.isActive(key_addr)` instead, if possible.\n" \ - "This function will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_ISSTICKY_KEY \ - "The `OneShot.isSticky(key)` function is deprecated. Please use\n" \ - "`OneShot.isSticky(key_addr)` instead, if possible.\n" \ - "This function will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_ISPRESSED \ - "The `OneShot.isPressed()` function is deprecated. This function now\n" \ - "always returns false.\n" \ - "This function will be removed after 2021-08-01." - -#define _DEPRECATED_MESSAGE_ONESHOT_ISMODIFIERACTIVE \ - "The `OneShot.isModifierActive()` function is deprecated.\n" \ - "This function will be removed after 2021-08-01." - // ---------------------------------------------------------------------------- // Keymap macros @@ -195,68 +155,18 @@ class OneShot : public kaleidoscope::Plugin { // Utility function for other plugins to cancel OneShot keys static void cancel(bool with_stickies = false); - // -------------------------------------------------------------------------- - // Deprecated functions -#ifndef NDEPRECATED - DEPRECATED(ONESHOT_INJECT) - void inject(Key key, uint8_t key_state); - - DEPRECATED(ONESHOT_ISMODIFIERACTIVE) - static bool isModifierActive(Key key); - - DEPRECATED(ONESHOT_ISACTIVE_KEY) - static bool isActive(Key oneshot_key); - - DEPRECATED(ONESHOT_ISSTICKY_KEY) - static bool isSticky(Key oneshot_key); - - DEPRECATED(ONESHOT_ISPRESSED) - static bool isPressed() { - return false; - } -#endif - // -------------------------------------------------------------------------- // Timeout onfiguration functions static void setTimeout(uint16_t ttl) { timeout_ = ttl; -#ifndef NDEPRECATED -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - time_out = ttl; -#pragma GCC diagnostic pop -#endif } static void setHoldTimeout(uint16_t ttl) { hold_timeout_ = ttl; -#ifndef NDEPRECATED -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - hold_time_out = ttl; -#pragma GCC diagnostic pop -#endif } static void setDoubleTapTimeout(int16_t ttl) { double_tap_timeout_ = ttl; -#ifndef NDEPRECATED -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - double_tap_time_out = ttl; -#pragma GCC diagnostic pop -#endif } - // -------------------------------------------------------------------------- - // Configuration variables (should probably be private) -#ifndef NDEPRECATED - DEPRECATED(ONESHOT_TIMEOUT) - static uint16_t time_out; - DEPRECATED(ONESHOT_HOLD_TIMEOUT) - static uint16_t hold_time_out; - DEPRECATED(ONESHOT_DOUBLE_TAP_TIMEOUT) - static int16_t double_tap_time_out; -#endif - // -------------------------------------------------------------------------- // Plugin hook functions