Hi,
I think there is some misunderstanding here (at least on my part

) ...
The description of how things work does not match my understanding of how mach actually does work.
To explain I'm going to have to go thru some technical details of what screen sets are and how mach implements them.
To most users a "screen set" is the set of stuff that they see visually on the screen. That is true, but to get to your question we have to consider what happens in mach when you "click a button".
When mach starts, it has the name of a screen set to load as one of the things stored in the mach profile that is being started. Mach defaults to "1024.set" for a mill and when you're using MSM it is "MachStdMIll.set".
So mach will load up the specified screen set.
But what is a screen set?
A screen set file is a binary format file that contains several things.
For this discussion we are interested in:
Buttons: The screen set file has a list of "buttons" that are defined in the screen set, Each button has a size (width and height) and a location on the screen. Buttons can also have a bitmap associated with them - this is how you make the buttons look different to the human.
When you click the mouse on a mach button you are actually doing is:
a) sending a click event to windows, which sends it to mach. A click envent says "the mouse button was clicked at location X,Y on the screen".
b) mach gets the click event and looks at the coordinates of the event (X,Y) it then compares that location to the list of button "areas" that it built up when loading the screen set. If the click is within a button area of the screen, then mach "runs that button".
NOTE that buttons are not invoked by a button name. Mach does all windows event handling internal to mach and there are no programming interfaces exposed by mach at the mach script interface that deal with windows events.
What does "running a mach button" mean? For each button defined in a screen set there are a couple of different action that can happen.
Each button can do one of three things:
1) A very common situation is that a button can have associated with it a command code to issue to mach itself. These are the "OEM button" codes that you hear people talk about. Click the button, and mach issues itself the command code stored in the screen set for the button. For example feed hold will issue mach command code 1 - which is the magic number for feed hold to mach.
2) a button can execute some gcode. The gcode to run is stored in the screen set file.
3) a button can execute a Cypress basic script. The script to be run is stored in the screen set file as part of the button definition.
It is this third case that applies to the "auto tool zero" button that is in the 1024 screen set. That button is set to run this single line of mach script:
Message("Not Yet Implemented')
and when you click the button when running 1024.set that is exactly what you get - a dialog with that message.
The button is useless as supplied with the 1024 screen set. To get it to do anything you would have to put whatever script code you wanted it to run in the 1024 screen set (welcome to customizing mach screen set files).
I did not put a useless "auto tool zero" button in MSM - as that would be rather silly given that MSM provides a lot of enhanced functionality to handling tool offsets.
Now, what it important here is to understand that a mach button is not a magic predefined thing. A button only has meaning within the context of the screen set within which it is defined. Buttons do not have names or numbers and they are not common between screen sets. There is no way I know of to "Click a button" programatically - they are simply not defined outside of mach's internal code.
So... with all that as background, when the pendent program author says that they "click the auto tool zero button - my first reaction is "Huh"? That statement makes no sense form a technical stand point - there is no such animal as a "auto tool zero" button pre-defined for all screen sets.
Which rather begs the question of what is that iOS program is doing to talk to mach?
Specifically, what does it think it is doing when you use a button that is apparently defined in the iOS application, which therefore appears to be assuming that anything that exists in 1024 also exist in all other screen sets - which is a very bad and wrong assumption.
To figure this out further, you'll need to ask the pendant code author what the pendant code is doing.
How does the pendant communicate between the pendant and Mach? what is the physical link between them?
How is that communication link interfaced to mach?
When you "click a button on the pendant" what is generated and sent over that link from the pendant to mach?
How does that message from the link get into mach and what command does mach see as a result?
Alas, these are all questions that only the pendant code author can help with.
i suspect that as a user, you really don't want to care about the details of this. Please invite whoever the pendant author is to contact me directly, I"ll be happy to talk to them about the technical details and see what we can figure out.
Finally, would you provide me a list of the buttons in the pendant that do not work as expected?
Dave