I have made a small experiment. It's not what you describe, just a simple demo.
Only tried it on one camera (a3200).
It may not work on the M3, because that cam may not react to the "PressTeleButton" / "UnpressTeleButton" events (in that case, one would have to find the correct button events, by name and get the corresponding ID). It also needs a correctly found 'recreview_hold' firmware variable.
What the patch does: when 'Review' is set to 'Hold', it zooms into the preview picture after the shot. Not very useful as it is.
Index: core/shooting.c
===================================================================
--- core/shooting.c (revision 4656)
+++ core/shooting.c (working copy)
@@ -1534,6 +1534,25 @@
update_screen_dimensions();
#endif
+ static int recreviewhold_prev = 0;
+ static int rrcounter = 0;
+ if (recreview_hold && !recreviewhold_prev)
+ {
+ rrcounter = 3;
+ }
+ if (rrcounter>0)
+ {
+ rrcounter--;
+ if (rrcounter==0)
+ {
+ PostLogicalEventToUI(0x854,1); // "PressTeleButton"
+ PostLogicalEventToUI(0x855,1); // "UnpressTeleButton"
+ PostLogicalEventToUI(0x854,1); // "PressTeleButton"
+ PostLogicalEventToUI(0x855,1); // "UnpressTeleButton"
+ }
+ }
+ recreviewhold_prev = recreview_hold;
+
get_property_case(PROPCASE_SHOOTING_MODE, &t, 4);
#ifdef CAM_MASK_VID_REC_ACTIVE
mode |= shooting_mode_canon2chdk(t & (~CAM_MASK_VID_REC_ACTIVE));
For the feature you're talking about, I'd restrict it to only work in image review mode (which you get when 'Review' is set to 'Hold', after the shot). We are referring to that mode as "recreview_hold", based on the firmware variable's name.
Now, the difficulties:
- CHDK doesn't currently support disconnecting/reconnecting selected buttons from/to the Canon user interface. We'd have to handle the "zoom in" button specially during "recreview_hold" - there's no existing code that does that.
- The AF point related stuff is completely unknown. Note that the M3 has on-sensor phase detect pixels - no other Powershot has that feature.