One thing to consider with the ESS is data (movement) is worked out in advance and then packets of tradjectoy data are sent to the motion controller.
Once the packets are sent, injecting movement won't be possible unless via THC (and that is a little uncontrolled) or m10/m11 input
Not an expert here and never tried it myself, but I'd suggest trying the the following:
Either setup brains or the macropump to look for a keyboard press (oemtrigger) or an input switch toggle, then create an mcode that brains or the macropump will then run, that will pop up a message box to ask how far you wish to move the coolant nozzle if the present angle setting is zero, that way after the initial setting it won't prompt you again for the job (need to think about where to store that number as something similar to a volatile variable, which is reset to zero at the end of the job)... The macro then toggles the axis back and forth and stores the current angle in a DRO which is compared so when the next time the mcode is run it will toggle the axis backk to vertical (if dro NOT() then statement)
Only thing is... I know that when an mcode is run the motion will pause unless an m10/m11 code is run... (There may be a way to use this as an input which will trigger axis motion... Maybe... I use m10/m11 with a plasma to turn torch height control on and off for corners etc without axis pause or hesitation with the ESS.
Just a thought maybe worth consideration