Giter Club home page Giter Club logo

streamdeck-supermacro's Introduction

SuperMacro - Advanced keystroke macros triggered by the Elgato Stream Deck

Author's website and contact information: https://barraider.github.io

New in v1.7

  • ๐Ÿ†• Loops Support!
    • Sticky SuperMacro and Sticky Keystroke both support loops! Use the Auto Stop After N Rounds to create loops which will run a customizable amount of times.
  • New Variable Commands!
    • {{VARSET}} - Use {{VARSET:VarName:Value}} to set the value Value into VarName. You can then use {{OUTPUT:VarName}} to display it
    • {{VARSETFROMFILE}} - Use {{VARSETFROMFILE:VarName:c:\myfile.txt}} to read myfile.txt and store its contents into VarName. You can then use {{OUTPUT:VarName}} to display it
    • {{VARUNSET}} - Use {{VARUNSET:VarName}} to clear VarName
    • {{VARUNSETALL}} - Clears all variables. Usage: {{VARUNSETALL}}
  • Full support for Numpad buttons! Added a bunch of new commands to differentiate between Numpad buttons and their non-Numpad variation (Arrows, Home, End, ...). See full list below
  • Storing/Restore mouse position. Use {{MSAVEPOS}} to store the current mouse position. Later use {{MLOADPOS}} to move the mouse back to that position
  • Mouse Double-Clicks:
    • Left Double Click now uses the {{MLEFTDBLCLICK}} command.
    • Right Double Click now uses the {{MRIGHTDBLCLICK}} command.
  • MouseXY command which is superseding the MousePos command. Use it to move the mouse cursor to a specific place on your desktop. Use together with the new Mouse Location action in Win Tools to quickly determine the coordinates you want.
  • Support for mouse Button 4 and Button 5 - Use {{XBUTTON1}} for Button 4 click. Use {{XBUTTON2}} for Button 5 click.
  • New Let macro complete on stop option available for Sticky SuperMacro. Will ensure the macro completes fully when the button is pressed

New in v1.6

  • Macros can now be loaded directly from a text file (instead of being edited in the Stream Deck App)
    • Plugin will read the file on keypress to ensure the latest version of the macro is executed
  • New option to ignore "new line" in textbox and only react to {{enter}}. Allows you to write macros on multiple lines to make them more readable

New in v1.5

  • The long awaited Variable support has now arrived!!! :new: You can now get input from the user and store it in variables. For example: Using {{INPUT:YourName}}Hello {{OUTPUT:YourName}} will first ask the user for a value, store it in YourName and then type it after the Hello part. You can use this many times, and with any different variable names.
  • SuperMacro now supports putting a : between the command name and value, which allows better readability of your macros. You can now type {{PAUSE:1000}}, {{KEYDOWN:SHIFT}},{{MOUSEMOVE:1,1}} etc.

Current functionality

5 Plugins built into one:

Super Macro

This is the basic implementation. Create a macro and run it on keypress. Examples can be seen in the Usage Examples section below.

Super Macro Toggle

Toggle between two different macros.

Sticky Super Macro

Click once to enable, the macro will run again and again until the button is pressed again

Keystroke PTT

This action limits the action to either one command (such as {{ctrl}{c}}) or one character. The command will be run again and again as long as you continue to press the key.

Sticky Keystroke

This action limits the action to either one command (such as {{ctrl}{c}}) or one character. The command will be run again and again until the button is pressed again.

How do I get started using it?

SuperMacro knows to deal with both Commands and normal text. A command is either one special key (like F5 or Winkey) or a keystroke (like Ctrl-C). A command is always enclosed in {} and each individual key in the command is also inclosed in {} so you should always see two {{ at the beginning and two }} at the end. For instance: {{f5}} or {{ctrl}{c}}

