diff --git a/examples/Features/FocusSerial/FocusSerial.ino b/examples/Features/FocusSerial/FocusSerial.ino index dd6c00d7..dfacbc43 100644 --- a/examples/Features/FocusSerial/FocusSerial.ino +++ b/examples/Features/FocusSerial/FocusSerial.ino @@ -47,10 +47,10 @@ class FocusTestCommand : public Plugin { EventHandlerResult onFocusEvent(const char *command) { const char *cmd = PSTR("test"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) == 0) { + if (::Focus.inputMatchesCommand(command, cmd)) { ::Focus.send(F("ok!")); return EventHandlerResult::EVENT_CONSUMED; } @@ -64,7 +64,8 @@ class FocusHelpCommand : public Plugin { FocusHelpCommand() {} EventHandlerResult onFocusEvent(const char *command) { - ::Focus.handleHelp(command, PSTR("help")); + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(PSTR("help")); return EventHandlerResult::OK; } diff --git a/plugins/Kaleidoscope-AutoShift/src/kaleidoscope/plugin/AutoShiftConfig.cpp b/plugins/Kaleidoscope-AutoShift/src/kaleidoscope/plugin/AutoShiftConfig.cpp index 974afe8e..a5d93a81 100644 --- a/plugins/Kaleidoscope-AutoShift/src/kaleidoscope/plugin/AutoShiftConfig.cpp +++ b/plugins/Kaleidoscope-AutoShift/src/kaleidoscope/plugin/AutoShiftConfig.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/AutoShift.h" // IWYU pragma: associated -#include // for PSTR, strcmp_P, strncmp_P +#include // for PSTR #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint8_t, uint16_t @@ -54,18 +54,18 @@ EventHandlerResult AutoShiftConfig::onFocusEvent(const char *command) { CATEGORIES, } subCommand; - if (::Focus.handleHelp(command, PSTR("autoshift.enabled\r\n" - "autoshift.timeout\r\n" - "autoshift.categories"))) - return EventHandlerResult::OK; + const char *cmd_enabled = PSTR("autoshift.enabled"); + const char *cmd_timeout = PSTR("autoshift.timeout"); + const char *cmd_categories = PSTR("autoshift.categories"); - if (strncmp_P(command, PSTR("autoshift."), 10) != 0) - return EventHandlerResult::OK; - if (strcmp_P(command + 10, PSTR("enabled")) == 0) + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_enabled, cmd_timeout, cmd_categories); + + if (::Focus.inputMatchesCommand(command, cmd_enabled)) subCommand = ENABLED; - else if (strcmp_P(command + 10, PSTR("timeout")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_timeout)) subCommand = TIMEOUT; - else if (strcmp_P(command + 10, PSTR("categories")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_categories)) subCommand = CATEGORIES; else return EventHandlerResult::OK; diff --git a/plugins/Kaleidoscope-Colormap/src/kaleidoscope/plugin/DefaultColormap.cpp b/plugins/Kaleidoscope-Colormap/src/kaleidoscope/plugin/DefaultColormap.cpp index e0eb7f35..6954acd6 100644 --- a/plugins/Kaleidoscope-Colormap/src/kaleidoscope/plugin/DefaultColormap.cpp +++ b/plugins/Kaleidoscope-Colormap/src/kaleidoscope/plugin/DefaultColormap.cpp @@ -78,10 +78,10 @@ EventHandlerResult DefaultColormap::onFocusEvent(const char *command) { const char *cmd = PSTR("colormap.install"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) != 0) + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; install(); diff --git a/plugins/Kaleidoscope-DefaultLEDModeConfig/src/kaleidoscope/plugin/DefaultLEDModeConfig.cpp b/plugins/Kaleidoscope-DefaultLEDModeConfig/src/kaleidoscope/plugin/DefaultLEDModeConfig.cpp index 0f13ceca..cc62cedb 100644 --- a/plugins/Kaleidoscope-DefaultLEDModeConfig/src/kaleidoscope/plugin/DefaultLEDModeConfig.cpp +++ b/plugins/Kaleidoscope-DefaultLEDModeConfig/src/kaleidoscope/plugin/DefaultLEDModeConfig.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/DefaultLEDModeConfig.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint8_t, uint16_t @@ -51,10 +51,10 @@ EventHandlerResult DefaultLEDModeConfig::onSetup() { EventHandlerResult DefaultLEDModeConfig::onFocusEvent(const char *command) { const char *cmd = PSTR("led_mode.default"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) != 0) + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; if (::Focus.isEOL()) { diff --git a/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp b/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp index 32f14622..3e098c0c 100644 --- a/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp +++ b/plugins/Kaleidoscope-DynamicMacros/src/kaleidoscope/plugin/DynamicMacros.cpp @@ -16,7 +16,7 @@ #include "kaleidoscope/plugin/DynamicMacros.h" -#include // for delay, PSTR, strcmp_P, F, __FlashStri... +#include // for delay, PSTR, F, __FlashStri... #include // for Focus, FocusSerial #include // for DYNAMIC_MACRO_FIRST, DYNAMIC_MACRO_LAST @@ -215,13 +215,13 @@ EventHandlerResult DynamicMacros::onNameQuery() { } EventHandlerResult DynamicMacros::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("macros.map\r\nmacros.trigger"))) - return EventHandlerResult::OK; + const char *cmd_map = PSTR("macros.map"); + const char *cmd_trigger = PSTR("macros.trigger"); - if (strncmp_P(command, PSTR("macros."), 7) != 0) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_map, cmd_trigger); - if (strcmp_P(command + 7, PSTR("map")) == 0) { + if (::Focus.inputMatchesCommand(command, cmd_map)) { if (::Focus.isEOL()) { for (uint16_t i = 0; i < storage_size_; i++) { uint8_t b; @@ -240,15 +240,16 @@ EventHandlerResult DynamicMacros::onFocusEvent(const char *command) { Runtime.storage().commit(); macro_count_ = updateDynamicMacroCache(); } - } - - if (strcmp_P(command + 7, PSTR("trigger")) == 0) { + return EventHandlerResult::EVENT_CONSUMED; + } else if (::Focus.inputMatchesCommand(command, cmd_trigger)) { uint8_t id = 0; ::Focus.read(id); play(id); + + return EventHandlerResult::EVENT_CONSUMED; } - return EventHandlerResult::EVENT_CONSUMED; + return EventHandlerResult::OK; } // public diff --git a/plugins/Kaleidoscope-DynamicTapDance/src/kaleidoscope/plugin/DynamicTapDance.cpp b/plugins/Kaleidoscope-DynamicTapDance/src/kaleidoscope/plugin/DynamicTapDance.cpp index 14bd719f..e8d357df 100644 --- a/plugins/Kaleidoscope-DynamicTapDance/src/kaleidoscope/plugin/DynamicTapDance.cpp +++ b/plugins/Kaleidoscope-DynamicTapDance/src/kaleidoscope/plugin/DynamicTapDance.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/DynamicTapDance.h" -#include // for PSTR, F, __FlashStringHelper, strcmp_P +#include // for PSTR, F, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint16_t, uint8_t @@ -94,32 +94,32 @@ EventHandlerResult DynamicTapDance::onNameQuery() { } EventHandlerResult DynamicTapDance::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("tapdance.map"))) - return EventHandlerResult::OK; + const char *cmd_map = PSTR("tapdance.map"); + + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_map); - if (strncmp_P(command, PSTR("tapdance."), 9) != 0) + if (!::Focus.inputMatchesCommand(command, cmd_map)) return EventHandlerResult::OK; - if (strcmp_P(command + 9, PSTR("map")) == 0) { - if (::Focus.isEOL()) { - for (uint16_t i = 0; i < storage_size_; i += 2) { - Key k; - Runtime.storage().get(storage_base_ + i, k); - ::Focus.send(k); - } - } else { - uint16_t pos = 0; + if (::Focus.isEOL()) { + for (uint16_t i = 0; i < storage_size_; i += 2) { + Key k; + Runtime.storage().get(storage_base_ + i, k); + ::Focus.send(k); + } + } else { + uint16_t pos = 0; - while (!::Focus.isEOL()) { - Key k; - ::Focus.read(k); + while (!::Focus.isEOL()) { + Key k; + ::Focus.read(k); - Runtime.storage().put(storage_base_ + pos, k); - pos += 2; - } - Runtime.storage().commit(); - updateDynamicTapDanceCache(); + Runtime.storage().put(storage_base_ + pos, k); + pos += 2; } + Runtime.storage().commit(); + updateDynamicTapDanceCache(); } return EventHandlerResult::EVENT_CONSUMED; diff --git a/plugins/Kaleidoscope-EEPROM-Keymap-Programmer/src/kaleidoscope/plugin/EEPROM-Keymap-Programmer.cpp b/plugins/Kaleidoscope-EEPROM-Keymap-Programmer/src/kaleidoscope/plugin/EEPROM-Keymap-Programmer.cpp index 3f9793af..20fce299 100644 --- a/plugins/Kaleidoscope-EEPROM-Keymap-Programmer/src/kaleidoscope/plugin/EEPROM-Keymap-Programmer.cpp +++ b/plugins/Kaleidoscope-EEPROM-Keymap-Programmer/src/kaleidoscope/plugin/EEPROM-Keymap-Programmer.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/EEPROM-Keymap-Programmer.h" -#include // for PSTR, strcmp_P +#include // for PSTR #include // for EEPROMKeymap #include // for Focus, FocusSerial #include // for uint16_t, uint8_t @@ -109,10 +109,10 @@ EventHandlerResult EEPROMKeymapProgrammer::onKeyEvent(KeyEvent &event) { EventHandlerResult EEPROMKeymapProgrammer::onFocusEvent(const char *command) { const char *cmd = PSTR("keymap.toggleProgrammer"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) != 0) + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; if (state_ == INACTIVE) diff --git a/plugins/Kaleidoscope-EEPROM-Keymap/src/kaleidoscope/plugin/EEPROM-Keymap.cpp b/plugins/Kaleidoscope-EEPROM-Keymap/src/kaleidoscope/plugin/EEPROM-Keymap.cpp index 0e6de2a0..918b439b 100644 --- a/plugins/Kaleidoscope-EEPROM-Keymap/src/kaleidoscope/plugin/EEPROM-Keymap.cpp +++ b/plugins/Kaleidoscope-EEPROM-Keymap/src/kaleidoscope/plugin/EEPROM-Keymap.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/EEPROM-Keymap.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint8_t, uint16_t @@ -102,13 +102,14 @@ void EEPROMKeymap::dumpKeymap(uint8_t layers, Key (*getkey)(uint8_t, KeyAddr)) { } EventHandlerResult EEPROMKeymap::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("keymap.custom\r\nkeymap.default\r\nkeymap.onlyCustom"))) - return EventHandlerResult::OK; + const char *cmd_custom = PSTR("keymap.custom"); + const char *cmd_default = PSTR("keymap.default"); + const char *cmd_onlyCustom = PSTR("keymap.onlyCustom"); - if (strncmp_P(command, PSTR("keymap."), 7) != 0) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_custom, cmd_default, cmd_onlyCustom); - if (strcmp_P(command + 7, PSTR("onlyCustom")) == 0) { + if (::Focus.inputMatchesCommand(command, cmd_onlyCustom)) { if (::Focus.isEOL()) { ::Focus.send((uint8_t)::EEPROMSettings.ignoreHardcodedLayers()); } else { @@ -128,7 +129,7 @@ EventHandlerResult EEPROMKeymap::onFocusEvent(const char *command) { return EventHandlerResult::EVENT_CONSUMED; } - if (strcmp_P(command + 7, PSTR("default")) == 0) { + if (::Focus.inputMatchesCommand(command, cmd_default)) { // By using a cast to the appropriate function type, // tell the compiler which overload of getKeyFromPROGMEM // we actully want. @@ -138,7 +139,7 @@ EventHandlerResult EEPROMKeymap::onFocusEvent(const char *command) { return EventHandlerResult::EVENT_CONSUMED; } - if (strcmp_P(command + 7, PSTR("custom")) != 0) + if (!::Focus.inputMatchesCommand(command, cmd_custom)) return EventHandlerResult::OK; if (::Focus.isEOL()) { diff --git a/plugins/Kaleidoscope-EEPROM-Settings/src/kaleidoscope/plugin/EEPROM-Settings.cpp b/plugins/Kaleidoscope-EEPROM-Settings/src/kaleidoscope/plugin/EEPROM-Settings.cpp index 7fffad73..6c398e39 100644 --- a/plugins/Kaleidoscope-EEPROM-Settings/src/kaleidoscope/plugin/EEPROM-Settings.cpp +++ b/plugins/Kaleidoscope-EEPROM-Settings/src/kaleidoscope/plugin/EEPROM-Settings.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/EEPROM-Settings.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for Focus, FocusSerial #include // for uint16_t, uint8_t @@ -164,19 +164,21 @@ EventHandlerResult FocusSettingsCommand::onFocusEvent(const char *command) { GET_CRC, } sub_command; - if (::Focus.handleHelp(command, PSTR("settings.defaultLayer\r\nsettings.valid?\r\nsettings.version\r\nsettings.crc"))) - return EventHandlerResult::OK; + const char *cmd_defaultLayer = PSTR("settings.defaultLayer"); + const char *cmd_isValid = PSTR("settings.valid?"); + const char *cmd_version = PSTR("settings.version"); + const char *cmd_crc = PSTR("settings.crc"); - if (strncmp_P(command, PSTR("settings."), 9) != 0) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_defaultLayer, cmd_isValid, cmd_version, cmd_crc); - if (strcmp_P(command + 9, PSTR("defaultLayer")) == 0) + if (::Focus.inputMatchesCommand(command, cmd_defaultLayer)) sub_command = DEFAULT_LAYER; - else if (strcmp_P(command + 9, PSTR("valid?")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_isValid)) sub_command = IS_VALID; - else if (strcmp_P(command + 9, PSTR("version")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_version)) sub_command = GET_VERSION; - else if (strcmp_P(command + 9, PSTR("crc")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_crc)) sub_command = GET_CRC; else return EventHandlerResult::OK; @@ -213,14 +215,18 @@ EventHandlerResult FocusEEPROMCommand::onFocusEvent(const char *command) { ERASE, } sub_command; - if (::Focus.handleHelp(command, PSTR("eeprom.contents\r\neeprom.free\r\neeprom.erase"))) - return EventHandlerResult::OK; + const char *cmd_contents = PSTR("eeprom.contents"); + const char *cmd_free = PSTR("eeprom.free"); + const char *cmd_erase = PSTR("eeprom.erase"); + + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_contents, cmd_free, cmd_erase); - if (strcmp_P(command, PSTR("eeprom.contents")) == 0) + if (::Focus.inputMatchesCommand(command, cmd_contents)) sub_command = CONTENTS; - else if (strcmp_P(command, PSTR("eeprom.free")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_free)) sub_command = FREE; - else if (strcmp_P(command, PSTR("eeprom.erase")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_erase)) sub_command = ERASE; else return EventHandlerResult::OK; diff --git a/plugins/Kaleidoscope-Escape-OneShot/src/kaleidoscope/plugin/Escape-OneShot-Config.cpp b/plugins/Kaleidoscope-Escape-OneShot/src/kaleidoscope/plugin/Escape-OneShot-Config.cpp index 1ef9dc27..03995400 100644 --- a/plugins/Kaleidoscope-Escape-OneShot/src/kaleidoscope/plugin/Escape-OneShot-Config.cpp +++ b/plugins/Kaleidoscope-Escape-OneShot/src/kaleidoscope/plugin/Escape-OneShot-Config.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/Escape-OneShot.h" // IWYU pragma: associated -#include // for PSTR, F, __FlashStringHelper, strcmp_P +#include // for PSTR, F, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial @@ -49,10 +49,11 @@ EventHandlerResult EscapeOneShotConfig::onNameQuery() { } EventHandlerResult EscapeOneShotConfig::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("escape_oneshot.cancel_key"))) - return EventHandlerResult::OK; + const char *cmd_cancel_key = PSTR("escape_oneshot.cancel_key"); + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_cancel_key); - if (strcmp_P(command, PSTR("escape_oneshot.cancel_key")) != 0) + if (!::Focus.inputMatchesCommand(command, cmd_cancel_key)) return EventHandlerResult::OK; if (::Focus.isEOL()) { diff --git a/plugins/Kaleidoscope-FingerPainter/src/kaleidoscope/plugin/FingerPainter.cpp b/plugins/Kaleidoscope-FingerPainter/src/kaleidoscope/plugin/FingerPainter.cpp index 22ef0729..cfeeae7c 100644 --- a/plugins/Kaleidoscope-FingerPainter/src/kaleidoscope/plugin/FingerPainter.cpp +++ b/plugins/Kaleidoscope-FingerPainter/src/kaleidoscope/plugin/FingerPainter.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/FingerPainter.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for Focus, FocusSerial #include // for LEDPaletteTheme #include // for uint16_t, uint8_t @@ -100,15 +100,15 @@ EventHandlerResult FingerPainter::onFocusEvent(const char *command) { CLEAR, } sub_command; - if (::Focus.handleHelp(command, PSTR("fingerpainter.toggle\r\nfingerpainter.clear"))) - return EventHandlerResult::OK; + const char *cmd_toggle = PSTR("fingerpainter.toggle"); + const char *cmd_clear = PSTR("fingerpainter.clear"); - if (strncmp_P(command, PSTR("fingerpainter."), 14) != 0) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_toggle, cmd_clear); - if (strcmp_P(command + 14, PSTR("toggle")) == 0) + if (::Focus.inputMatchesCommand(command, cmd_toggle)) sub_command = TOGGLE; - else if (strcmp_P(command + 14, PSTR("clear")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_clear)) sub_command = CLEAR; else return EventHandlerResult::OK; diff --git a/plugins/Kaleidoscope-FirmwareDump/src/kaleidoscope/plugin/FirmwareDump.cpp b/plugins/Kaleidoscope-FirmwareDump/src/kaleidoscope/plugin/FirmwareDump.cpp index 14574176..f7df0a54 100644 --- a/plugins/Kaleidoscope-FirmwareDump/src/kaleidoscope/plugin/FirmwareDump.cpp +++ b/plugins/Kaleidoscope-FirmwareDump/src/kaleidoscope/plugin/FirmwareDump.cpp @@ -53,10 +53,10 @@ EventHandlerResult FirmwareDump::onSetup() { EventHandlerResult FirmwareDump::onFocusEvent(const char *command) { const char *cmd = PSTR("firmware.dump"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) != 0) + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; uint16_t flash_size = (FLASHEND + 1L); diff --git a/plugins/Kaleidoscope-FirmwareVersion/src/kaleidoscope/plugin/FirmwareVersion.h b/plugins/Kaleidoscope-FirmwareVersion/src/kaleidoscope/plugin/FirmwareVersion.h index 49f490b4..59b8953b 100644 --- a/plugins/Kaleidoscope-FirmwareVersion/src/kaleidoscope/plugin/FirmwareVersion.h +++ b/plugins/Kaleidoscope-FirmwareVersion/src/kaleidoscope/plugin/FirmwareVersion.h @@ -21,7 +21,7 @@ #define KALEIDOSCOPE_FIRMWARE_VERSION "0.0.0" #endif -#include // for PSTR, F, __FlashStringHelper, strcmp_P +#include // for PSTR, F, __FlashStringHelper #include "Kaleidoscope-FocusSerial.h" // for Focus, FocusSerial #include "kaleidoscope/event_handler_result.h" // for EventHandlerResult #include "kaleidoscope/plugin.h" // for Plugin @@ -32,10 +32,12 @@ namespace plugin { class FirmwareVersion : public Plugin { public: EventHandlerResult onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("version"))) - return EventHandlerResult::OK; + const char *cmd_version = PSTR("version"); + + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_version); - if (strcmp_P(command, PSTR("version")) != 0) + if (!::Focus.inputMatchesCommand(command, cmd_version)) return EventHandlerResult::OK; #ifdef KALEIDOSCOPE_FIRMWARE_VERSION diff --git a/plugins/Kaleidoscope-FocusSerial/README.md b/plugins/Kaleidoscope-FocusSerial/README.md index 6e9ba698..af86c9d7 100644 --- a/plugins/Kaleidoscope-FocusSerial/README.md +++ b/plugins/Kaleidoscope-FocusSerial/README.md @@ -25,7 +25,7 @@ class FocusTestCommand : public Plugin { } EventHandlerResult onFocusEvent(const char *command) { - if (strcmp_P(command, PSTR("test")) != 0) + if (!::Focus.inputMatchesCommand(command, PSTR("test"))) return EventHandlerResult::OK; ::Focus.send(F("Congratulations, the test command works!")); diff --git a/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.cpp b/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.cpp index 486ad022..f4dfe002 100644 --- a/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.cpp +++ b/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.cpp @@ -77,24 +77,19 @@ EventHandlerResult FocusSerial::afterEachCycle() { return EventHandlerResult::OK; } -bool FocusSerial::handleHelp(const char *command, - const char *help_message) { - if (strcmp_P(command, PSTR("help")) != 0) - return false; - - Runtime.serialPort().println((const __FlashStringHelper *)help_message); - return true; -} - EventHandlerResult FocusSerial::onFocusEvent(const char *command) { - if (handleHelp(command, PSTR("help\r\ndevice.reset\r\nplugins"))) - return EventHandlerResult::OK; + const char *cmd_help = PSTR("help"); + const char *cmd_reset = PSTR("device.reset"); + const char *cmd_plugins = PSTR("plugins"); + + if (inputMatchesHelp(command)) + return printHelp(cmd_help, cmd_reset, cmd_plugins); - if (strcmp_P(command, PSTR("device.reset")) == 0) { + if (inputMatchesCommand(command, cmd_reset)) { Runtime.device().rebootBootloader(); return EventHandlerResult::EVENT_CONSUMED; } - if (strcmp_P(command, PSTR("plugins")) == 0) { + if (inputMatchesCommand(command, cmd_plugins)) { kaleidoscope::Hooks::onNameQuery(); return EventHandlerResult::EVENT_CONSUMED; } @@ -102,10 +97,27 @@ EventHandlerResult FocusSerial::onFocusEvent(const char *command) { return EventHandlerResult::OK; } +#ifndef NDEPRECATED +bool FocusSerial::handleHelp(const char *command, const char *help_message) { + if (!inputMatchesHelp(command)) return false; + + printHelp(help_message); + return true; +} +#endif + void FocusSerial::printBool(bool b) { Runtime.serialPort().print((b) ? F("true") : F("false")); } +bool FocusSerial::inputMatchesHelp(const char *input) { + return inputMatchesCommand(input, PSTR("help")); +} + +bool FocusSerial::inputMatchesCommand(const char *input, const char *expected) { + return strcmp_P(input, expected) == 0; +} + } // namespace plugin } // namespace kaleidoscope diff --git a/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.h b/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.h index 066768df..c83bf63a 100644 --- a/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.h +++ b/plugins/Kaleidoscope-FocusSerial/src/kaleidoscope/plugin/FocusSerial.h @@ -26,6 +26,15 @@ #include "kaleidoscope/event_handler_result.h" // for EventHandlerResult, EventHandlerResult::OK #include "kaleidoscope/key_defs.h" // for Key #include "kaleidoscope/plugin.h" // for Plugin +// ----------------------------------------------------------------------------- +// Deprecation warning messages +#include "kaleidoscope_internal/deprecations.h" // for DEPRECATED + +#define _DEPRECATED_MESSAGE_FOCUS_HANDLEHELP \ + "The `Focus.handleHelp()` method is deprecated. Please use\n" \ + "`Focus.inputMatchesHelp()` and `Focus.printHelp()` instead.\n" \ + "This method will be removed after 2022-12-26." +// ----------------------------------------------------------------------------- // IWYU pragma: no_include "WString.h" @@ -37,8 +46,23 @@ class FocusSerial : public kaleidoscope::Plugin { static constexpr char SEPARATOR = ' '; static constexpr char NEWLINE = '\n'; - bool handleHelp(const char *command, - const char *help_message); +#ifndef NDEPRECATED + DEPRECATED(FOCUS_HANDLEHELP) + bool handleHelp(const char *command, const char *help_message); +#endif + + bool inputMatchesHelp(const char *input); + bool inputMatchesCommand(const char *input, const char *expected); + + EventHandlerResult printHelp() { + return EventHandlerResult::OK; + } + template + EventHandlerResult printHelp(const char *h1, Vars... vars) { + Runtime.serialPort().println((const __FlashStringHelper *)h1); + delayAfterPrint(); + return printHelp(vars...); + } EventHandlerResult sendName(const __FlashStringHelper *name) { Runtime.serialPort().print(name); diff --git a/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/Focus.cpp b/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/Focus.cpp index b99b4589..8a8dad9e 100644 --- a/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/Focus.cpp +++ b/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/Focus.cpp @@ -34,23 +34,35 @@ namespace raise { #endif EventHandlerResult Focus::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("hardware.version\r\nhardware.side_power\r\nhardware.side_ver\r\nhardware.sled_ver\r\nhardware.sled_current\r\nhardware.layout\r\nhardware.joint\r\nhardware.keyscan\r\nhardware.crc_errors\r\nhardware.firmware"))) - return EventHandlerResult::OK; - - if (strncmp_P(command, PSTR("hardware."), 9) != 0) - return EventHandlerResult::OK; - - if (strcmp_P(command + 9, PSTR("version")) == 0) { + const char *cmd_version = PSTR("hardware.version"); + const char *cmd_side_power = PSTR("hardware.side_power"); + const char *cmd_side_ver = PSTR("hardware.side_ver"); + const char *cmd_sled_ver = PSTR("hardware.sled_ver"); + const char *cmd_sled_current = PSTR("hardware.sled_current"); + const char *cmd_layout = PSTR("hardware.layout"); + const char *cmd_joint = PSTR("hardware.joint"); + const char *cmd_keyscan = PSTR("hardware.keyscan"); + const char *cmd_crc_errors = PSTR("hardware.crc_errors"); + const char *cmd_firmware = PSTR("hardware.firmware"); + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_version, + cmd_side_power, + cmd_side_ver, + cmd_sled_ver, + cmd_sled_current, + cmd_layout, + cmd_joint, + cmd_keyscan, + cmd_crc_errors, + cmd_firmware); + + if (::Focus.inputMatchesCommand(command, cmd_version)) { ::Focus.send("Dygma Raise"); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("firmware")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_firmware)) { ::Focus.send(RAISE_FIRMWARE_VERSION); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("side_power")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_side_power)) { if (::Focus.isEOL()) { ::Focus.send(Runtime.device().side.getPower()); return EventHandlerResult::EVENT_CONSUMED; @@ -60,33 +72,25 @@ EventHandlerResult Focus::onFocusEvent(const char *command) { Runtime.device().side.setPower(power); return EventHandlerResult::EVENT_CONSUMED; } - } - - if (strcmp_P(command + 9, PSTR("side_ver")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_side_ver)) { ::Focus.send("left:"); ::Focus.send(Runtime.device().side.leftVersion()); ::Focus.send("\r\nright:"); ::Focus.send(Runtime.device().side.rightVersion()); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("crc_errors")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_crc_errors)) { ::Focus.send("left:"); ::Focus.send(Runtime.device().side.leftCRCErrors()); ::Focus.send("\r\nright:"); ::Focus.send(Runtime.device().side.rightCRCErrors()); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("sled_ver")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_sled_ver)) { ::Focus.send("left:"); ::Focus.send(Runtime.device().side.leftSLEDVersion()); ::Focus.send("\r\nright:"); ::Focus.send(Runtime.device().side.rightSLEDVersion()); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("sled_current")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_sled_current)) { if (::Focus.isEOL()) { ::Focus.send("left:"); ::Focus.send(Runtime.device().side.leftSLEDCurrent()); @@ -99,20 +103,14 @@ EventHandlerResult Focus::onFocusEvent(const char *command) { Runtime.device().side.setSLEDCurrent(current); return EventHandlerResult::EVENT_CONSUMED; } - } - - if (strcmp_P(command + 9, PSTR("layout")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_layout)) { static const auto ANSI = Runtime.device().settings.Layout::ANSI; ::Focus.send(Runtime.device().settings.layout() == ANSI ? "ANSI" : "ISO"); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("joint")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_joint)) { ::Focus.send(Runtime.device().settings.joint()); return EventHandlerResult::EVENT_CONSUMED; - } - - if (strcmp_P(command + 9, PSTR("keyscan")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_keyscan)) { if (::Focus.isEOL()) { ::Focus.send(Runtime.device().settings.keyscanInterval()); return EventHandlerResult::EVENT_CONSUMED; diff --git a/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/SideFlash.h b/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/SideFlash.h index 54fb01d4..e19767bf 100644 --- a/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/SideFlash.h +++ b/plugins/Kaleidoscope-Hardware-Dygma-Raise/src/kaleidoscope/device/dygma/raise/SideFlash.h @@ -35,11 +35,12 @@ class SideFlash : public kaleidoscope::Plugin { public: EventHandlerResult onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("hardware.flash_left_side\nhardware.flash_right_side\nhardware.verify_left_side\nhardware.verify_right_side"))) - return EventHandlerResult::OK; - - if (strncmp_P(command, PSTR("hardware."), 9) != 0) - return EventHandlerResult::OK; + const char *cmd_flash_left = PSTR("hardware.flash_left_side"); + const char *cmd_flash_right = PSTR("hardware.flash_right_side"); + const char *cmd_verify_left = PSTR("hardware.verify_left_side"); + const char *cmd_verify_right = PSTR("hardware.verify_right_side"); + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_flash_left, cmd_flash_right, cmd_verify_left, cmd_verify_right); auto sideFlasher = Runtime.device().sideFlasher(); uint8_t left_boot_address = Runtime.device().side.left_boot_address; @@ -50,16 +51,16 @@ class SideFlash : public kaleidoscope::Plugin { } sub_command; uint8_t address = 0; - if (strcmp_P(command + 9, PSTR("flash_left_side")) == 0) { + if (::Focus.inputMatchesCommand(command, cmd_flash_left)) { sub_command = FLASH; address = left_boot_address; - } else if (strcmp_P(command + 9, PSTR("flash_right_side")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_flash_right)) { sub_command = FLASH; address = right_boot_address; - } else if (strcmp_P(command + 9, PSTR("verify_left_side")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_verify_left)) { sub_command = VERIFY; address = left_boot_address; - } else if (strcmp_P(command + 9, PSTR("verify_right_side")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_verify_right)) { sub_command = VERIFY; address = right_boot_address; } else { diff --git a/plugins/Kaleidoscope-HostOS/src/kaleidoscope/plugin/HostOS-Focus.cpp b/plugins/Kaleidoscope-HostOS/src/kaleidoscope/plugin/HostOS-Focus.cpp index fc6e99f3..af78742d 100644 --- a/plugins/Kaleidoscope-HostOS/src/kaleidoscope/plugin/HostOS-Focus.cpp +++ b/plugins/Kaleidoscope-HostOS/src/kaleidoscope/plugin/HostOS-Focus.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/HostOS-Focus.h" -#include // for PSTR, strcmp_P +#include // for PSTR #include // for Focus, FocusSerial #include // for uint8_t @@ -30,9 +30,10 @@ namespace plugin { EventHandlerResult FocusHostOSCommand::onFocusEvent(const char *command) { const char *cmd = PSTR("hostos.type"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; - if (strcmp_P(command, cmd) != 0) + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); + + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; if (::Focus.isEOL()) { diff --git a/plugins/Kaleidoscope-IdleLEDs/src/kaleidoscope/plugin/IdleLEDs.cpp b/plugins/Kaleidoscope-IdleLEDs/src/kaleidoscope/plugin/IdleLEDs.cpp index 7a30b3a7..090de0d6 100644 --- a/plugins/Kaleidoscope-IdleLEDs/src/kaleidoscope/plugin/IdleLEDs.cpp +++ b/plugins/Kaleidoscope-IdleLEDs/src/kaleidoscope/plugin/IdleLEDs.cpp @@ -18,7 +18,7 @@ #include "kaleidoscope/plugin/IdleLEDs.h" -#include // for F, PSTR, __FlashStringHelper, strcmp_P +#include // for F, PSTR, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint32_t, uint16_t @@ -100,10 +100,10 @@ void PersistentIdleLEDs::setIdleTimeoutSeconds(uint32_t new_limit) { EventHandlerResult PersistentIdleLEDs::onFocusEvent(const char *command) { const char *cmd = PSTR("idleleds.time_limit"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) != 0) + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; if (::Focus.isEOL()) { diff --git a/plugins/Kaleidoscope-LED-Palette-Theme/src/kaleidoscope/plugin/LED-Palette-Theme.cpp b/plugins/Kaleidoscope-LED-Palette-Theme/src/kaleidoscope/plugin/LED-Palette-Theme.cpp index 4d43d06e..0eb38009 100644 --- a/plugins/Kaleidoscope-LED-Palette-Theme/src/kaleidoscope/plugin/LED-Palette-Theme.cpp +++ b/plugins/Kaleidoscope-LED-Palette-Theme/src/kaleidoscope/plugin/LED-Palette-Theme.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/LED-Palette-Theme.h" -#include // for strcmp_P, PSTR +#include // for PSTR #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint8_t, uint16_t @@ -128,10 +128,10 @@ EventHandlerResult LEDPaletteTheme::onFocusEvent(const char *command) { const char *cmd = PSTR("palette"); - if (::Focus.handleHelp(command, cmd)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd); - if (strcmp_P(command, cmd) != 0) + if (!::Focus.inputMatchesCommand(command, cmd)) return EventHandlerResult::OK; if (::Focus.isEOL()) { @@ -166,10 +166,10 @@ EventHandlerResult LEDPaletteTheme::themeFocusEvent(const char *command, if (!Runtime.has_leds) return EventHandlerResult::OK; - if (::Focus.handleHelp(command, expected_command)) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(expected_command); - if (strcmp_P(command, expected_command) != 0) + if (!::Focus.inputMatchesCommand(command, expected_command)) return EventHandlerResult::OK; uint16_t max_index = (max_themes * Runtime.device().led_count) / 2; diff --git a/plugins/Kaleidoscope-LayerFocus/src/kaleidoscope/plugin/LayerFocus.cpp b/plugins/Kaleidoscope-LayerFocus/src/kaleidoscope/plugin/LayerFocus.cpp index 91d89549..9b41c50c 100644 --- a/plugins/Kaleidoscope-LayerFocus/src/kaleidoscope/plugin/LayerFocus.cpp +++ b/plugins/Kaleidoscope-LayerFocus/src/kaleidoscope/plugin/LayerFocus.cpp @@ -18,7 +18,7 @@ #include "kaleidoscope/plugin/LayerFocus.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for Focus, FocusSerial #include // for uint8_t @@ -33,38 +33,44 @@ EventHandlerResult LayerFocus::onNameQuery() { } EventHandlerResult LayerFocus::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("layer.activate\r\nlayer.deactivate\r\nlayer.isActive" - "\r\nlayer.moveTo\r\nlayer.state"))) - return EventHandlerResult::OK; + const char *cmd_activate = PSTR("layer.activate"); + const char *cmd_deactivate = PSTR("layer.deactivate"); + const char *cmd_isActive = PSTR("layer.isActive"); + const char *cmd_moveTo = PSTR("layer.moveTo"); + const char *cmd_state = PSTR("layer.state"); - if (strncmp_P(command, PSTR("layer."), 6) != 0) - return EventHandlerResult::OK; + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_activate, + cmd_deactivate, + cmd_isActive, + cmd_moveTo, + cmd_state); - if (strcmp_P(command + 6, PSTR("activate")) == 0) { + if (::Focus.inputMatchesCommand(command, cmd_activate)) { if (!::Focus.isEOL()) { uint8_t layer; ::Focus.read(layer); ::Layer.activate(layer); } - } else if (strcmp_P(command + 6, PSTR("deactivate")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_deactivate)) { if (!::Focus.isEOL()) { uint8_t layer; ::Focus.read(layer); ::Layer.deactivate(layer); } - } else if (strcmp_P(command + 6, PSTR("isActive")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_isActive)) { if (!::Focus.isEOL()) { uint8_t layer; ::Focus.read(layer); ::Focus.send(::Layer.isActive(layer)); } - } else if (strcmp_P(command + 6, PSTR("moveTo")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_moveTo)) { if (!::Focus.isEOL()) { uint8_t layer; ::Focus.read(layer); ::Layer.move(layer); } - } else if (strcmp_P(command + 6, PSTR("state")) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_state)) { if (::Focus.isEOL()) { for (uint8_t i = 0; i < 32; i++) { ::Focus.send(::Layer.isActive(i) ? 1 : 0); @@ -80,6 +86,8 @@ EventHandlerResult LayerFocus::onFocusEvent(const char *command) { ::Layer.activate(i); } } + } else { + return EventHandlerResult::OK; } return EventHandlerResult::EVENT_CONSUMED; diff --git a/plugins/Kaleidoscope-LayerNames/src/kaleidoscope/plugin/LayerNames.cpp b/plugins/Kaleidoscope-LayerNames/src/kaleidoscope/plugin/LayerNames.cpp index a517e27d..70f46613 100644 --- a/plugins/Kaleidoscope-LayerNames/src/kaleidoscope/plugin/LayerNames.cpp +++ b/plugins/Kaleidoscope-LayerNames/src/kaleidoscope/plugin/LayerNames.cpp @@ -16,7 +16,7 @@ #include "kaleidoscope/plugin/LayerNames.h" -#include // for delay, PSTR, strcmp_P, F, __FlashStri... +#include // for delay, PSTR, F, __FlashStri... #include // for Focus, FocusSerial #include "kaleidoscope/Runtime.h" // for Runtime, Runtime_ @@ -32,10 +32,12 @@ EventHandlerResult LayerNames::onNameQuery() { } EventHandlerResult LayerNames::onFocusEvent(const char *command) { - if (::Focus.handleHelp(command, PSTR("keymap.layerNames"))) - return EventHandlerResult::OK; + const char *cmd_layerNames = PSTR("keymap.layerNames"); + + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_layerNames); - if (strcmp_P(command, PSTR("keymap.layerNames")) != 0) + if (!::Focus.inputMatchesCommand(command, cmd_layerNames)) return EventHandlerResult::OK; if (::Focus.isEOL()) { diff --git a/plugins/Kaleidoscope-PersistentLEDMode/src/kaleidoscope/plugin/PersistentLEDMode.cpp b/plugins/Kaleidoscope-PersistentLEDMode/src/kaleidoscope/plugin/PersistentLEDMode.cpp index 13a2b077..15e780df 100644 --- a/plugins/Kaleidoscope-PersistentLEDMode/src/kaleidoscope/plugin/PersistentLEDMode.cpp +++ b/plugins/Kaleidoscope-PersistentLEDMode/src/kaleidoscope/plugin/PersistentLEDMode.cpp @@ -18,7 +18,7 @@ #include "kaleidoscope/plugin/PersistentLEDMode.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint8_t, uint16_t diff --git a/plugins/Kaleidoscope-SpaceCadet/src/kaleidoscope/plugin/SpaceCadetConfig.cpp b/plugins/Kaleidoscope-SpaceCadet/src/kaleidoscope/plugin/SpaceCadetConfig.cpp index ca05b454..6ded44c3 100644 --- a/plugins/Kaleidoscope-SpaceCadet/src/kaleidoscope/plugin/SpaceCadetConfig.cpp +++ b/plugins/Kaleidoscope-SpaceCadet/src/kaleidoscope/plugin/SpaceCadetConfig.cpp @@ -19,7 +19,7 @@ #include "SpaceCadet.h" #include "kaleidoscope/plugin/SpaceCadet.h" -#include // for F, __FlashStringHelper +#include // for PSTR #include // for Focus, FocusSerial #include // for EEPROMSettings #include // for uint16_t, int8_t, uint8_t @@ -51,15 +51,10 @@ EventHandlerResult SpaceCadetConfig::onFocusEvent(const char *command) { const char *cmd_mode = PSTR("spacecadet.mode"); const char *cmd_timeout = PSTR("spacecadet.timeout"); - // Note: These two calls are intentionally separate, because we want the side - // effects. If we were to use `||`, only one of them would run. - bool help_handled = ::Focus.handleHelp(command, cmd_mode); - help_handled |= ::Focus.handleHelp(command, cmd_timeout); + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_mode, cmd_timeout); - if (help_handled) - return EventHandlerResult::OK; - - if (strcmp_P(command, cmd_mode) == 0) { + if (::Focus.inputMatchesCommand(command, cmd_mode)) { if (::Focus.isEOL()) { ::Focus.send(::SpaceCadet.settings_.mode); } else { @@ -81,7 +76,7 @@ EventHandlerResult SpaceCadetConfig::onFocusEvent(const char *command) { Runtime.storage().put(settings_base_, ::SpaceCadet.settings_); Runtime.storage().commit(); } - } else if (strcmp_P(command, cmd_timeout) == 0) { + } else if (::Focus.inputMatchesCommand(command, cmd_timeout)) { if (::Focus.isEOL()) { ::Focus.send(::SpaceCadet.settings_.timeout); } else { diff --git a/plugins/Kaleidoscope-TypingBreaks/src/kaleidoscope/plugin/TypingBreaks.cpp b/plugins/Kaleidoscope-TypingBreaks/src/kaleidoscope/plugin/TypingBreaks.cpp index 7d660516..6dddbbd4 100644 --- a/plugins/Kaleidoscope-TypingBreaks/src/kaleidoscope/plugin/TypingBreaks.cpp +++ b/plugins/Kaleidoscope-TypingBreaks/src/kaleidoscope/plugin/TypingBreaks.cpp @@ -17,7 +17,7 @@ #include "kaleidoscope/plugin/TypingBreaks.h" -#include // for PSTR, strcmp_P, F, __FlashStringHelper +#include // for PSTR, F, __FlashStringHelper #include // for EEPROMSettings #include // for Focus, FocusSerial #include // for uint32_t, uint16_t @@ -148,24 +148,27 @@ EventHandlerResult TypingBreaks::onFocusEvent(const char *command) { RIGHT_MAX, } subCommand; - if (::Focus.handleHelp(command, PSTR("typingbreaks.idleTimeLimit\r\n" - "typingbreaks.lockTimeOut\r\n" - "typingbreaks.lockLength\r\n" - "typingbreaks.leftMaxKeys\r\n" - "typingbreaks.rightMaxKeys"))) - return EventHandlerResult::OK; - - if (strncmp_P(command, PSTR("typingbreaks."), 13) != 0) - return EventHandlerResult::OK; - if (strcmp_P(command + 13, PSTR("idleTimeLimit")) == 0) + const char *cmd_idleTimeLimit = PSTR("typingbreaks.idleTimeLimit"); + const char *cmd_lockTimeOut = PSTR("typingbreaks.lockTimeOut"); + const char *cmd_lockLength = PSTR("typingbreaks.lockLength"); + const char *cmd_leftMaxKeys = PSTR("typingbreaks.leftMaxKeys"); + const char *cmd_rightMaxKeys = PSTR("typingbreaks.rightMaxKeys"); + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_idleTimeLimit, + cmd_lockTimeOut, + cmd_lockLength, + cmd_leftMaxKeys, + cmd_rightMaxKeys); + + if (::Focus.inputMatchesCommand(command, cmd_idleTimeLimit)) subCommand = IDLE_TIME_LIMIT; - else if (strcmp_P(command + 13, PSTR("lockTimeOut")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_lockTimeOut)) subCommand = LOCK_TIMEOUT; - else if (strcmp_P(command + 13, PSTR("lockLength")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_lockLength)) subCommand = LOCK_LENGTH; - else if (strcmp_P(command + 13, PSTR("leftMaxKeys")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_leftMaxKeys)) subCommand = LEFT_MAX; - else if (strcmp_P(command + 13, PSTR("rightMaxKeys")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_rightMaxKeys)) subCommand = RIGHT_MAX; else return EventHandlerResult::OK; diff --git a/src/kaleidoscope/plugin/LEDControl.cpp b/src/kaleidoscope/plugin/LEDControl.cpp index 8ae94d76..734aff09 100644 --- a/src/kaleidoscope/plugin/LEDControl.cpp +++ b/src/kaleidoscope/plugin/LEDControl.cpp @@ -16,7 +16,7 @@ #include "kaleidoscope/plugin/LEDControl.h" -#include // for PSTR, strcmp_P, strncmp_P +#include // for PSTR, strncmp_P #include // for Focus, FocusSerial #include "kaleidoscope/KeyAddrMap.h" // for KeyAddrMap<>::Iterator, KeyAddrMap @@ -224,24 +224,28 @@ EventHandlerResult FocusLEDCommand::onFocusEvent(const char *command) { if (!Runtime.has_leds) return EventHandlerResult::OK; - if (::Focus.handleHelp(command, PSTR("led.at\r\n" - "led.setAll\r\n" - "led.mode\r\n" - "led.brightness\r\n" - "led.theme"))) - return EventHandlerResult::OK; + const char *cmd_at = PSTR("led.at"); + const char *cmd_setAll = PSTR("led.setAll"); + const char *cmd_mode = PSTR("led.mode"); + const char *cmd_brightness = PSTR("led.brightness"); + const char *cmd_theme = PSTR("led.theme"); - if (strncmp_P(command, PSTR("led."), 4) != 0) - return EventHandlerResult::OK; - if (strcmp_P(command + 4, PSTR("at")) == 0) + if (::Focus.inputMatchesHelp(command)) + return ::Focus.printHelp(cmd_at, + cmd_setAll, + cmd_mode, + cmd_brightness, + cmd_theme); + + if (::Focus.inputMatchesCommand(command, cmd_at)) subCommand = AT; - else if (strcmp_P(command + 4, PSTR("setAll")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_setAll)) subCommand = SETALL; - else if (strcmp_P(command + 4, PSTR("mode")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_mode)) subCommand = MODE; - else if (strcmp_P(command + 4, PSTR("theme")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_theme)) subCommand = THEME; - else if (strcmp_P(command + 4, PSTR("brightness")) == 0) + else if (::Focus.inputMatchesCommand(command, cmd_brightness)) subCommand = BRIGHTNESS; else return EventHandlerResult::OK;