In case some find my (personal) scripts of value, here is an update and 'tutorial' on using the Cycler.
I wrote the Cycler for a specific reason, but I see it having more general uses, ie anytime you wish to quickly change ML states, without going into the ML menu system.
My specific use case is when I using the EOSM, with its limited button UI, as a Medium Format digital back, ie using the full scope of a 645 lens with the RhinoCam and sensor bracketing.
When you first turn on the Cam, the Cycler will run (assuming you have set auto run) and 'null' all the ML states you have selected to cycle.
Note you can change/add ML state details in the script to suit your needs, ie use my script as a framework.
Cycler always displays its configuration in the right of the top ML bar. Thus at camera start up one would see the following, ie the NULL state:

The Cycler uses two keys, but in doing so allows you to fully access the functionality of those keys as well.
If we now press the [PLAY] button/key we will see the following:

When you see three ML states being reported, you know you are then able to cycle to another ML state. The left hand state shows the ML state that you can reverse cycle to and the right hand state the ML state you can cycle to directly. The middle state shows you the ML state you are currently in.
If you now do a half shutter press the text will turn red, like this:

Do it again it will turn back to being black. Red indicates that you will cycle in reverse, ie cycle to the state shown on the left. Black text means you will cycle to the right.
To cycle to the desired state, ie to the left or right one, simply press [MENU]. The Cycler will then cycle to the selected ML state and update the ML top bar display to show you the ML state you are now in.
If you press [PLAY], rather than [MENU], you will cycle to another option for the [PLAY] button.
For my use the [PLAY] has three options. It can initiate a ML state change, as above. It can operate as a normal [PLAY] button. Or it can take a darkframe bookmark image, which is useful when bracketing, to help differentiate the start and/or end of bracketing sequences.
If [PLAY] is displayed then pressing [MENU] will operate the [PLAY] button in its normal mode.

If [BOOK] is displayed then pressing [MENU] will take a bookmark image and reset the exposure.

Both [PLAY] and [BOOK] options return the display to showing the ML state you are currently in. By adapting my script you can add as many additional functions to the [PLAY] button as you like ;-)
Cycler has no menus: it doesn't need any.
The latest version is always available here:
https://gist.github.com/pigeonhill/e6295533062ef9698ee17213f0f73646I've tried to write the script in a open way and have provided comments. I therefore hope even non-scripters will be able to tweak the script to their use, ie in a text editor.
As usual I welcome feedback and will always support questions on the Cycler.