Usage Examples

  1. Open Windows Explorer and got to C:\Program Files
    Note: Delay should be ~20 ms
{{win}{e}}{{pause:400}}{{alt}{d}}c:\Program Files\{{enter}}
  1. Open notepad and play with the settings
    Note: Delay should be ~20 ms
    Note2: This will not work correctly if your Windows (and notepad) are not in English
{{win}{r}}{{pause:500}}notepad.exe{{enter}}{{pause:1000}}Ok... Let's see what this plugin can do...{{alt}{f}}{{right}}{{PAUSE:400}}{{right}}{{PAUSE:400}}f{{pause:400}}times{{down}}{{PAUSE:400}}{{tab}}{{PAUSE:400}}{{down}}{{PAUSE:400}}{{down}}{{PAUSE:400}}{{ENTER}}{{ENTER}}For more information visit: https://barider.g1thubio{{ctrl}{shift}{left}}{{PAUSE:400}}https://barraider.github.io{{ENTER}}{{alt}{o}}f{{PAUSE:100}}Lucida Console{{tab}}Regular{{Tab}}12{{ENTER}}
  1. Calculate something
    Note: Delay should be ~20 ms
{{win}{r}}{{pause:300}}calc{{enter}}{{pause:1000}}1*2*3*4*5=
  1. Move the mouse to a certain position on the screen
{{MOUSEPOS:40000,15000}}
  1. Move the mouse by 10 pixels left and 20 pixels down on every press
{{MOUSEMOVE:-10,20}}
  1. Get input from user and then use it later on.
{{INPUT:Name}}Hello {{OUTPUT:Name}}, Nice to meet you!

Download

https://github.com/BarRaider/streamdeck-supermacro/releases

I found a bug, who do I contact?

For support please contact the developer. Contact information is available at https://barraider.github.io

I have a feature request, who do I contact?

Please contact the developer. Contact information is available at https://barraider.github.io

Dependencies

This plugin uses the StreamDeck-Tools v2.0

List of supported keystroke commands

