Ignition Designer 7.7.5 has no user-configurable keyboard shortcuts, so Group, Ungroup and the alignment tools stay mouse-only unless something outside the Designer supplies them. On Windows, an AutoHotkey script that clicks the menu and then the menu item gives you Ctrl+G and Ctrl+Shift+G today. On Linux, AutoKey or xdotool can do the same, but synthetic input into a Java application is less reliable there. The macro stays stable only if you control three numbers: the menu pixel offset, the item pixel offset, and the delay between the two clicks.
Symptom Quantities and Where to Read Them
A coordinate macro fails in a small number of ways. Each failure maps to one quantity that has moved past what the script expects. The number that matters most is the pixel offset of the menu item relative to the window's top-left corner. If that offset drifts by even one menu row, the macro clicks the wrong command.
| Quantity | Value in the working sample | Symptom when out of range | Where to read it |
|---|---|---|---|
| Menu header position (x, y) | 200,40 |
Nothing opens, or the wrong menu opens | AutoHotkey Window Spy, "Window" coordinates, with the pointer on the menu header |
| Group item position | 240,65 |
The wrong command runs | Window Spy with the menu held open |
| Ungroup item position | 240,85 |
The wrong command runs | Window Spy with the menu held open |
| Delay between clicks | None in the sample | Second click lands before the popup paints and hits the canvas | Tune by hand; raise it until 20 consecutive triggers succeed |
| Display scaling | Whatever the author's PC used | All offsets shift proportionally on another PC | Windows Display Settings, scale percentage |
| Window title match | Substring "Ignition Designer" | Hotkey never fires | Window Spy, title line |
Why Menu Automation Needs Pixel Clicks
The Designer is a Java Swing application. Swing draws its own menu bar and popups inside a single native window. That has two consequences for macros.
- The Win32 menu APIs that AutoHotkey commands such as
WinMenuSelectItemrely on cannot see Swing menus. You are left with screen-position clicks or keyboard navigation. - The popup menu is painted on the Java event dispatch thread. It appears some milliseconds after the header click. A second synthetic click sent with no delay can arrive before the popup exists. That click then lands on whatever sits underneath: usually the canvas, which deselects your components. This is a timing problem, not a logic problem.
Keyboard navigation (open menu, arrow down N times, Enter) looks cleaner, but it is the least reliable path. It is especially fragile on Linux, where key events injected into Java apps are sometimes dropped or reordered. Mouse clicks at fixed offsets, with an explicit settle delay, hold up better.
AutoHotkey Procedure for Group and Ungroup
The widely shared sample works, but it has two defects:
-
Hotkeys are global. It tests
IfWinActiveinside the hotkey body. As a result,Ctrl+Gis captured in every application and silently does nothing outside the Designer. -
Hotkey blocks fall through. The multi-line hotkey blocks have no
return. In AutoHotkey v1, execution then runs into the next hotkey's code, soCtrl+Gperforms Group and then immediately Ungroup.
- Install AutoHotkey v1.1. The syntax below is v1; v2 changes command syntax and will not parse it.
- Open a Designer window at the size and scaling you normally use.
- Run Window Spy and read the window-relative coordinates of the menu header that holds Group and Ungroup.
- Open that menu, then read the coordinates of the Group and Ungroup items.
- Save the script below as
.ahkand substitute your measured coordinates. TheSleepvalue is a starting point, not a specification. - Run the script, select two components on a window, and press
Ctrl+G.
#NoEnv
#SingleInstance Force
SetTitleMatchMode, 2 ; match title substring anywhere
CoordMode, Mouse, Window ; offsets relative to the active window
#IfWinActive, Ignition Designer ; hotkeys exist only in the Designer
^g:: ; Ctrl+G = Group
MouseGetPos, mx, my
Click, 200, 40 ; menu header (measure yours)
Sleep, 150 ; settle delay, tune upward if flaky
Click, 240, 65 ; Group item (measure yours)
MouseMove, %mx%, %my%, 0 ; put the pointer back
return
^+g:: ; Ctrl+Shift+G = Ungroup
MouseGetPos, mx, my
Click, 200, 40
Sleep, 150
Click, 240, 85 ; Ungroup item (measure yours)
MouseMove, %mx%, %my%, 0
return
#IfWinActive
Alignment tools follow the same pattern: one hotkey label, one header click, one delay, one item click, and a return. Before you bind any key, open each Designer menu and note which accelerators it already shows. A macro on a key the Designer already uses creates a double action.
Linux: AutoKey and xdotool
AutoKey scripts are written in Python and can bind a hotkey to a window-title filter. xdotool is a single command line that you bind through your desktop environment's keyboard shortcut settings. Either way, prefer mouse clicks over keystroke sequences, for the Java event-injection reason above.
xdotool search --name "Ignition Designer" windowactivate --sync \
mousemove --window %1 200 40 click 1 sleep 0.15 \
mousemove --window %1 240 65 click 1
Measure offsets on Linux separately. Window decorations and theme fonts change the menu geometry compared with Windows.
Verification
- Select two or more components and press
Ctrl+G. A single group should appear in the Project Browser, with no Ungroup following it. - Press
Ctrl+Shift+Gon the group. The components should return to individual entries. - Trigger each hotkey 20 times in a row. If any trigger clicks the canvas or leaves a menu hanging open, raise the delay and repeat.
- Switch to another application that uses
Ctrl+G, such as Notepad's Go To. Its native behavior should be intact, which confirms the#IfWinActivescoping. - Repeat the test with the Designer maximized and restored, and on a second monitor if one is used. Window-relative coordinates should survive a move, but not a scaling change.
Recurring Pitfalls
- Per-PC scaling. An engineering laptop at 150% scaling and a desk PC at 100% need different offsets. Keep one coordinate set per scaling value, or standardize scaling on engineering workstations.
- Fleet deployment. A script on one PC does not scale to every engineering workstation. Compile it with Ahk2Exe into a standalone executable. Distribute it from a shared location and place a shortcut in each user's Startup folder, so new machines only need that shortcut.
- Designer upgrades. A new Ignition release can reorder menu items. Re-measure after every Designer upgrade before trusting the hotkeys again.
- Pointer races. Moving the mouse while the macro runs can redirect a click. The restore-pointer lines keep the cursor predictable, but keep your hands off the mouse for the fraction of a second the macro takes.
- Keyboard-only sequences. Arrow-key menu navigation fails intermittently in Java apps, particularly on Linux. Use clicks.
FAQ
How do I add a keyboard shortcut for Group in Ignition Designer 7.7?
The Designer has no custom-shortcut setting. Use an AutoHotkey v1 script scoped with #IfWinActive, Ignition Designer. It clicks the menu header, waits a short delay, then clicks the Group item, with each hotkey block ending in return.
Why does my AutoHotkey Ctrl+G group and then ungroup immediately?
The hotkey block has no return, so execution falls through into the next hotkey's code. Add return after each block.
How do I find the click coordinates for Designer menu items?
Run AutoHotkey's Window Spy and hold the menu open. Read the window-relative coordinates of the header and each item, and use them with CoordMode, Mouse, Window. Re-measure on any PC with different display scaling.
How do I get hotkeys in Ignition Designer on Linux?
Bind an xdotool click sequence through your desktop's shortcut settings, or write an AutoKey Python script with a window filter. Use mouse clicks with a sleep between them rather than arrow-key navigation, which is unreliable in Java apps. If the macro still misfires after re-measuring offsets and raising the delay, stop tuning it. Submit a built-in shortcut feature request through Inductive Automation's official support channels, and check the release notes of newer Designer versions for native shortcut support before maintaining macros across your fleet.