I think the M7, M8 and M9 are the real oddball ones simply because it is totally internal to Mach and they have no macros. Things like M3, M4, M5, all have macros and you can customise them to suit.
As an example, on the big lathe I had a 7.5/11 Kw spindle motor which was controlled via a gearbox which had electromagnetic clutches. I controlled these clutches via my PLC and I altered the M3, M4, M5 and Spindle Speed macros in Mach to suit my setup. For example if the spindle was commanded to switch on and go to 2000rpm I would have the macros step the spindle speed up in increments, changing the clutches as it went, if wanting to go back to zero then the macros would look at the current rpm and then change the clutches in steps so that I slowed down in a couple of stages rather than just an abrupt stop, same going from a low RPM to a high and vice versa.
Here is a video showing the spindle ramping up at the start and down at the end via the clutches, that was the days before I had the servo spindle on it.
https://www.youtube.com/watch?v=JvSh6j8x4GcHa ha actually seeing that video is weird as the lathe has changed so much since that initial run, it was via the parallel port so the rapids were, well, not very rapid and the turret had to index one tool at a time and could only go one way, the one I made can index to the next called tool and will take the shortest route.
Still it was a thrill for me to get it running
Hood