Keyboard Key Macro Command
Letters A-Z {VK_XXXX} (XXXX = the letter - e.g. VK_A / VK_B ...)
Numbers 0-9 {VK_XXXX} (XXXX = the number - e.g. VK_0 / VK_1 ...)
These characters:
;/`[\]':?~{|}"
Exact command changes between keyboard layouts:
Try the following macros to figure out the correct command:
{{oem_1}}{{oem_2}}{{oem_3}}{{oem_4}}{{oem_5}} {{oem_6}}{{oem_7}}{{oem_8}} {{shift}{oem_1}}{{shift}{oem_2}}{{shift}{oem_3}} {{shift}{oem_4}}{{shift}{oem_5}} {{shift}{oem_6}}{{shift}{oem_7}}{{shift}{oem_8}}
Numpad 0 {NUMPAD0}
Numpad 1 {NUMPAD1}
Numpad 2 {NUMPAD2}
Numpad 3 {NUMPAD3}
Numpad 4 {NUMPAD4}
Numpad 5 {NUMPAD5}
Numpad 6 {NUMPAD6}
Numpad 7 {NUMPAD7}
Numpad 8 {NUMPAD8}
Numpad 9 {NUMPAD9}
Numpad * {MULTIPLY}
Numpad + {ADD}
Numpad - {SUBTRACT}
Numpad . {DECIMAL}
Numpad / {DIVIDE}
BACKSPACE {BACK}
TAB {TAB}
CLEAR {CLEAR}
ENTER {RETURN} or {ENTER}
SHIFT {SHIFT}
Left SHIFT {LSHIFT}
Right SHIFT {RSHIFT}
CTRL {CONTROL} or {CTRL}
Left CONTROL {LCONTROL} or {LCTRL}
Right CONTROL {RCONTROL} or {RCTRL}
ALT {ALT} or {MENU}
Left ALT {LALT} or {LMENU}
Right ALT {RALT} or {RMENU}
PAUSE/BREAK {BREAK}
CAPS LOCK {CAPITAL}
ESC {ESCAPE}
SPACEBAR {SPACE}
PAGE UP {PAGEUP} or {PGUP} or {PRIOR}
Numpad PAGE UP {NUMPAD_PAGEUP}
PAGE DOWN {PAGEDOWN} or {PGDN} or {NEXT}
Numpad PAGE DOWN {NUMPAD_PAGEDOWN}
HOME {HOME}
Numpad HOME {NUMPAD_HOME}
END {END}
Numpad END {NUMPAD_END}
UP ARROW {UP}
Numpad UP ARROW {NUMPAD_UP}
LEFT ARROW {LEFT}
Numpad LEFT ARROW {NUMPAD_LEFT}
RIGHT ARROW {RIGHT}
Numpad RIGHT ARROW {NUMPAD_RIGHT}
DOWN ARROW {DOWN}
Numpad DOWN ARROW {NUMPAD_DOWN}
SELECT {SELECT}
PRINT SCREEN {SNAPSHOT}
PRINT {PRINT}
EXECUTE {EXECUTE}
INS {INSERT}
Numpad INS {NUMPAD_INSERT}
DEL {DELETE}
Numpad DEL {NUMPAD_DEL}
HELP {HELP}
Left Windows {LWIN} or {WIN} or {WINDOWS}
Right Windows {RWIN}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
F17 {F17}
F18 {F18}
F19 {F19}
F20 {F20}
F21 {F21}
F22 {F22}
F23 {F23}
F24 {F24}
Plus: += {OEM_PLUS} / {{SHIFT}{OEM_PLUS}}
Minus: -_ {OEM_MINUS} / {{SHIFT}{OEM_MINUS}}
Period: .> {OEM_PERIOD} / {{SHIFT}{OEM_PERIOD}}
Comma: ,< {OEM_COMMA} / {{SHIFT}{OEM_COMMA}}
NUM LOCK {NUMLOCK}
SCROLL LOCK {SCROLL}

Advanced Commands

Note: Use a : between the command name and the arguments

PAUSE {PAUSE:XXXX} (XXXX = length in miliseconds)
KeyDown {KeyDown:XXXX} (XXXX = name of key, example {{KeyDown:F1}})
KeyUp {KeyUp:XXXX} (XXXX = name of key, example {{KeyUp:SHIFT}})
Input {Input:VarName} Get input from the user and store it in 'VarName'.
Output {Output:MyVar} Output the input previously gathered into 'MyVar'.
VarSet {VarSet:MyVar:MyValue} set the value `MyValue` into `MyVar`.
VarSetFromFile {VarSetFromFile:MyVar:C:\filename.txt} read the contents of the file specified and store into `MyVar`.
VarUnset {VarUnset:MyVar} clears `MyVar`.
VarUnsetAll {VARUNSETALL} clears all variables.
MSavePos {MSAVEPOS} stores the current mouse cursor position.
MLoadPos {MLOADPOS} moves the mouse to the previous set position (when `{MSAVEPOS}` was called).

Mouse Commands

Mouse Key Macro Command
Mouse Left-Click {LBUTTON}
Mouse Left Double-Click {MLEFTDBLCLICK}
Mouse Left Button Down {MLEFTDOWN}
Mouse Left Button Up {MLEFTUP}
Mouse Right-Click {RBUTTON}
Mouse Right Double-Click {MRIGHTDBLCLICK}
Mouse Right Button Down {MRIGHTDOWN}
Mouse Right Button Up {MRIGHTUP}
Mouse Middle Click {MBUTTON}
Mouse Middle Button Down {MMIDDLEDOWN}
Mouse Middle Button Up {MMIDDLEUP}
Mouse Button 4 Click {XBUTTON1}
Mouse Button 5 Click {XBUTTON2}
Mouse Scroll Wheel Up {MSCROLLUP}
Mouse Scroll Wheel Down {MSCROLLDOWN}
Mouse Horizontal Scroll Left {MSCROLLLEFT}
Mouse Horizontal Scroll Right {MSCROLLRIGHT}
Mouse Move: Based on CURRENT position {MOUSEMOVE:X,Y} (Move the cursor by X,Y from current position)
Mouse Move: based on multi-screen resolutions {MOUSEXY:X,Y} (Move the cursor to the X,Y position on the screen. 0,0 is the [top-left] of your primary monitor. Supports both positive and negative values. Use along with the Mouse Location plugin in Win Tools to easily find the right coordinates on your PC
Mouse Move: based on ABSOLUTE position (DEPRICATED) {MOUSEPOS:X,Y} (Move the cursor to the X,Y position on the screen. Values from 0,0 [top-left] to 65535,65535 [bottom-right])

streamdeck-supermacro's People

Contributors

barraider avatar danifonseca avatar dependabot-preview[bot] avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.