#pragma once #include "HotkeyCategory.hpp" #include #include namespace chatterino { // ActionDefinition is an action that can be performed with a hotkey struct ActionDefinition { // displayName is the value that would be shown to a user when they edit or create a hotkey for an action QString displayName; QString argumentDescription = ""; // minCountArguments is the minimum amount of arguments the action accepts // Example action: "Select Tab" in a popup window accepts 1 argument for which tab to select uint8_t minCountArguments = 0; // maxCountArguments is the maximum amount of arguments the action accepts uint8_t maxCountArguments = minCountArguments; }; using ActionDefinitionMap = std::map; inline const std::map actionNames{ {HotkeyCategory::PopupWindow, { {"reject", ActionDefinition{"Confirmable popups: Cancel"}}, {"accept", ActionDefinition{"Confirmable popups: Confirm"}}, {"delete", ActionDefinition{"Close"}}, {"openTab", ActionDefinition{ "Select Tab", "", 1, }}, {"scrollPage", ActionDefinition{ "Scroll", "", 1, }}, {"search", ActionDefinition{"Focus search box"}}, {"execModeratorAction", ActionDefinition{ "Usercard: execute moderation action", "", 1}}, }}, {HotkeyCategory::Split, { {"changeChannel", ActionDefinition{"Change channel"}}, {"clearMessages", ActionDefinition{"Clear messages"}}, {"createClip", ActionDefinition{"Create a clip"}}, {"delete", ActionDefinition{"Close"}}, {"focus", ActionDefinition{ "Focus neighbouring split", "", 1, }}, {"openInBrowser", ActionDefinition{"Open channel in browser"}}, {"openInCustomPlayer", ActionDefinition{"Open stream in custom player"}}, {"openInStreamlink", ActionDefinition{"Open stream in streamlink"}}, {"openModView", ActionDefinition{"Open mod view in browser"}}, {"openViewerList", ActionDefinition{"Open viewer list"}}, {"pickFilters", ActionDefinition{"Pick filters"}}, {"reconnect", ActionDefinition{"Reconnect to chat"}}, {"reloadEmotes", ActionDefinition{ "Reload emotes", "[channel or subscriber]", 0, 1, }}, {"runCommand", ActionDefinition{ "Run a command", "", 1, }}, {"scrollPage", ActionDefinition{ "Scroll", "", 1, }}, {"scrollToBottom", ActionDefinition{"Scroll to the bottom"}}, {"scrollToTop", ActionDefinition{"Scroll to the top"}}, {"setChannelNotification", ActionDefinition{ "Set channel live notification", "[on or off. default: toggle]", 0, 1, }}, {"setModerationMode", ActionDefinition{ "Set moderation mode", "[on or off. default: toggle]", 0, 1, }}, {"showSearch", ActionDefinition{"Search current channel"}}, {"showGlobalSearch", ActionDefinition{"Search all channels"}}, {"startWatching", ActionDefinition{"Start watching"}}, {"debug", ActionDefinition{"Show debug popup"}}, }}, {HotkeyCategory::SplitInput, { {"clear", ActionDefinition{"Clear message"}}, {"copy", ActionDefinition{ "Copy", "", 1, }}, {"cursorToStart", ActionDefinition{ "To start of message", "", 1, }}, {"cursorToEnd", ActionDefinition{ "To end of message", "", 1, }}, {"nextMessage", ActionDefinition{"Choose next sent message"}}, {"openEmotesPopup", ActionDefinition{"Open emotes list"}}, {"paste", ActionDefinition{"Paste"}}, {"previousMessage", ActionDefinition{"Choose previously sent message"}}, {"redo", ActionDefinition{"Redo"}}, {"selectAll", ActionDefinition{"Select all"}}, {"selectWord", ActionDefinition{"Select word"}}, {"sendMessage", ActionDefinition{ "Send message", "[keepInput to not clear the text after sending]", 0, 1, }}, {"undo", ActionDefinition{"Undo"}}, }}, {HotkeyCategory::Window, { #ifndef NDEBUG {"addCheerMessage", ActionDefinition{"Debug: Add cheer test message"}}, {"addEmoteMessage", ActionDefinition{"Debug: Add emote test message"}}, {"addLinkMessage", ActionDefinition{"Debug: Add test message with a link"}}, {"addMiscMessage", ActionDefinition{"Debug: Add misc test message"}}, {"addRewardMessage", ActionDefinition{"Debug: Add reward test message"}}, {"addSubMessage", ActionDefinition{"Debug: Add sub test message"}}, #endif {"moveTab", ActionDefinition{ "Move tab", "", 1, }}, {"newSplit", ActionDefinition{"Create a new split"}}, {"newTab", ActionDefinition{"Create a new tab"}}, {"openSettings", ActionDefinition{"Open settings"}}, {"openTab", ActionDefinition{ "Select tab", "", 1, }}, {"openQuickSwitcher", ActionDefinition{"Open the quick switcher"}}, {"popup", ActionDefinition{ "New popup", "", 1, }}, {"quit", ActionDefinition{"Quit Chatterino"}}, {"removeTab", ActionDefinition{"Remove current tab"}}, {"reopenSplit", ActionDefinition{"Reopen closed split"}}, {"setStreamerMode", ActionDefinition{ "Set streamer mode", "[on, off, toggle, or auto. default: toggle]", 0, 1, }}, {"toggleLocalR9K", ActionDefinition{"Toggle local R9K"}}, {"zoom", ActionDefinition{ "Zoom in/out", "", 1, }}, {"setTabVisibility", ActionDefinition{ "Set tab visibility", "[on, off, or toggle. default: toggle]", 0, 1, }}}}, }; } // namespace chatterino