Sunday, June 12, 2016

Toggler 2

First of all an apology for posting another Lua script, however, I do this so that others may benefit from my humble efforts. Either making use of my scripts or using my scripts to help them develop there own scripts.

This particular script is Version 2 of my Toggler script and you can find via the link from the scripts box on the right.

'All' the Toggler does is allow Canon EOS Magic Lantern users to quickly switch between different ML menu states. In this version I simply switch between the following:

  • Off = The Toggler is active but all the Menu state are set off
  • ETTR
  • Dual-ISO
  • Auto Bracketing
  • FRSP
  • ISO
In this version I decided to increase the toggling functionality; thus this version of the Toggler works in the following way:
  • You can switch the Toggler totally off in the ML Menu (by default Toggler will be on, but you can change that behavior in the script, ie to always be off).
  • You can switch the Toggler's state, enabled or not, by using any button of your choice, eg RATE or PLAY. Note, once you decide on that button choice, then that button ceases to be accessible in its normal Canon mode. Thus I chose RATE on my 5D3 and PLAY on my 50D, as I don't use these buttons when taking images. Pushing this button will flip-flop the enabled state of Toggler, which allows you to use the multi function switch normally.
  • If you have enabled Toggler the multi function switch can now be controlled by the Toggler. Toggle left of right to move to the Menu state you wish and in some menu states, eg ISO, you can toggle up and down to increase or decrease ISO.
One thing to note is that there appears to be a ML backend 'thing going on', that I can't work out, but have reported. That is my 5D3 returns a different key press code to my 50D. I have accounted for that in the code.

As for workflow, that is up to you. I personally ETTR most of the time and adjust exposure or decide on extended range options from there.

If I need to bracket I will meter for the shadows (using the ML Raw Ev meter) and then toggle to the Bracketing state, letting ML handle the highlight bracketing needs. Note that this is where you can use the enable button (RATE or PLAY for me). Thus I would toggle to auto bracketing, press the RATE button to disable Toggler so I can use the multi function controller to move the the metering position I wish to check.

If I want to capture a Full Resolution Silent Picture, I go to that menu state and the Toggler will tell me if I'm 'compliant' regarding shutter speed, ie Toggler will not let me take a FRSP outside the recognized range.

As for ISO, I simply toggle to that state and change the ISO with the multi functional controller (noting I can return to the Canon multi functional controller state by pressing RATE, say).

Bottom line: as usual I offer this post to help others as they learn about the power of ML Lua scripting; and, of course, I welcome feedback of any kind  :)

Final caveat: I am not a Lua power user, I'm still learning to program in Lua. Thus you use my scripts at your own risk and I've only been able to test the script on my 5D3 and 50D.


  1. Hi Gary. Great script. One observation. I have a 6D which comes with a limited number of buttons and as yet I have not been able to pick one to assign to enable/disable Toggler as it seems that potentially I will need all of them. Obviously, I can keep switching to ML and do it from the Toggler menu but is it possible to use a combination of buttons for the enable button, for example Set + Menu? See 6D buttons here

  2. On a usability point. Could the script detect when the camera is not in live view and if so act as though it were disabled (so that the multi function control would work normally)?

    1. Ross thanks for the feedback.

      Try this version: and let me know how it goes.