Middle mouse button panning and a calm mouse wheel zoom for SignMaster V5.
SignMasterPan is a small, free Windows helper that runs in the background next to the sign-making software SignMaster V5 (FutureCorp). While SignMaster is active, you can pan the workspace by dragging with the middle mouse button, just like in most CAD and graphics programs. The mouse wheel zoom no longer jumps around.
Note
This project was created with the help of AI. The source code, the icons and this documentation were written with Claude Code (Anthropic), guided and tested by a SignMaster user. The code has been tested in practice, but please review it yourself before relying on it.
SignMaster V5 is widely used to design signs, stickers and vinyl lettering and to drive cutting plotters. In daily work, two things make navigating a drawing tedious:
- No panning with the middle mouse button. Most design programs let you grab the canvas with the middle mouse button. In SignMaster, the middle button does nothing useful. You have to switch to the hand tool (Pan Mode) and back, or drag the scroll bars at the edge of the window.
- Jumpy mouse wheel zoom. SignMaster re-centers the view on the cursor position with every wheel step. If the mouse moves only slightly between two wheel steps, the view jumps unexpectedly.
SignMasterPan was built to fix exactly these two annoyances without changing SignMaster itself. It does not modify SignMaster's files and does not inject code into it. It only reacts to your mouse input and operates SignMaster's own scroll bars and zoom shortcuts.
- Pan with the middle mouse button: hold and drag over the workspace. The currently selected tool stays active, and the mouse pointer does not jump.
- Calm mouse wheel zoom: over the workspace, the wheel sends SignMaster's zoom keys F3 (zoom in) and F4 (zoom out) instead of the cursor-centered zoom. Hold Ctrl/Shift/Alt/Win to use the original wheel behavior.
- Only active in SignMaster: in all other programs, and in SignMaster's toolbars and dialogs, the middle button and the wheel behave normally.
- One switch for everything: Enabled in the tray menu (or Ctrl+Alt+P) temporarily switches all functions off; the tray icon then turns gray.
- Settings dialog: all options can be changed in a window and are saved automatically.
- German and English user interface: follows the Windows display language; more languages can be added as text files.
- Download and installation
- Usage
- Settings
- Building from source
- Files
- How it works (technical)
- Troubleshooting
- Limitations
- License
- Windows 10 or 11
- SignMaster V5 (tested with "SignMaster XPT 5.0",
Sign_Master.exeinC:\Program Files (x86)\FutureCorp\SignMaster\BinExe)
Tested on a 4K monitor with 150 % Windows scaling.
- Download
SignMasterPan.exefrom the latest release. - Put it into a folder of your choice where you have write access (e.g.
Documents\SignMasterPan). On the first start, the program creates itsSignMasterPan.iniand alang\folder next to the exe. - Double-click
SignMasterPan.exe.
A short notification appears, then the icon (white mouse with an orange wheel on a blue background) sits in the notification area. On Windows 11 it first lands in the hidden overflow area behind the ^ arrow.
To keep the icon visible: Windows Settings → Personalization → Taskbar → Other system tray icons → switch SignMasterPan on.
Only one instance runs at a time; a second start is ignored. SignMasterPan.exe /settings additionally opens the settings dialog on startup (only if the program is not running yet).
- Press
Win + R, typeshell:startup, press Enter. - In the Startup folder that opens, create a shortcut to
SignMasterPan.exe(right-click the exe → Show more options → Create shortcut, then move the shortcut there).
| Action | Effect |
|---|---|
| Hold and drag the middle mouse button over the workspace | The workspace follows the mouse. The currently selected tool stays active. |
| Esc while dragging | Cancel the pan |
| Wheel up over the workspace | sends F3 → zoom in |
| Wheel down over the workspace | sends F4 → zoom out |
| Mouse wheel with Ctrl / Shift / Alt / Win held | passed to SignMaster unchanged |
| Ctrl + Alt + P | Temporarily switch all functions off and on again (same as Enabled in the tray menu) |
| Item | Meaning |
|---|---|
| Enabled | Master switch: temporarily switches panning and mouse wheel zoom off and on again (same as Ctrl+Alt+P). Not saved; after starting, the program is always enabled. While disabled, the tray icon is gray and the middle button/mouse wheel work normally in SignMaster. |
| Settings... | Opens the settings dialog |
| Help | Short instructions |
| Exit | Quit the program |
Tray menu → Settings... opens a window containing all settings:
| Area | Setting |
|---|---|
| General | Language (Automatic or one of the languages from lang\), shortcut for Enabled on/off |
| Pan with middle mouse button | Function switched on, speed, reverse direction |
| Mouse wheel zoom | Replace mouse wheel with keys, key for wheel up, key for wheel down |
| Diagnostics | Write log |
- "Function switched on" (panning) and "Replace mouse wheel with keys" permanently define which functions are used, including at program start. Enabled in the tray menu, in contrast, only switches everything off temporarily.
- Every change is applied immediately and saved to
SignMasterPan.ini. That is why there is only Close and no OK button. The speed is applied as soon as you leave the field or press Enter. - Shortcut and zoom keys are entered by simply pressing the desired key or key combination. Backspace clears the on/off shortcut (then there is none). If a shortcut is already used by another program, a notice appears and the old value is kept.
- Defaults resets all settings after a confirmation.
- While the dialog is open, the on/off shortcut is disabled so it can be typed into the input field.
SignMasterPan.ini sits next to the exe and is completed with default values on startup. Changes made in the settings dialog take effect immediately; changes made directly in the file only after restarting the program.
[General]
Language=auto
[Hotkeys]
Toggle=^!p
[Pan]
Enabled=1
Speed=1
Invert=0
[Zoom]
Enabled=1
KeyIn={F3}
KeyOut={F4}
[Debug]
Log=0| Section | Key | Default | Meaning |
|---|---|---|---|
[General] |
Language |
auto |
User interface language: auto = Windows display language (if a language file exists for it, otherwise English), de = German, en = English, or the code of another language file in lang\. |
[Hotkeys] |
Toggle |
^!p |
Shortcut for Enabled on/off (all functions, temporarily), in AutoIt notation: ^ = Ctrl, ! = Alt, + = Shift, # = Win. If another program already uses the shortcut, a notice appears at startup. Empty = no shortcut. |
[Pan] |
Enabled |
1 |
0 = panning with the middle mouse button permanently switched off (also after program start). |
[Pan] |
Speed |
1 |
Pan speed. 1 = the workspace follows the mouse 1:1, 1.2 = faster, 0.8 = slower. |
[Pan] |
Invert |
0 |
1 reverses the direction (move the view instead of the workspace). |
[Zoom] |
Enabled |
1 |
0 = do not intercept the mouse wheel; SignMaster zooms as usual. |
[Zoom] |
KeyIn |
{F3} |
Key for wheel up (AutoIt Send syntax, e.g. {F3}, {+}, ^{UP}). |
[Zoom] |
KeyOut |
{F4} |
Key for wheel down. |
[Debug] |
Log |
0 |
1 writes a log to SignMasterPan.log (see Troubleshooting). |
SignMasterPan is written in AutoIt 3.3.18. AutoIt itself is not part of this repository.
-
Download the AutoIt portable (zip) package from the AutoIt downloads page and extract it into a folder named
AutoItinside the project folder, so thatAutoIt\AutoIt3.exeandAutoIt\Aut2Exe\Aut2exe.exeexist. -
Run the script directly:
AutoIt\AutoIt3.exe SignMasterPan.au3It behaves exactly like the exe. The tray icon is then loaded from
SignMasterPan.ico, or fromSignMasterPan_off.icowhile disabled. -
Or build the exe: quit a running
SignMasterPan.exevia its tray menu (otherwise the file is locked), then double-clickbuild.cmd. It calls:AutoIt\Aut2Exe\Aut2exe.exe /in SignMasterPan.au3 /out SignMasterPan.exe /icon SignMasterPan.ico /x86 /nopack /comp 2/x86: 32-bit exe; the program was tested in this variant./nopack: no UPX compression. Packed AutoIt programs are flagged by antivirus software more often (false positives).- The language files and the gray tray icon are embedded into the exe.
Syntax check without compiling:
AutoIt\Au3Check.exe SignMasterPan.au3
The icons are generated by tools\make_icon.ps1:
powershell -ExecutionPolicy Bypass -File tools\make_icon.ps1 -OutIco SignMasterPan.ico
powershell -ExecutionPolicy Bypass -File tools\make_icon.ps1 -OutIco SignMasterPan_off.ico -Gray
| File | Description |
|---|---|
SignMasterPan.au3 |
Source code (AutoIt) |
SignMasterPan.ico |
Program and tray icon (16–256 px) |
SignMasterPan_off.ico |
Gray tray icon for the disabled state (embedded in the exe) |
lang\de.lng, lang\en.lng |
Language files containing all user interface texts |
build.cmd |
Builds the exe (requires AutoIt in AutoIt\) |
tools\make_icon.ps1 |
Generates both icons (-Gray for the gray variant) |
LICENSE |
MIT license |
SignMasterPan.exe |
Compiled program; not in the repository, see Releases |
SignMasterPan.ini, SignMasterPan.log |
Created at runtime next to the exe; not in the repository |
A system-wide low-level mouse hook (WH_MOUSE_LL) watches the middle button and the mouse wheel. An event is only intercepted if
- the active window is the SignMaster main window (window class
TVmAppMainform.UnicodeClass), and - the window under the mouse pointer belongs to a document window (
TVmDocWindow.UnicodeClass).
Input generated by the program itself (injected input) is ignored. The hook only sets flags; the main loop does the actual work so that the hook returns quickly.
SignMaster does not react to WM_HSCROLL/WM_VSCROLL, and the mouse wheel always zooms. However, the scroll sliders at the bottom and right of the document window are TRangeBar controls from the Delphi graphics library Graphics32. They evaluate mouse messages using the coordinates contained in the message, so they can be operated via PostMessage without moving the real mouse pointer:
- When the middle button is pressed, both sliders of the document window are rendered into a memory bitmap with
PrintWindow. The thumb is located on the center line as the longest run whose color differs from the track color. Important: pixels are read withGetPixel, becauseGetDIBitsonly returns background for SignMaster. - Conversion factor per direction = thumb length ÷ length of the visible workspace. The workspace size is derived from the position of the slider panels and the ruler.
- On every mouse movement the movement is multiplied by the factor. As soon as a whole thumb pixel has accumulated, the slider receives the sequence
WM_LBUTTONDOWN(on the thumb) →WM_MOUSEMOVE(shifted) →WM_LBUTTONUP. SignMaster then scrolls the view itself. The thumb position is tracked internally and clamped to the ends of the track so that the click never lands next to the thumb.
Advantages: the tool is not switched, and the mouse pointer does not jump.
The wheel delta is accumulated. For every full notch (120), KeyIn or KeyOut is sent to SignMaster via Send. Finer deltas (touchpads, free-spinning wheels) are collected until a full notch is reached.
The master switch only sets a flag that the mouse hook checks. Switching off ends a running pan and discards zoom steps that have not been sent yet. The gray icon is embedded in the exe and extracted to %TEMP%\SignMasterPan_off.ico on startup.
All user interface texts live in language files in the lang\ folder, one file per language (de.lng, en.lng). The format is a simple INI-like text format in UTF-8:
[Language]
Code=en
Name=English
[Strings]
tray_help=Help
start=Running. Drag with the middle mouse button to pan the workspace.
hk_busy=The hotkey %1 is already in use.\nEnter a different key.\ninserts a line break;%1to%4are placeholders filled in by the program.- In the script,
_T("key")returns the text in the current language. If a text is missing, the English one is used; if that is missing too, the key itself. - Adding a language: copy
en.lng, e.g. tofr.lng, adjustCode/Nameand translate the texts. After a restart the language appears in the settings dialog automatically and is chosen withLanguage=autowhen Windows runs in that language. Contributions of new languages are welcome. - The exe embeds
de.lnganden.lngand extracts them tolang\on startup if they are missing there. Existing files are not overwritten, so your own changes are kept. After an update with new texts, delete the old files so the new ones get extracted.
SignMaster runs as "DPI-unaware" (compatibility setting). AutoIt also works in the scaled 96-DPI coordinate system, so a mouse movement of X pixels corresponds to exactly X pixels in SignMaster. Screenshots taken by DPI-unaware programs, on the other hand, only capture the physical top-left part of the screen. Keep this in mind when debugging with screenshots.
Enable Write log in the settings (or set [Debug] Log=1 in SignMasterPan.ini and restart the program). SignMasterPan.log then contains, among other things:
MBUTTONDOWN active=… pan=… over=True/False window=… under=…: whether the middle click was detected, whether the program is enabled and panning switched on, and which window it was overActive=True/False: toggling EnabledPanBegin … H=… V=… kH=… kV=…: sliders found, thumb position/length and conversion factorsBarInfo …: no thumb found: slider without a recognizable thumbmove H/V …: every thumb movement sent
Switch the log off again afterwards, otherwise the file grows with every movement.
SignMasterPan.exe /selftest
Simulates a pan (200 px to the left, 120 px up) in SignMaster's first document window without using the mouse, then exits. With the log enabled, the details are written to the log. The self-test also runs while the program is already active in the background.
| Problem | Cause / solution |
|---|---|
| Nothing happens when dragging | If the whole drawing is visible, SignMaster shows no thumb, so there is nothing to scroll. Otherwise enable the log and check that over=True appears and sliders are found. |
| Notice "hotkey already in use" | Choose a different on/off shortcut in the settings dialog. |
| Workspace moves faster/slower than the mouse | Adjust the speed in the settings dialog. |
| Mouse wheel should zoom the original way again | Settings → uncheck "Replace mouse wheel with keys", or temporarily switch everything off via Enabled in the tray menu. |
| Does not work while SignMaster runs as administrator | Windows blocks input from normal to elevated programs. Start SignMasterPan as administrator as well. |
| Antivirus flags the exe | A false positive typical for AutoIt programs. Add the file as an exception or run the script directly with AutoIt3.exe. |
- At very high zoom levels the thumb becomes small; one thumb pixel then corresponds to many workspace pixels, and panning becomes steppy.
- Panning stops at the edge of the scroll area, just like dragging the slider.
- Pan direction and speed are determined once when the middle button is pressed. If the zoom changes meanwhile (e.g. via the mouse wheel), the factor is no longer exact until the next press.
- Depends on SignMaster internals (window classes, Graphics32 sliders). A SignMaster update may require adjustments.
SignMasterPan is released under the MIT License.
This project is not affiliated with, endorsed by or supported by FutureCorp. SignMaster is a product of its respective owner; all trademarks belong to their owners.