We all love shortcuts. Whether it's a faster route to work, pressing 0 to talk to a human being instead of listening to an automated menu, or your favorite Internet browser pinned to the Windows taskbar.

With rocker support, modifiers, hot keys, macros, text expansion, and a robust ClearScript interface using the Chrome V8 JavaScript engine built right in, there's virtually no limit to what you can automate.


Multiple Stroke Buttons

  • StrokesPlus.net supports an additional stroke button, so you can have different actions based on which stroke button is pressed.

Gesture Hints

  • Real-time analysis of the current gesture displays what will be executed as you draw. Customize the hint popup's font, colors, location, and more.

Easy To Use Steps

  • For simple (even complicated!) tasks or novice users, Steps allow you to get working right away without needing to learn scripting.

Powerful Script Engine

  • Using Microsoft ClearScript and the Chrome V8 JavaScript engine, StrokesPlus.net opens up access to convenient built-in functions, and access to the Microsoft .NET Framework.

Touch and Pen Support

  • Floaters enable quick access to fire actions using your finger or pen. Create custom floaters to place anywhere which can execute scripts, or act as a fixed key.

Text Expansion

  • Create global or application specific text expansion tokens to quickly insert commonly used text, RTF, or HTML snippets.

Gesture Regions

  • Define global or application level regions to perform different actions for the same gesture in different areas of the screen.

Hot Keys & Macros

  • Create custom hot keys to execute scripts without using the mouse. Record mouse and keyboard input to create custom macros that can be called from actions.

Plug-In Support

  • Create your own plug-in by building a .NET Class Library DLL and dropping it in the Plug-Ins folder to extend StrokesPlus.net.

Ignore Applications

  • Define controls, windows, or entire applications which should be completely ignored by StrokesPlus.net.

Script Help

  • Descriptive help with examples explain what built-in functions are available and how to use them.

Granular Configuration

  • Control every aspect of StrokesPlus.net internals and precisely what event and conditions perform actions.


  • You can import or export single actions, an application, or pick and choose exactly what you want.

What's New:

  • Not triggering an automatic update for this release pending further testing
  • Added mouse and keyboard hook event subscriptions, these can be subscribed to via plug-ins or scripts; this is still an experimental feature, use with caution
  • See this post for further details: https://forum.strokesplus.net/posts/m10429-Mouse---Keyboard-Event-Subscriptions
  • By default, events are asynchronous; this is the recommended approach unless you understand and accept the potential consequences as they can cause S+ to become unstable if not done properly
  • Sychronous binding allows you to examine the event and instruct S+ to consume the event
  • Multiple subscriptions to synchronous events or poorly written code can cause poor user experience when simply trying to use Windows as every event has to be passed to and processed by each subscriber. Please exercise responsible judgement when choosing to enable synchronous hook events!
  • Added enable mouse/keyboard hook event subscriptions to Options > Advanced, these options control whether the events can be subscribed to via plug-ins or script.
  • Note that enabling these options and using a plug-in or script, which you do not have the source code to review or interpret, can allow someone to log all of your mouse and keyboard activity!
  • If you have the options unchecked, NO script or plug-in can hook these events.
  • Added logic in script engine reload to disconnect any ClearScript events stored via sp.StoreObject; you will need to reconnect after OK/Apply or Reload...probably best to connect/store via Load script, recommend testing against new __spEngineWrapper.Engine.Name object to only bind events in a single engine, ideally use the last engine to avoid script/event contention
  • Added __spEngineWrapper object to all script engines, which respresents the V8ScriptEngineWrapper for the currently executing engine. See the autocomplete list in the script editor for method and propert names. Note that the IsExecuting property does not report true for event bindings as these happen outside of the normal script execution scope.
  • The __spEngineWrapper.Engine property is a ClearScript V8ScriptEngine object (https://microsoft.github.io/ClearScript/Reference/html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm)
  • Updated V8ScriptEngineWrapper.Execute to call Interrupt if already executing
  • Added Space Resets Token to Options Text Expansion for use when Space is not a trigger, allowing spaces to still reset the token for matching against text expansions. Note that Tab and Enter already reset the token even if not selected as a trigger.
  • Updated zh-CN translations
  • Added language entries:
    • tabPreferencesEnableMouseHookSubscription
    • tabPreferencesEnableKeyboardHookSubscription
    • tabPreferencesTextExpansionSpaceResetsToken