Magic Lantern Forum

Developing Magic Lantern => General Development => Topic started by: Greg on November 12, 2012, 09:19:54 PM

Title: 500D control such as 5D II.
Post by: Greg on November 12, 2012, 09:19:54 PM
I came up with the idea that the ISO can add GUI flash exposure compensation. As is the 5D II.

The main problem in the 500D - ISO button moves to the ISO menu but still returns GUI = 0 The entrance to the ISO menu by pressing the SET returns GUI = 31

Currently done only display data in GUI = 31

(http://img835.imageshack.us/img835/2074/testqe.png)

We are able to detect the occurrence of buttons up - down? To change the value of the FEC.
Title: Re: 500D control such as 5D II.
Post by: Greg on November 13, 2012, 03:12:30 AM
The first attempt.
https://www.youtube.com/watch?v=Mk3RqEiVp9Y
Title: Re: 500D control such as 5D II.
Post by: Greg on November 19, 2012, 05:09:36 PM
When we get to the ISO menu by ISO button. The buttons do not return values, work the same as DOF.


#define BGMT_PRESS_LEFT 0x39
#define BGMT_UNPRESS_LEFT 0x3a
#define BGMT_PRESS_RIGHT 0x37
#define BGMT_UNPRESS_RIGHT 0x38


In this menu, the buttons return a value 0x3f

We can do it this way, but the ISO menu will have to refresh to switch to the latter.

if(DISPLAY_IS_ON && !lv)
{
if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(31);
}
Title: Re: 500D control such as 5D II.
Post by: scrax on November 19, 2012, 06:14:41 PM
yeah Greg,  :)
that's also a nice little add that I'll like to have on my camera...
please, open up a fork on bitbucket, that way it will be possible to try to add your panorama helper and that intermediate iso on other camera too.

Quote from: Greg on November 19, 2012, 05:09:36 PM
When we get to the ISO menu by ISO button. The buttons do not return values, work the same as DOF.


#define BGMT_PRESS_LEFT 0x39
#define BGMT_UNPRESS_LEFT 0x3a
#define BGMT_PRESS_RIGHT 0x37
#define BGMT_UNPRESS_RIGHT 0x38


In this menu, the buttons return a value 0x3f

We can do it this way, but the ISO menu will have to refresh to switch to the latter.

if(DISPLAY_IS_ON && !lv)
{
if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(31);
}


So you will have a little delay when opening ISO menu with ISO button?
Title: Re: 500D control such as 5D II.
Post by: Greg on November 19, 2012, 11:36:25 PM
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/compare/unified..hudson/magic-lantern:unified
Title: Re: 500D control such as 5D II.
Post by: jplxpto on November 19, 2012, 11:48:21 PM
Quote from: Greg on November 19, 2012, 05:09:36 PM
When we get to the ISO menu by ISO button. The buttons do not return values, work the same as DOF.


#define BGMT_PRESS_LEFT 0x39
#define BGMT_UNPRESS_LEFT 0x3a
#define BGMT_PRESS_RIGHT 0x37
#define BGMT_UNPRESS_RIGHT 0x38


In this menu, the buttons return a value 0x3f

We can do it this way, but the ISO menu will have to refresh to switch to the latter.

if(DISPLAY_IS_ON && !lv)
{
if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(31);
}


In a few days you'll be developer ;)
Title: Re: 500D control such as 5D II.
Post by: scrax on November 29, 2012, 02:32:32 AM
Quote from: Greg on November 19, 2012, 11:36:25 PM
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/compare/unified..hudson/magic-lantern:unified
tried on 600D is working butI have 1/2 stop change with up and down arrow but it changes by 1/3 on camera.
for example from EV 0:
- going up once shows + 0,5 but when back to photo screen it's set to +1/3
- going up twice shows +1 and back to photo screen it's set to +1
Title: Re: 500D control such as 5D II.
Post by: Greg on November 29, 2012, 06:40:56 PM
It works the same as the function:
http://img13.imageshack.us/img13/8628/testhsi.png


This can change, but the problem of rounding.:
- int newae = ae - 1 * (ABS(ae - 1) <= 24 ? 4 : 8);
+ int newae = ae - 1 * (ABS(ae - 1) <= 24 ? 3 : 9);



We need to detect the digit after the decimal point.
if the number is 6: +0.4 EV, in any other case: +0.3 EV

Example:
0 + 0.3 = 0.3 EV
0.3 + 0.3 = 0.6 EV
0.6 + 0.4 = 1 EV
Title: Re: 500D control such as 5D II.
Post by: Greg on November 30, 2012, 12:39:29 AM
I did it as follows:
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/cc782f277272c855432380143a6a216f0ce6e859

Code does not look good, but the 500D works.
http://www.youtube.com/watch?v=MqF-5t_JM_A&feature=youtu.be
Title: Re: 500D control such as 5D II.
Post by: scrax on November 30, 2012, 01:06:42 AM
working on 600D too. :)
Title: Re: 500D control such as 5D II.
Post by: Greg on November 30, 2012, 01:45:46 AM
Quote from: scrax on November 30, 2012, 01:06:42 AM
working on 600D too. :)
;)

We can change the Metering mode with ML? Cool would it add to the White Balance menu.
If this is not possible. It can add a manual white balance using the up and down arrows.
Title: Re: 500D control such as 5D II.
Post by: scrax on November 30, 2012, 02:43:21 AM
this idea is really cool, more settings on those screens.
on 500D and 600D arrow have same menu:
           WB
Drive            AF
        PicStyle

I think that for WB a manual selection is ideal,  metering mode could be added to Drive mode but i think we need to find the correct numbers.
Title: Re: 500D control such as 5D II.
Post by: Greg on November 30, 2012, 07:33:17 PM
manual WB:
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/60bf560b2b70999aeba90faa9889160486873bee

This is a small error. Entering WB menu using WB button. UP button has the same function as the right. Can we do something about it?
We can do it in the same way as the ISO menu, but the screen will flash.

http://www.youtube.com/watch?v=qn9ewu4VVhA&feature=youtu.be
Title: Re: 500D control such as 5D II.
Post by: scrax on November 30, 2012, 09:11:23 PM
Quote from: Greg on November 30, 2012, 07:33:17 PM
manual WB:
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/60bf560b2b70999aeba90faa9889160486873bee

This is a small error. Entering WB menu using WB button. UP button has the same function as the right. Can we do something about it?
We can do it in the same way as the ISO menu, but the screen will flash.

http://www.youtube.com/watch?v=qn9ewu4VVhA&feature=youtu.be
I don't see a lot of flashing with iso menu, so i think it will be ok too for WB.
I'm looking for Meter mode in props changes and found this:
80000002 0004: x 0 0 0 0 0
x change based on which mode:
1 Spot
2 ?
3 Evaluative
4 Partial
5 Center weighted av
now looking for where to put it...
Also to me seems that on 600D 27 is for button up pressed and 28 for unpressed in both WB screen (in other screen too) so maybe it's a 500D problem only.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 01, 2012, 12:19:56 AM
I made the icon
(http://img689.imageshack.us/img689/9290/testngh.png)

Here the code  ;D

int bg = bmp_getpixel(100, 400);
int md1 = 20;
int md2 = 27;
int md3 = 68;
draw_line(79, 380, 79 + md1, 380, COLOR_BLACK);      // -
draw_line(79, 381, 79 + md1, 381, COLOR_BLACK);      // =
draw_line(107, 380, 107 + md1, 380, COLOR_BLACK);    // -
draw_line(107, 381, 107 + md1, 381, COLOR_BLACK);    // =

draw_line(77, 382, 77, 382 + md2, COLOR_BLACK);      // |
draw_line(78, 382, 78, 382 + md2, COLOR_BLACK);      // ||
draw_line(129, 382, 129, 382 + md2, COLOR_BLACK);    // |
draw_line(128, 382, 128, 382 + md2, COLOR_BLACK);    // ||

draw_line(79, 411, 79 + md1, 411, COLOR_BLACK);      // -
draw_line(79, 410, 79 + md1, 410, COLOR_BLACK);      // =
draw_line(107, 411, 107 + md1, 411, COLOR_BLACK);    // -
draw_line(107, 410, 107 + md1, 410, COLOR_BLACK);    // =

//-------------

draw_line(79 + md3, 380, 79 + md1 + md3, 380, COLOR_BLACK);      // -
draw_line(79 + md3, 381, 79 + md1 + md3, 381, COLOR_BLACK);      // =
draw_line(107 + md3, 380, 107 + md1 + md3, 380, COLOR_BLACK);    // -
draw_line(107 + md3, 381, 107 + md1 + md3, 381, COLOR_BLACK);    // =

draw_line(77 + md3, 382, 77 + md3, 382 + md2, COLOR_BLACK);      // |
draw_line(78 + md3, 382, 78 + md3, 382 + md2, COLOR_BLACK);      // ||
draw_line(129 + md3, 382, 129 + md3, 382 + md2, COLOR_BLACK);    // |
draw_line(128 + md3, 382, 128 + md3, 382 + md2, COLOR_BLACK);    // ||

draw_line(79 + md3, 411, 79 + md1 + md3, 411, COLOR_BLACK);      // -
draw_line(79 + md3, 410, 79 + md1 + md3, 410, COLOR_BLACK);      // =
draw_line(107 + md3, 411, 107 + md1 + md3, 411, COLOR_BLACK);    // -
draw_line(107 + md3, 410, 107 + md1 + md3, 410, COLOR_BLACK);    // =

//-------------

draw_line(79 + md3 * 2, 380, 79 + md1 + md3 * 2, 380, COLOR_BLACK);      // -
draw_line(79 + md3 * 2, 381, 79 + md1 + md3 * 2, 381, COLOR_BLACK);      // =
draw_line(107 + md3 * 2, 380, 107 + md1 + md3 * 2, 380, COLOR_BLACK);    // -
draw_line(107 + md3 * 2, 381, 107 + md1 + md3 * 2, 381, COLOR_BLACK);    // =

draw_line(77 + md3 * 2, 382, 77 + md3 * 2, 382 + md2, COLOR_BLACK);      // |
draw_line(78 + md3 * 2, 382, 78 + md3 * 2, 382 + md2, COLOR_BLACK);      // ||
draw_line(129 + md3 * 2, 382, 129 + md3 * 2, 382 + md2, COLOR_BLACK);    // |
draw_line(128 + md3 * 2, 382, 128 + md3 * 2, 382 + md2, COLOR_BLACK);    // ||

draw_line(79 + md3 * 2, 411, 79 + md1 + md3 * 2, 411, COLOR_BLACK);      // -
draw_line(79 + md3 * 2, 410, 79 + md1 + md3 * 2, 410, COLOR_BLACK);      // =
draw_line(107 + md3 * 2, 411, 107 + md1 + md3 * 2, 411, COLOR_BLACK);    // -
draw_line(107 + md3 * 2, 410, 107 + md1 + md3 * 2, 410, COLOR_BLACK);    // =

//-------------

draw_line(79 + md3 * 3, 380, 79 + md1 + md3 * 3, 380, COLOR_BLACK);      // -
draw_line(79 + md3 * 3, 381, 79 + md1 + md3 * 3, 381, COLOR_BLACK);      // =
draw_line(107 + md3 * 3, 380, 107 + md1 + md3 * 3, 380, COLOR_BLACK);    // -
draw_line(107 + md3 * 3, 381, 107 + md1 + md3 * 3, 381, COLOR_BLACK);    // =

draw_line(77 + md3 * 3, 382, 77 + md3 * 3, 382 + md2, COLOR_BLACK);      // |
draw_line(78 + md3 * 3, 382, 78 + md3 * 3, 382 + md2, COLOR_BLACK);      // ||
draw_line(129 + md3 * 3, 382, 129 + md3 * 3, 382 + md2, COLOR_BLACK);    // |
draw_line(128 + md3 * 3, 382, 128 + md3 * 3, 382 + md2, COLOR_BLACK);    // ||

draw_line(79 + md3 * 3, 411, 79 + md1 + md3 * 3, 411, COLOR_BLACK);      // -
draw_line(79 + md3 * 3, 410, 79 + md1 + md3 * 3, 410, COLOR_BLACK);      // =
draw_line(107 + md3 * 3, 411, 107 + md1 + md3 * 3, 411, COLOR_BLACK);    // -
draw_line(107 + md3 * 3, 410, 107 + md1 + md3 * 3, 410, COLOR_BLACK);    // =


    for (int r = 0; r < 5; r++)
    {
         draw_circle(239, 396, r, COLOR_BLACK);
         draw_circle(239, 396, r, COLOR_BLACK);
    }

draw_circle(171, 396, 10, COLOR_BLACK);
draw_circle(171, 396, 9, COLOR_BLACK);

draw_circle(103, 396, 10, COLOR_BLACK);
draw_circle(103, 396, 9, COLOR_BLACK);

draw_line(171 - 10, 395, 171 + 10, 395, bg);
draw_line(171 - 10, 396, 171 + 10, 396, bg);
draw_line(171 - 10, 397, 171 + 10, 397, bg);

draw_line(103 - 10, 395, 103 + 10, 395, bg);
draw_line(103 - 10, 396, 103 + 10, 396, bg);
draw_line(103 - 10, 397, 103 + 10, 397, bg);

for (int r = 0; r < 5; r++)
    {
         draw_circle(103, 396, r, COLOR_BLACK);
         draw_circle(103, 396, r, COLOR_BLACK);
    }

Is there a faster way to make these icons? Modifying the code is not nice.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 01, 2012, 04:09:17 AM
I changed the icons, some corrected code.

(http://img248.imageshack.us/img248/7598/testwl.png)

if(CURRENT_DIALOG_MAYBE == 9 || CURRENT_DIALOG_MAYBE == DLG_DRIVE_MODE)
{
int bg = bmp_getpixel(35, 245);
int md1 = 27; //W -
int md2 = 38; //H
int md3 = 96; //W ---
int md4 = 11; //W - -

draw_line(29, 362, 483, 362, bg);
draw_line(29, 361, 483, 361, bg);
draw_line(30, 360, 482, 360, bg);
draw_line(32, 359, 480, 359, bg);

draw_line(29, 440, 483, 440, bg);
draw_line(29, 441, 483, 441, bg);
draw_line(30, 442, 482, 442, bg);
draw_line(32, 443, 480, 443, bg);

for (int f = 0; f < 77; f++)
    {
draw_line(28, 363 + f, 484, 363 + f, bg);
}

for (int s = 0; s < 4; s++)
    {
draw_line(79 + (s * md3), 380, 79 + md1 + (s * md3), 380, COLOR_BLACK);      // -
draw_line(79 + (s * md3), 381, 79 + md1 + (s * md3), 381, COLOR_BLACK);      // =
draw_line(80 + (s * md3), 379, 79 + md1 + (s * md3), 379, COLOR_BLACK);      // =-
draw_line(79 + md1 + md4 + (s * md3), 380, 79 + md1 * 2 + md4 + (s * md3), 380, COLOR_BLACK);    // -
draw_line(79 + md1 + md4 + (s * md3), 381, 79 + md1 * 2 + md4 + (s * md3), 381, COLOR_BLACK);    // =
draw_line(79 + md1 + md4 + (s * md3), 379, 78 + md1 * 2 + md4 + (s * md3), 379, COLOR_BLACK);    // =-

draw_line(77 + (s * md3), 383, 77 + (s * md3), 381 + md2, COLOR_BLACK);      // |
draw_line(78 + (s * md3), 381, 78 + (s * md3), 383 + md2, COLOR_BLACK);      // ||
draw_line(79 + (s * md3), 382, 79 + (s * md3), 383 + md2, COLOR_BLACK);       // |||

draw_line(79 + md1 * 2 + md4 + (s * md3), 382, 79 + md1 * 2 + md4 + (s * md3), 382 + md2, COLOR_BLACK);    // |
draw_line(80 + md1 * 2 + md4 + (s * md3), 381, 80 + md1 * 2 + md4 + (s * md3), 383 + md2, COLOR_BLACK);    // ||
draw_line(81 + md1 * 2 + md4 + (s * md3), 383, 81 + md1 * 2 + md4 + (s * md3), 381 + md2, COLOR_BLACK);    // |||

draw_line(79 + (s * md3), 384 + md2, 79 + md1 + (s * md3), 384 + md2, COLOR_BLACK);      // -
draw_line(79 + (s * md3), 383 + md2, 79 + md1 + (s * md3), 383 + md2, COLOR_BLACK);      // =
draw_line(80 + (s * md3), 385 + md2, 79 + md1 + (s * md3), 385 + md2, COLOR_BLACK);      // =-
draw_line(79 + md1 + md4 + (s * md3), 384 + md2, 79 + md1 * 2 + (s * md3)+ md4, 384 + md2, COLOR_BLACK);    // -
draw_line(79 + md1 + md4 + (s * md3), 383 + md2, 79 + md1 * 2 + (s * md3)+ md4, 383 + md2, COLOR_BLACK);    // =
draw_line(79 + md1 + md4 + (s * md3), 385 + md2, 78 + md1 * 2 + (s * md3)+ md4, 385 + md2, COLOR_BLACK);    // =
}


for (int r = 0; r < 7; r++)
    {
         draw_circle(304, 402, r, COLOR_BLACK);
    }

draw_circle(208, 402, 15, COLOR_BLACK);
draw_circle(208, 402, 14, COLOR_BLACK);
draw_circle(208, 402, 13, COLOR_BLACK);

draw_circle(112, 402, 15, COLOR_BLACK);
draw_circle(112, 402, 14, COLOR_BLACK);
draw_circle(112, 402, 13, COLOR_BLACK);

for (int z = 0; z < 7; z++)
    {
         draw_line(208 - 15, 398 + z, 208 + 15, 398 + z, bg);
         draw_line(112 - 15, 398 + z, 112 + 15, 398 + z, bg);
    }

for (int r = 0; r < 7; r++)
    {
         draw_circle(112, 402, r, COLOR_BLACK);
         draw_circle(112, 402, r, COLOR_BLACK);
    }
}


Now we need to know how to change the Metering Mode.

Title: Re: 500D control such as 5D II.
Post by: a1ex on December 01, 2012, 07:22:11 AM
To change metering mode, use PROP_METERING_MODE (define it as 80000002).

Values: 3, 4, 1, 5 (in the order of your icons) on 5D2.

Len is 4. Add a PROP_INT to read it.

To make the circles smoother, draw them twice, with a small horizontal offset (1 pixel).
Title: Re: 500D control such as 5D II.
Post by: Greg on December 01, 2012, 02:18:27 PM
Quote from: a1ex on December 01, 2012, 07:22:11 AM
To change metering mode, use PROP_METERING_MODE (define it as 80000002).

Values: 3, 4, 1, 5 (in the order of your icons) on 5D2.

Len is 4. Add a PROP_INT to read it.

To make the circles smoother, draw them twice, with a small horizontal offset (1 pixel).
Thanks ;)

Values ​​for 500D : 3, 4, 1, 5
It looks like it's the same as the 5D II and 600D.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 01, 2012, 06:02:22 PM
Needs to be done to change the value Metering Mode.
I'll try to fix flickering.

http://www.youtube.com/watch?v=lfFXsu6bHNE&feature=youtu.be
Title: Re: 500D control such as 5D II.
Post by: a1ex on December 01, 2012, 06:09:17 PM
Two approaches for flickering.

- Double buffering (currently used for menu, and LV top/bottom info bars)
- Draw symbols first, then draw selection box, but only on non-black pixels, then draw background box, but only on non-black and non-blue pixels. See menu.c, selection_bar (it uses this trick, but not for flicker reasons).
Title: Re: 500D control such as 5D II.
Post by: Greg on December 02, 2012, 12:14:15 AM
A few more tweaks and it will work.

http://www.youtube.com/watch?v=fZq2fZ1jg50&feature=youtu.be
Title: Re: 500D control such as 5D II.
Post by: scrax on December 02, 2012, 10:59:53 PM
Greg, your last commit works better on 600D (with COLOR_FG_NONLV instead of BLACK particularly)
my color scheme is 4 (the green one) and selection menu is green icon (COLOR_FG_NONLV) on black background. Also selection is black, so it's not really clear what is selected.
EDIT: changing bg2 solved it but i'll try other color scheme too.
- int bg2 = bmp_getpixel(40, 209);
+ int bg2 = bmp_getpixel(40, 109);
Also i had to keep uncommented redraw(); for it to work.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 02, 2012, 11:33:13 PM
On the 500D works with any color. Code still requires correction, and then we'll try to do that for 550D and 600D :)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 02, 2012, 11:42:53 PM
Quote from: Greg on December 02, 2012, 11:33:13 PM
On the 500D works with any color. Code still requires correction, and then we'll try to do that for 550D and 600D :)
Good, I've added some different #ifdef and consts to make it work on 600D too, you can check it here: https://bitbucket.org/600Dplus/magic-lantern-for-600d/commits

https://www.dropbox.com/s/deu7kt95h6442jo/2012-12-03%2000.09.45.3gp
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 02:00:57 AM
last modification solved a lot flickering and redraw  problems  :D
great work Greg!
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 02:20:04 AM
thanks for the test  ;)

isomenu_flash_control we can add to the main repository?
We need a description of this function, the name and the place;)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 02:33:45 AM
Quote from: Greg on December 03, 2012, 02:20:04 AM
thanks for the test  ;)

isomenu_flash_control we can add to the main repository?
We need a description of this function, the name and the place;)

Try to compile from my fork i've added those in consts.h for 600D:

#define DLG_INFO 0x14  // info screen
#define DLG_TEMP_WARNING_LV 0x1A // Camera internal temperature is becoming too high. Live View shooting not possible
#define DLG_TEMP_WARNING_ALL 0x1B // Camera internal temperature is becoming too high. Can't shoot.
#define DLG_LV_CHANGE_MAYBE 0x1C // when used goes to Live View in M mode
#define DLG_ERROR 0x1D // Shows Err 00 when used
#define DLG_WARNING 0x21 // Shows only ! icons
#define DLG_Q_MENU 0x23 // Q menu active
#define DLG_Q_SHUTTER 0x24 // Q shutter setting
#define DLG_Q_APERTURE 0x25 // Q aperture setting
#define DLG_Q_ISO 0x26 // ISO Q menu
#define DLG_Q_EXP_COMP_AEB 0x27 // Q Exposition compensation and AEB
#define DLG_Q_FLASH_EXP_COMP 0x28 // Q flash exp. compesation
#define DLG_Q_PICTURE_STYLE 0x2A // Q pic style
#define DLG_Q_WB 0x2B // Q white balance
#define DLG_Q_METER_MODE 0x2C // Q metering mode
#define DLG_Q_QUALITY 0x2D // Q pic quality
#define DLG_Q_AF_MODE 0x2E // Q AF mode
#define DLG_Q_DRIVE_MODE 0x2F // Q drive mode
#define DLG_Q_ALO 0x31 // Q Auto Light optimizer settings
#define DLG_CA_SHOOT_BY_AMB 0x32 // CA - Shoot by ambience selection
#define DLG_CA_SHOOT_BY_LIGHT 0x33 // CA - Shoot by lighting or scene type
#define DLG_Q_FLASH_SET 0x36 // Q flash settings


for 500D you need to check those in platform/500D.111/consts.h after that it should work ok:
// #define DLG_Q_WB 0x?? // Q white balance
// #define DLG_Q_DRIVE_MODE 0x?? // Q drive mode

i've added in 500D and 600D features.h
#define FEATURE_MORE_MENU_OPTION
adn in shoot.c and gui-common.c
#ifdef FEATURE_MORE_MENU_OPTION for each addition.
also changed a little the first part so to have settings saved in ML pref:
#ifdef FEATURE_MORE_MENU_OPTION
static CONFIG_INT("wbmenu.manual.control.enabled", wbmenu_manual_control_enabled, 1);
static CONFIG_INT("isomenu.flash.control.enabled", isomenu_flash_control_enabled, 1);
static CONFIG_INT("drivemenu.metering.control.enabled", drivemenu_metering_control_enabled, 1);
int drivemenu_metering_value = 0;
#endif
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 02:36:13 AM
pushed now.
If someone can suggest a better naming for menu items would be great, I think that mine actually is not so clear...

"More options for menu", <- this is what i don't like more ;)
          "ISO - FLash Comp. in ISO menu."
           "WB - Manual WB in WB menu."
           "Drive - Meter Mode in Drive menu."
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 02:49:09 AM
For ISO and WB we change from base screen to Q screen and there is a flick from one screen to the other. can we override a button press?
If from photo screen we can disable up arrow for canon firmware and instead open WB Q screen we will have no flick,
but is this possible?
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 03:00:14 AM
If I can do it, we can do it for WB menu.

So we can try, but I will be flickering :

if(event->param == BGMT_PRESS_UP)
{
fake_simple_button(BGMT_PRESS_LEFT)
}


The ISO menu (on the ISO button) is not possible on the 500D, left-right buttons return value 0x3f.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 03:22:39 AM
For 500D:
#define DLG_Q_ISO 0x1F
#define DLG_Q_WB 6
#define DLG_Q_DRIVE_MODE 9
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 03:28:08 AM
Quote from: Greg on December 03, 2012, 03:22:39 AM
For 500D:
#define DLG_Q_ISO 0x1F
#define DLG_Q_WB 6
#define DLG_Q_DRIVE_MODE 9

Good, added and compiled right. sent you a download link for testing.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 03:39:46 PM
ALex told me how to override up button, so now there is no more flick when entering DLG_Q_WB, i'm thinking about adding Q dialog to all the other two button so to have a consisten behavior from menu (and also i like more to don't have to use set button with this new feature for changing settings.)
SET can be used to close Q dialog and mode faking halfshutter i suppose, that way it will reduce confusion to who is used to confirm selection with set.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 04:04:43 PM
I made a patch for the main consts.c 500D
DLG_FLASH_AE, this is the Q menu, flash exposure compensation?

#define CURRENT_DIALOG_MAYBE (*(int*)0x3a9c) // ok
#define DLG_WB 0x24 // 6
#define DLG_FOCUS_MODE 0x27 // a ?
#define DLG_DRIVE_MODE 0x28 // 9
#define DLG_PICTURE_STYLE 0x23 // 5
#define DLG_PLAY 1 // ok
#define DLG_MENU 2 // ok
#define DLG_Q_UNAVI 0x1E // ok

+#define DLG_Q_WB 0x24 // ok
+#define DLG_Q_FOCUS_MODE 0x27 // ok
+#define DLG_Q_DRIVE_MODE 0x28 // ok
+#define DLG_Q_PICTURE_STYLE 0x23 // ok
+#define DLG_Q_METER_MODE 0x25 // ok
+#define DLG_Q_PICQ 0x26 // ok

#define DLG_FLASH_AE 0x21 // ?
- #define DLG_PICQ 0x26 // wrong value
#define DLG_MOVIE_ENSURE_A_LENS_IS_ATTACHED (CURRENT_DIALOG_MAYBE == 0x1B) // ok
#define DLG_MOVIE_PRESS_LV_TO_RESUME (CURRENT_DIALOG_MAYBE == 0x1B) //?



We can even add a function to the AF mode menu.
Maybe someone has an idea, what would it be able to function?
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 04:42:20 PM
Quote from: Greg on December 03, 2012, 04:04:43 PM
I made a patch for the main consts.c 500D
DLG_FLASH_AE, this is the Q menu, flash exposure compensation?
NO, DLG_Q_FLASH_EXP_COMP is.

I have not idea what it is, seems wrong on 600D 0x22 don't show any dialog.
For focus dialog it's already used for togglin trap focus is in manual focus, so you need to think to something that is useful in auto focus only. I didn't figured out nothing so far :)
But instead i've added an option to overrride picstyle dialog (unused by me) with Pic Quality selection (that i was having on SET with CF.N. and now is for opening canon's MyMenu)
Title: Re: 500D control such as 5D II.
Post by: a1ex on December 03, 2012, 04:45:47 PM
They are the same, one needs renaming.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 04:48:41 PM
This is the 21 on the 500D :
(http://img209.imageshack.us/img209/4527/testvz.png)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 05:01:41 PM
Quote from: Greg on December 03, 2012, 04:48:41 PM
This is the 21 on the 500D :
(http://img209.imageshack.us/img209/4527/testvz.png)
ok mine is 28 on 600D keeping DLG_Q_FLASH_EXP_COMP in all consts.h pushing now.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 06:03:07 PM
Go to the DLG_Q does not always work
http://www.youtube.com/watch?v=noZCI5HqONQ&feature=youtu.be
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 06:25:53 PM
Quote from: Greg on December 03, 2012, 06:03:07 PM
Go to the DLG_Q does not always work
http://www.youtube.com/watch?v=noZCI5HqONQ&feature=youtu.be
looking at it. same on 600D
pushed fix, was an unnecessary check also made some clean-up and renamed it to: FEATURE_DIALOG_OPTION (seems more clear)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 08:03:54 PM
You can change the parameters when the LCD is off.

Looks like it works on 500D
I'd only removed the redraw () from the code. On the 500D looks better without it.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 08:07:15 PM
Quote from: Greg on December 03, 2012, 08:03:54 PM
You can change the parameters when the LCD is off.

Looks like it works on 500D
I'd only removed the redraw () from the code. On the 500D looks better without it.
ok i'll try again here a video of it on 600D: https://www.dropbox.com/s/6a6w91kaksvbp1v/2012-12-03%2018.45.28.3gp
EDIT: works for me too without redraw().
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 08:14:29 PM
small correction, improves error "10000K 9900KK"

-bmp_printf(FONT(FONT_LARGE, COLOR_FG_NONLV, bg), 35, 365,"Kelvin WB: %dK",  wb_k);
+bmp_printf(FONT(FONT_LARGE, COLOR_FG_NONLV, bg), 35, 365,"Kelvin WB: %dK%s",  wb_k, " ");
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 08:45:06 PM
there is still a problem in LV, arrow buttons get overridden too.
-    if (CURRENT_DIALOG_MAYBE == 0 && !IS_FAKE(event))  // override standard button dialogs
+    if (CURRENT_DIALOG_MAYBE == 0 && !IS_FAKE(event) && !lv)  // override standard button dialogs

fixed
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 08:51:29 PM
Is this a bug? The values ​​are repeated, line 281 and 298

https://bitbucket.org/hudson/magic-lantern/src/3d007297663365c31cbe7b162a92f0b35ba62a82/src/property.h?at=unified#cl-281
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 08:56:37 PM
Quote from: Greg on December 03, 2012, 08:51:29 PM
Is this a bug? The values ​​are repeated, line 281 and 298

https://bitbucket.org/hudson/magic-lantern/src/3d007297663365c31cbe7b162a92f0b35ba62a82/src/property.h?at=unified#cl-281
removed one, looks wrong to me too.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 08:59:46 PM
should work:

-if (CURRENT_DIALOG_MAYBE == 0 && !IS_FAKE(event))  // override standard button dialogs
+if (CURRENT_DIALOG_MAYBE == 0 && !IS_FAKE(event) && !lv)  // override standard button dialogs


ops, you were faster ;)


If we, for example, in WB MENU and press the SET button. Go to DLG_Q_UNAVI. It can make a shortcut to the DLG = 0?
Title: Re: 500D control such as 5D II.
Post by: scrax on December 03, 2012, 09:51:22 PM
Quote from: Greg on December 03, 2012, 08:59:46 PM
should work:

-if (CURRENT_DIALOG_MAYBE == 0 && !IS_FAKE(event))  // override standard button dialogs
+if (CURRENT_DIALOG_MAYBE == 0 && !IS_FAKE(event) && !lv)  // override standard button dialogs


ops, you were faster ;)


If we, for example, in WB MENU and press the SET button. Go to DLG_Q_UNAVI. It can make a shortcut to the DLG = 0?
I'm thinking to make SET act like halfshutter to go to DLG = 0

but also this works:
kelvin_toggle(-1, -1);
}
+ if(!IS_FAKE(event))
+ {
+ if (event->param == BGMT_PRESS_SET)
+ {
+       SetGUIRequestMode(0);
+       return 0;
+       }
+ }


pushed it.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 03, 2012, 11:26:10 PM
The need for the AF mode yet.
It seems to work well.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 04, 2012, 12:37:58 AM
Quote from: Greg on December 03, 2012, 11:26:10 PM
The need for the AF mode yet.
It seems to work well.
added, I'm thinking how to remove ISO flick.
Is possible to add the overlay to the iso menu without calling the Q one but can't change values.


+        if(DISPLAY_IS_ON && !lv && ISO_ADJUSTMENT_ACTIVE == 1 && CURRENT_DIALOG_MAYBE == 0)
-        if(DISPLAY_IS_ON && !lv)
-        {
-        if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(DLG_Q_ISO);
-        }
-        if(CURRENT_DIALOG_MAYBE == DLG_Q_ISO)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 04, 2012, 12:49:13 AM
Yes, the menu buttons are handled differently, perhaps by tx19a.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 04, 2012, 08:33:33 PM
Double buffering should completely eliminate the problem of flicker.
To test this, I drew on the menu, and double buffering turned off, it started to flicker.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 05, 2012, 06:16:42 AM
i've managed to add a dirty C mode to focus dialog, now that it works as proof of concept i'll try to polish it, but needing your help. For the double buffer too. :D
Title: Re: 500D control such as 5D II.
Post by: Greg on December 05, 2012, 06:49:26 PM
See, it should be better now ;)
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/f2f10de3a9dc32c625ebcac211fe8edfb8aa940e
Title: Re: 500D control such as 5D II.
Post by: scrax on December 06, 2012, 10:31:58 PM
Quote from: Greg on December 05, 2012, 06:49:26 PM
See, it should be better now ;)
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/f2f10de3a9dc32c625ebcac211fe8edfb8aa940e
Yes, working on 600D too.
now looking into those c modes, 5 are enough?  :)
I'm not sure to keep them in focus dialog, maybe better in picstyle/quality dialog
By the way how many drive modes has the 500D?
Title: Re: 500D control such as 5D II.
Post by: Greg on December 06, 2012, 11:07:32 PM
500D has five drive modes :
(http://img138.imageshack.us/img138/7413/vram1.png)

Yes window picstyle / quality will be better ;)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 07, 2012, 01:04:09 PM
Ok so we have to lock up-down arrow for changing metering mode when self-shoot continuous is selected (cause they conflict with number of pic selection).
But before i need a coffe break :D

EDIT: Done!
Also i found what to add to focus dialog: Focus Patterns! ;)

EDIT2: pushed to my fork last fixes with Custom Modes for x00D cameras ;)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 09, 2012, 05:43:51 PM
For today i've just found how to save and restore also WB modes not only kelvin values, i've not added picstyles ( not sure if i want this to be saved...)

pushing now

So for now we are saving and restoring:
- Av
- Tv
- ISO
- Exp Comp (removed since is that feat is only for M mode)
- WB + Shift + Kelvin
- Drive Mode
- Metering Mode

Not sure about:
- Quality
- AF mode
- Flash Exp. Comp.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 11, 2012, 02:08:45 AM
AWB is saved as Kelvin WB.

Something changed in the menu Drive mode? Your code on the 500D is slower. Uses a lot more CPU.


Title: Re: 500D control such as 5D II.
Post by: scrax on December 11, 2012, 02:21:17 AM
Quote from: Greg on December 11, 2012, 02:08:45 AM
AWB is saved as Kelvin WB.

Something changed in the menu Drive mode? Your code on the 500D is slower. Uses a lot more CPU.

I've just added the double buffer. Will try your tomorrow.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 11, 2012, 02:25:18 AM
500D with double buffering works well.
The problem is probably with the Custom Modes, we need to reduce the number of "IF", unless someone knows a better way.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 11, 2012, 03:22:10 AM
Quote from: Greg on December 11, 2012, 02:25:18 AM
500D with double buffering works well.
The problem is probably with the Custom Modes, we need to reduce the number of "IF", unless someone knows a better way.

Yes that part is terrible :)
Title: Re: 500D control such as 5D II.
Post by: nanomad on December 11, 2012, 10:20:10 AM
Quote from: scrax on December 11, 2012, 03:22:10 AM
Yes that part is terrible :)

I've got a trick up my sleeve, wait and you'll see ;)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 11, 2012, 12:37:02 PM
Quote from: nanomad on December 11, 2012, 10:20:10 AM
I've got a trick up my sleeve, wait and you'll see ;)

I've tried to study more C yesterday,  to find a way to have something with all the value that can be used for all the  modes. Looked at array, struct and typedef. But I'm more confused than before :)
For example this:

typedef struct mcm
{
    int iso;
    int shutter;
    int aperture;
    int wb_mode;
    int kelvin;
    int wbs_gm;
    int wbs_ba;
} t_mcm;

t_mcm c1 = {,,,,,,,}
t_mcm c2 = {,,,,,,,}
t_mcm c3 = {,,,,,,,}
t_mcm c4 = {,,,,,,,}
t_mcm c5 = {,,,,,,,}

I'm not sure it's correct and in the end the problem is still here. I need a way to write a generic save and load code with a part the changes based on the c mode selected.
This is my idea, but don't know how to make it in C:

mcm_current = Custom Mode setting //(0 is off and then fron 1 to 5 there are C.modes)

static void mcm_save()
{
    if ( mcm_current == 0 ) return;
    mcm"$mcm_current" = lens_info.raw_iso;
    mcm"$mcm_current" = lens_info.raw_shutter;
    mcm"$mcm_current" = lens_info.raw_aperture;
}

This: "$mcm_current" should be expanded to the mcm_current value.

Also actually it's saving all the values in ML config file, but to make the code more simpler (maybe), I've started looking at how script are generated. My idea is to save in ML/SETTINGS/ one file for each C mode so they could be managed and shared between card.
That way based on current C-mode we set the file name, and then we can use just one instead of 5 block for saving and loading C modes
Title: Re: 500D control such as 5D II.
Post by: nanomad on December 11, 2012, 01:43:13 PM
Ok, here's the raw idea: use a separate config file for C-modes

So, we have something like

CONFIG_INT("mcm.active", mcm_active, 0);

In the standard MAGIC.CFG

Then we can write a simple MCM file parser like alex did for hidden menu items.

If we keep your struct, we can use an array of size MCM_MAX_MODES to store them "in memory"
t_mcm cmodes[MCM_MAX_MODES] which gets initialized by the MCM parser at boot. Then we can simply select the active MCM mode like this:

cmodes[mcm_active]

Bouns point:
add a char[20] member to struct mcm and call it name (defaults to empty string) for easier selection
Title: Re: 500D control such as 5D II.
Post by: scrax on December 11, 2012, 02:07:23 PM
Quote from: nanomad on December 11, 2012, 01:43:13 PM
Ok, here's the raw idea: use a separate config file for C-modes

So, we have something like

CONFIG_INT("mcm.active", mcm_active, 0);

In the standard MAGIC.CFG

Then we can write a simple MCM file parser like alex did for hidden menu items.

If we keep your struct, we can use an array of size MCM_MAX_MODES to store them "in memory"
t_mcm cmodes[MCM_MAX_MODES] which gets initialized by the MCM parser at boot. Then we can simply select the active MCM mode like this:

cmodes[mcm_active]

Bouns point:
add a char[20] member to struct mcm and call it name (defaults to empty string) for easier selection

I think i get what you mean, wow :D

This what I got:

- First find, understand and adapt the file parser for hidden menu
- Then remove all the CONFIG_INT and move them to the new files with the parser (mcm.active (called actually mcm.current) we keep just this in ML settings)
- MCM_MAX_MODES need to be #define MCM_MAX_MODES 5 in mcm.h (or shoot.h) for example
- find a way to save/load setting to the actual mcm mode active file (isn't this the same problem like before)

The modifications g3gg0 made to trap focus recently gave me some hints, and now I'll take a look to the file parser, maybe it can help me understand better all...

thank's nanomad for your help.



Here found something to start:


//void config_menu_save_hidden_items()
void mcm_save_shoot_setting()
{
// we should stop if it's off
   if ( mcm_active == 0 ) return;  //  if (!menu_hidden_dirty) return;
// this is max memory siz? Can be keept like this?
    #define MAX_SIZE 10240   
// here we allocate the memory space for the msg, right? should we change it's name to mcm_msg maybe?
    char* mcm_msg = alloc_dma_memory(MAX_SIZE);
// ve set the first value of the array msg, so this msg above is an array of char (characters we want to save on file)?
    mcm_msg[0] = '\0'; 

//  with those lines we go down thru menu to check if they are hidden (this part is not needed or should be changed)
/*   struct menu * menu = menus; 
    for( ; menu ; menu = menu->next )
    {
        struct menu_entry * entry = menu->children;
       
        int i;
        for(i = 0 ; entry ; entry = entry->next, i++ )
        {
            if (!IS_VISIBLE(entry))
            {*/
//  this is the part that can put our settings to the file
                snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1, "%s\\%s\n", menu->name, entry->name);
//
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n", ISO, lens_info.iso);
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n",  Tv, lens_info.shutter);
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n",  Av, lens_info.aperture);
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n",  K , lens_info.kelvin);
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n",  WB, lens_info.wb_mode);
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n",  GM, lens_info.wbs_gm);
                snprintf(mcm_msg + strlen(mcm_msg), MAX_SIZE - strlen(mcm_msg) - 1, "%s\\%s\n",  BA, lens_info.wbs_ba);
/*           }
        }
    }*/
   
    FILE * file = FIO_CreateFileEx( CARD_DRIVE "ML/SETTINGS/C_MODE-%s.CFG", mcm_active );
   if( file == INVALID_PTR )
        return;
   
    FIO_WriteFile(file, mcm_msg, strlen(msg));

    FIO_CloseFile( file );
}



This is the part that I'm unsure, if this work the problem is solved, right?
    FILE * file = FIO_CreateFileEx( CARD_DRIVE "ML/SETTINGS/C_MODE-%s.CFG", mcm_active ); 

EDIT:

looking and how settings are saved for ML there are some differences but not a lot:


int
config_save_file(
    const char *        filename
)
{
    struct config_var * var = _config_vars_start;
    int count = 0;

    DebugMsg( DM_MAGIC, 3, "%s: saving to %s", __func__, filename );
   
    #define MAX_SIZE 10240
    char* msg = alloc_dma_memory(MAX_SIZE);
    msg[0] = '\0';
 
    snprintf( msg, MAX_SIZE,
        "# Magic Lantern %s (%s)\n"
        "# Built on %s by %s\n",
        build_version,
        build_id,
        build_date,
        build_user
    );

    struct tm now;
    LoadCalendarFromRTC( &now );

    snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg),
        "# Configuration saved on %04d/%02d/%02d %02d:%02d:%02d\n",
        now.tm_year + 1900,
        now.tm_mon + 1,
        now.tm_mday,
        now.tm_hour,
        now.tm_min,
        now.tm_sec
    );

    for( ; var < _config_vars_end ; var++ )
    {
        if( var->type == 0 )
            snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1,
                "%s = %d\r\n",
                var->name,
                *(unsigned*) var->value
            );
        else
            snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1,
                "%s = %s\r\n",
                var->name,
                *(const char**) var->value
            );

        count++;
    }
   
    FILE * file = FIO_CreateFileEx( filename );
    if( file == INVALID_PTR )
        return -1;
   
    FIO_WriteFile(file, msg, strlen(msg));

    FIO_CloseFile( file );
    return count;
}



i'll try something today and post back.

EDIT: Fixed this (and AUTO ISO too):
Quote from: Greg on December 11, 2012, 02:08:45 AM
AWB is saved as Kelvin WB.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 12, 2012, 02:51:48 PM
Today i've moved all the custom modes out of FEATURE_DIALOG_OPTIONS and moved back to mcm.c all the code so to work better on it.
I've also reduced settings to Av,Tv,Iso until finished and for now also only 2 custom mode.

I've managed to create a C_MODE-1.CFG file in the SETTINGS folder but when saved camera hang, battery pull is needed, and the file is empty.

I suppose the problem be that in new mcm.c the variable file is not declared dereferenced (cause the * ? ).
I've put extern file; and compiler note suggested struct _file **  and i ended up with this that compiles but is wrong 'cause it hangs camera:


void mcm_save_shoot_setting()
{
    char* msg = alloc_dma_memory(MAX_SIZE); 
    snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1, "ISO = %s\n", lens_info.iso);
    snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1, " Tv = %s\n",  lens_info.shutter);
    snprintf(msg + strlen(msg), MAX_SIZE - strlen(msg) - 1, " Av = %s\n",  lens_info.aperture);
   
    extern struct _file ** file;
    if ( mcm_current == 0 )
    {
        FILE * file = FIO_CreateFileEx( CARD_DRIVE "ML/SETTINGS/C_MODE-0.CFG" );
    }
    else {
        FILE * file = FIO_CreateFileEx( CARD_DRIVE "ML/SETTINGS/C_MODE-1.CFG" );
    }
    if( file == INVALID_PTR )
        return;
   
    FIO_WriteFile(file, msg, strlen(msg));
   
    FIO_CloseFile( file );
}


I'm a bit lost...

336    if ( mcm_current == 0 )
337    {
338        FILE * file = file = FIO_CreateFileEx( CARD_DRIVE "ML/SETTINGS/C_MODE-0.CFG" );
339    }
340    else {
341        FILE * file = file = FIO_CreateFileEx( CARD_DRIVE "ML/SETTINGS/C_MODE-1.CFG" );
342    }
343    if( file == INVALID_PTR )
344        return;
345   
346   FIO_WriteFile(file, msg, strlen(msg));
347   
348    FIO_CloseFile( file );

this solve compiling problem but jus for a few lines before again
../../src/mcm.c:343:9: error: 'file' undeclared (first use in this function)

now i'll try another way... :)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 12, 2012, 07:44:40 PM
File saved without crash :D
now time to find why  ;D

EDIT:
Uh... too early to be happy  >:(

this what i got inside the file:


ISO =
Tv = ∞
Av = 0‰è:±Ã˙ñóÕäπËØPá\Öw"a†¿âd ãF©)ø


lol

more to come later

EDIT II: Fixed the numbers :)

EDIT III: not yet sure if the data is loaded from the file, checking that now...
Title: Re: 500D control such as 5D II.
Post by: scrax on December 12, 2012, 08:49:38 PM
hihi... worked... saved setting to file and loaded from it.

copy and paste power  ;D ;D 8)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 12, 2012, 08:59:23 PM
Now run faster?  ;)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 12, 2012, 09:04:44 PM
too early to tell, i've just one c mode for now, adding more now, later will post something to try


EDIT: Stuck again, after loading some value it just go on like there are none more but the file is full... so need to find out why now...

that is the part giving problem:


void set_shoot_by_cmode(char* name, char* entry_name)
{
    NotifyBox(2000, "%s -> %s", name, entry_name); msleep(2000);

    if (streq(name, "ISO")) lens_set_rawiso(entry_name);
    if (streq(name, "_Tv")) lens_set_rawshutter(entry_name);
    if (streq(name, "_Av")) lens_set_rawaperture(entry_name);
    if (streq(name, "KEL")) lens_set_kelvin(entry_name);
    if (streq(name, "W-B")) set_wbbal_mode(entry_name);
    if (streq(name, "G-M")) lens_set_wbs_gm(entry_name);
    if (streq(name, "B-A")) lens_set_wbs_ba(entry_name);
    if (streq(name, "D-M")) lens_set_drivemode(entry_name);
    if (streq(name, "M-M")) set_metering_mode(entry_name);
}

const char * mcm_filename;

static void mcm_load_shoot_settings()
{
    switch (mcm_current)
    {
        case 0:
            return;
        case 1:
            mcm_filename = CARD_DRIVE "ML/SETTINGS/C_MODE-1.txt" ;
            break;
        case 2:
            mcm_filename = CARD_DRIVE "ML/SETTINGS/C_MODE-2.txt" ;
            break;
        case 3:
            mcm_filename = CARD_DRIVE "ML/SETTINGS/C_MODE-3.txt" ;
            break;
        case 4:
            mcm_filename = CARD_DRIVE "ML/SETTINGS/C_MODE-4.txt" ;
            break;
        case 5:
            mcm_filename = CARD_DRIVE "ML/SETTINGS/C_MODE-5.txt" ;
            break;
    }
    int size = 0;
    char* buf = (char*)read_entire_file( mcm_filename, &size);
    if (!size) return;
    if (!buf) return;
    NotifyBox(2000, "size: %d ", size); msleep(2000);
    int prev = -1;
    int sep = 0;
    for (int i = 0; i < size; i++)
    {
        if (buf[i] == '\\') sep = i;
        else if (buf[i] == '\n')
        {
             NotifyBox(2000, "prev: %d, sep: %d, i %d ", prev, sep, i); msleep(2000);
            if (prev < sep-2 && sep < i-2)
            {
                buf[i] = 0;
                buf[sep] = 0;
                char* setting_name = &buf[prev+1];
                char* entry_name = &buf[sep+1];
                //~ NotifyBox(2000, "%s -> %s", menu_name, entry_name); msleep(2000);
                //hide_menu_by_name(menu_name, entry_name);
                set_shoot_by_cmode(setting_name, entry_name);
            }
            prev = i;
        }
    }
    free_dma_memory(buf);
}



And that is what inside a file:

ISO\6400
_TV\4000
_AV\226
KEL\10000
W-B\1
G-M\0
B-A\0
D-M\0
M-M\0


EDIT: Ok now it's just a matter of conflict between types i think...  ???
I can save and rostore only some settings like Av, Tv but not other like WB, ISO.... hum..also somehow i've bricked drive mode change once, had to reset camera settings to bring it back to work, I suppose it went set to the wrong value.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 15, 2012, 12:49:40 PM
I can't go on, the value shown on screen are right but what is set is wrong and all the thing don't work...

Here start problems:
https://bitbucket.org/600Dplus/magic-lantern-for-600d/src/6b7697ad26610f3c60ed896ee1f9b6e1ee146128/src/mcm.c?at=small_pull_req#cl-105

as you can se if I try with specific value like 152 for _TV it works, but entry_name even if is show right in the notify box is wrong when using lens_set_xx.

mcm.c  is all what I'm using for that now added mcm.o in makefile for 600D
Title: Re: 500D control such as 5D II.
Post by: nanomad on December 15, 2012, 02:40:54 PM
I'm not quite sure that function is correct...

all the _set_ something functions take an int as input and you are passing a char * (a string). That's no good....

Here's what you should do:

lens_set_rawiso(atoi(entry_name));

atoi should be already available, otherwise check config.c for an implementation
Title: Re: 500D control such as 5D II.
Post by: scrax on December 15, 2012, 03:23:26 PM
Quote from: nanomad on December 15, 2012, 02:40:54 PM

all the _set_ something functions take an int as input and you are passing a char * (a string). That's no good....

Yes but also whit int or int* didn't worked, thanks for atoi will try now Worked finally  :D
Title: Re: 500D control such as 5D II.
Post by: scrax on December 15, 2012, 04:30:09 PM
Quote from: Greg on December 12, 2012, 08:59:23 PM
Now run faster?  ;)

@Greg  try on your 500D:

Here (https://bitbucket.org/600Dplus/magic-lantern-for-600d/downloads/500Donly_test_autoexec.bin.zip) you can download and try an autoexec for 500D only

Here (https://bitbucket.org/600Dplus/magic-lantern-for-600d/downloads/600Donly_test_autoexec.bin.zip) instead, one test autoexec for 600D only



...that is my 666 post  :o  ;D


NOTE: Functions settings are now in Expo menu and C-mode files settings are saved in /ML/SETTINGS (they are for now saved as .txt, will change to cfg next commit)
Title: Re: 500D control such as 5D II.
Post by: jplxpto on December 15, 2012, 06:42:09 PM
Hello guys.

I like your commitment.
Feeling the need to learn a language like C, to participate in this project for me is something that deserves a lot of respect from a developer.
I feel that you are a bit lost ... is normal .. this is part of learning ...
I'll be glad to be able to help you in your challenge.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 15, 2012, 08:16:14 PM
Quote from: jplxpto on December 15, 2012, 06:42:09 PM
Hello guys.

I like your commitment.
Feeling the need to learn a language like C, to participate in this project for me is something that deserves a lot of respect from a developer.
I feel that you are a bit lost ... is normal .. this is part of learning ...
I'll be glad to be able to help you in your challenge.
thank's,
it's not so easy as bash :o , and so far more i study more i get confused, but diggin in the source of ML helps a lot more than a lot of tutorials read in those day on how to load data from files, types and so on. And of course yours help and support is fondamental, it made me like to learn it and try what i can even if it's stupid from an expert point of view.
That's a great attitude from all ML devs here... :)

by the way, to not stay without something to do i'm  now looking into add an option to load c-1 mode at start-up. ;)

EDIT: that was easy :D seems already working at first try
Title: Re: 500D control such as 5D II.
Post by: Greg on December 15, 2012, 08:25:49 PM
Quote from: scrax on December 15, 2012, 04:30:09 PM
@Greg  try on your 500D:
I have no camera to see.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 16, 2012, 12:15:00 AM
When you can try, if all good we now need a better graphics :)
pushed last things.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 27, 2012, 03:01:24 PM
My code without C modes faster.
In the Drive menu hold the up or down. Without C modes running smoothly, with the C modes sometimes skips every second.

C modes do not write AF mode?

(http://img593.imageshack.us/img593/5006/vram0.png)
Title: Re: 500D control such as 5D II.
Post by: scrax on December 27, 2012, 04:12:40 PM
Quote from: Greg on December 27, 2012, 03:01:24 PM
C modes do not write AF mode?

(http://img593.imageshack.us/img593/5006/vram0.png)

Not yet, only ISO, Ae, Tv, WB+K+shift,Drive Mode and Metering Mode.


About the pic, seems to me that INFO button is not used by canon in PicStyle dialog on 500D, is it right?

(http://images.wikia.com/magiclantern/images/f/f3/Dialog_Pic_Style.png)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 27, 2012, 04:34:05 PM
The 500D is the info button called disp


Quote from: scrax on December 27, 2012, 04:12:40 PMAbout the pic, seems to me that INFO button is not used by canon in PicStyle dialog on 500D, is it right?
It works well, you need to improve appearance.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 27, 2012, 05:01:11 PM
Quote from: Greg on December 27, 2012, 04:34:05 PM
The 500D is the info button called disp
Good to know, but without c-modes enabled is it used to edit pic styles?

Quote from: Greg on December 27, 2012, 04:34:05 PM
It works well, you need to improve appearance.
I'll like to add some icons instead of text, would you help me? Your icons for Metering Mode are so good.  :)
I was thinking about having an Icon only with C-x that changes when you change c-mode, and maybe in the left space the selected C-mode settings saved smaller (I have not yet a clear idea on how to show them to avoid mess). Also WB kelvin and flash exp comp could be iconized but no ideas yet.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 28, 2012, 01:56:14 AM
Quote from: scrax on December 27, 2012, 05:01:11 PM
Good to know, but without c-modes enabled is it used to edit pic styles?
Disp is only used to enable or disable the screen. The pic styles do not need.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 28, 2012, 04:02:06 AM
Quote from: Greg on December 28, 2012, 01:56:14 AM
Disp is only used to enable or disable the screen. The pic styles do not need.
Ok now understood, on 600D there is INFO in place of DISP, but there is also DISP for screen toggle as on 500D.
So on 500D only SET:Load should be enabled from the dialog.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 28, 2012, 04:17:51 AM
Flash exposure compensation icon, but I will also add background is later, I'm going to sleep now.

(http://img201.imageshack.us/img201/4685/vram1m.png)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 28, 2012, 05:58:18 PM
Now it looks better ;) Rework the code so that you can icon to move and adapt to different camera.

(http://img854.imageshack.us/img854/5006/vram0.png)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 28, 2012, 10:43:40 PM
here the code - https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/8f871c52af33781aaca4745f39ce7f7fc0882fcc

You can change the position of the icons to match the 600D.
int hi = 494; // position height icon
int wi = 381; // position width icon

Title: Re: 500D control such as 5D II.
Post by: scrax on December 29, 2012, 01:50:32 AM
Quote from: Greg on December 28, 2012, 10:43:40 PM
here the code - https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/8f871c52af33781aaca4745f39ce7f7fc0882fcc

You can change the position of the icons to match the 600D.
int hi = 494; // position height icon
int wi = 381; // position width icon


Thank's Greg, added your Flash icon and also did Kelvin icon. I'm starting to understand how it works ;)

(http://images.wikia.com/magiclantern/images/4/49/Kelvin_Icon.png)
Title: Re: 500D control such as 5D II.
Post by: Greg on December 29, 2012, 02:40:11 AM
 ;)
There is a way to detect the ISO button? We need to avoid flickering while entering the ISO menu.
Title: Re: 500D control such as 5D II.
Post by: scrax on December 29, 2012, 03:07:33 AM
Quote from: Greg on December 29, 2012, 02:40:11 AM
;)
There is a way to detect the ISO button? We need to avoid flickering while entering the ISO menu.

For what i know it's not possible so far, I've tried something with no success.
Title: Re: 500D control such as 5D II.
Post by: Greg on December 29, 2012, 07:25:50 PM
I'm trying to add H2 ISO to ISO menu. There is a problem with the refresh rate if the value is different than the standard.
http://www.youtube.com/watch?v=f-fwf9xhV9Q&feature=youtu.be

int abx = lens_info.raw_iso;
if (abx != 136)
{
bmp_printf(FONT(FONT_LARGE, COLOR_FG_NONLV, COLOR_WHITE), 590, 310,"H2");
}
else
{
bmp_printf(FONT(FONT_LARGE, COLOR_FG_NONLV, COLOR_BLUE), 590, 310,"H2");
bmp_printf(FONT(FONT_LARGE, COLOR_WHITE, COLOR_BLUE), 295, 130,"ISO 25600");
}

if (event->param == BGMT_PRESS_LEFT && abx == 0)
{
   lens_set_rawiso(136);
   return 0;
}
if (event->param == BGMT_PRESS_RIGHT && abx == 128)
{
   lens_set_rawiso(136);
   return 0;
}
if (event->param == BGMT_PRESS_LEFT && abx == 136)
{
   lens_set_rawiso(128);
   return 0;
}

if (event->param == BGMT_PRESS_RIGHT && abx == 136)
{
   lens_set_rawiso(0);
   return 0;
}
Title: Re: 500D control such as 5D II.
Post by: scrax on December 29, 2012, 09:36:11 PM
I've changed a bit the Metering Icons, now they toggle instead of being selected. Also moved C-modes here, need to decide if keep Meterin here and use up arrow for it and down for C modes toggle. Will do the numbers roman style so it's easy ;) ( I II III ), tonight.
(http://images.wikia.com/magiclantern/images/f/f4/New_drivemode.png)
Will add up and down arrow before the Metering and C modes icons, and also SET and INFO as icon with background like canon has in normal dialog (not Q)
Now i'm looking if there are other button that can be used, how works the LCD sensor when in drive dialog? Maybe it can be used instead of INFO on 500D?
Another button that maybe we can catch is LV, with the red dot makes more sense for saving the C-mode too.

Seems I can't enable H2 on 600D in photo mode.
Title: Re: 500D control such as 5D II.
Post by: scrax on January 05, 2013, 04:12:17 AM
Quote from: Greg on December 29, 2012, 02:40:11 AM
;)
There is a way to detect the ISO button? We need to avoid flickering while entering the ISO menu.
I can avoid flicker, but there are two drawback:
- up down arrow sends only unpress event so i't weird changing them,
- the display will go off after a while if ISO isn't changed, but also maybe when, instead, changing flash ex comp.

Seems that normal ISO dialog is not good for that.
Added D+ switch (change and close dialog) to Play button.
If I can find how to enable H2 will try to put a switch for it too on zoom btn.
For now when d+ ON I've put the flash icon in the ISO value box since under appears a canon warning about d+ mode.

Maybe D+ icon colud be moved on the title, and flash, exp value integrated in the icon (making the + or - red and put numbers on a bigger box, need to try)
Title: Re: 500D control such as 5D II.
Post by: Greg on January 08, 2013, 06:17:36 PM
We can do the self-timer beep.
When we are in the drive mode menu. When you press the play button. Turn on the self-timer 10s.
http://www.youtube.com/watch?v=Ry6vkVBUBQI&feature=youtu.be

if(CURRENT_DIALOG_MAYBE == DLG_Q_DRIVE_MODE)
{
if(!IS_FAKE(event))
{
if (event->param == BGMT_PLAY)
{
      SetGUIRequestMode(0);
      msleep(300);
      for (int i = 0; i < 9; i++)
          {
      beep();
        msleep(1000);
          }
      for (int i = 0; i < 5; i++)
          {
      beep();
      msleep(200);
          }
              lens_take_picture(64, 0);
      return 0;
}

}
}
Title: Re: 500D control such as 5D II.
Post by: scrax on January 09, 2013, 12:27:12 AM
I'm thinking how to keep button similar for each dialog:
WB
UP/DOWN sets kelvin (what about using also scrollwheel for faster changes?)ùanother Idea was to change K with scrollwheel when WB button is keep pressed.

DRIVE
UP/DOWN set metering mode (if c-mode on it will use up-DOWN)
PLAY toggle metering mode (always but useful with c-modes)

FOCUS (nothing yet)
UP/DOWN change focus patterns
PLAY change FP type (vertical horizontal, center)

PicStyle/Other
Not yet sure, probably will brin custom modes back here.
Title: Re: 500D control such as 5D II.
Post by: scrax on January 21, 2013, 04:25:22 PM
I've made some changes and update the code to last commits, I've added customizable Pic Style dialog override and Focus pattern selection in focus dialog. Kelvin are now shown in a more nice way. And also icon are replaced across screen to avoid problem with canon graphics, will move custom mode to that dialog since is used only for the override and up/down arrow will be free to use.

This could let me add a way to start intervalometer, bracketing, and so on from drive dialog. The idea is to use up/down arrow to select the item and use zoom+ to enable it. Will try something about this soon.

Focus pattern are selected by up/down arrow for vertical selection, scrollwheel for horizontal and play for center
Title: Re: 500D control such as 5D II.
Post by: scrax on January 27, 2013, 02:31:30 PM
I can't change max iso, don't know if there is something like for changing ISO already or if I need to check the prop o add it. another thing is the auto WB button, I want to use it from photo mode so probably should go to LV start autoWB (set photo mode WB) and back to photo mode when finished, any suggestion about where to start to work on that? Something similar already in ML?

For each dialog I'm trying to use same buttons and icon position were possible. Focus dialog need some more icons before being really finished

ISO Flash Exp. Comp. settings and HTP switch
UP/DOWN Set Flash Expo Comp.
PLAY Toggle HTP ON-OFF
LIVE VIEW Set max ISO (when AUTO is selected) - TO DO
WB Kelvin selection and AutoWB
UP/DOWN Set and change Kelvin
PLAY AutoK+G/M - TO DO
LIVE VIEW default Canon
DRIVE MODE Metering Mode switch
UP/DOWN Set and change Metering Mode (not if self-timer continuos)
PLAY Toggle Metering Mode
LIVE VIEW default Canon
FOCUS MODE Focus Pattern selection
UP/DOWN Select Vertical focus pattern
PLAY Select Central focus pattern
SCROLL WHEEL Select Horizontal focus pattern
PIC STYLES Other dialog override + custom modes
UP/DOWN Select C-Mode
PLAY Load from selected C-Mode
LIVE VIEW Save to selected C-Mode

Icon used: LV
Icon drawn (not found): PLAY, K, D+, FlashExpComp, Metering, C-Modes
Title: Re: 500D control such as 5D II.
Post by: Marsu42 on April 07, 2013, 07:43:04 PM
What's the status of it, can I pull it and try on the 60d?

I recently came up with a minimal proposal (http://www.magiclantern.fm/forum/index.php?topic=5058.0), if you guys get this working it might supersede - though I cannot find anything about switching the metering mode (eval/spot) here?
Title: Re: 500D control such as 5D II.
Post by: scrax on April 08, 2013, 05:41:09 AM
Quote from: Marsu42 on April 07, 2013, 07:43:04 PM
What's the status of it, can I pull it and try on the 60d?

I recently came up with a minimal proposal (http://www.magiclantern.fm/forum/index.php?topic=5058.0), if you guys get this working it might supersede - though I cannot find anything about switching the metering mode (eval/spot) here?
Status is that last source changes broke up the pull request and now what I get from the merge isn't loading anymore on my 600D so I have to try to restart from a new clone. I'm busy in those weeks so I can't do it right now.
For spot metering there is some code that change it when in Drive Mode dialog.
Basically for 60D you need to add the missing consts used to recognize the dialogs
Title: Re: 500D control such as 5D II.
Post by: Marsu42 on April 08, 2013, 09:42:08 AM
Quote from: scrax on April 08, 2013, 05:41:09 AM
Basically for 60D you need to add the missing consts used to recognize the dialogs

Ok, in the pull request you're writing you're re-doing this from the latest trunk source and simpler, so I'll wait for that.

It would be good if you'd put the basic af point & metering PROP_HANDLER and setting functions a bit outside btw, other features might want to use them so it'd be easier to add them to the #ifdef

void set_metering_mode(int new_metering_mode)
{
    new_metering_mode = COERCE(new_metering_mode, 1, 5);
    prop_request_change(PROP_METERING_MODE, &new_metering_mode, 4);
}

void set_af_mode(int new_af_mode)
{
    new_af_mode = COERCE(new_af_mode, 1, 5);
    prop_request_change(PROP_AF_MODE, &new_af_mode, 4);
}


and

propvalues.c:volatile PROP_INT(PROP_METERING_MODE, metering_mode);
propvalues.h:extern int metering_mode;
Title: Re: 500D control such as 5D II.
Post by: scrax on April 09, 2013, 12:34:01 AM
Quote from: Marsu42 on April 08, 2013, 09:42:08 AM
Ok, in the pull request you're writing you're re-doing this from the latest trunk source and simpler, so I'll wait for that.

It would be good if you'd put the basic af point & metering PROP_HANDLER and setting functions a bit outside btw, other features might want to use them so it'd be easier to add them to the #ifdef

void set_metering_mode(int new_metering_mode)
{
    new_metering_mode = COERCE(new_metering_mode, 1, 5);
    prop_request_change(PROP_METERING_MODE, &new_metering_mode, 4);
}

void set_af_mode(int new_af_mode)
{
    new_af_mode = COERCE(new_af_mode, 1, 5);
    prop_request_change(PROP_AF_MODE, &new_af_mode, 4);
}


and

propvalues.c:volatile PROP_INT(PROP_METERING_MODE, metering_mode);
propvalues.h:extern int metering_mode;

I've found how to make the pull request work again, so maybe restarting from a new clone is not anymore needed. I'm not sure if I understood right what you suggest, will try.
If you want to try it, download my fork and add the missing consts for 60D and then define the feature you want to test.
I'm learning C by writing that code, so any suggestion to improve it is really appreciated. I suppose there is a lot of things that to expert devs could look strange so fell free to criticize it :D
Title: Re: 500D control such as 5D II.
Post by: Marsu42 on April 09, 2013, 01:51:22 AM
Does this non-lv shortcut solution cover the idea that I don't need to take my eye away from the viewfinder when changing settings, i.e. say toggle spot/eval metering with the UP key and get a different audio confirmation for each binary value? That's what I proposed in http://www.magiclantern.fm/forum/index.php?topic=5058.0

Other non-lv shortcuts are really nice, but if I want to look at the lcd screen to see the confirmation I can just use full-fledged lv in the first place - what's important for me is access to af/drive/metering functuions without looking.

Title: Re: 500D control such as 5D II.
Post by: scrax on April 09, 2013, 02:00:31 AM
Quote from: Marsu42 on April 09, 2013, 01:51:22 AM
Does this non-lv shortcut solution cover the idea that I don't need to take my eye away from the viewfinder when changing settings, i.e. say toggle spot/eval metering with the UP key and get a different audio confirmation for each binary value? That's what I proposed in http://www.magiclantern.fm/forum/index.php?topic=5058.0

Other non-lv shortcuts are really nice, but if I want to look at the lcd screen to see the confirmation I can just use full-fledged lv in the first place - what's important for me is access to af/drive/metering functuions without looking.
if you lear and remember (by using it) the key needed you can change the value for example to change meter mode from spot to multi you have to press left arrow once and up/down arrow twice.
Title: Re: 500D control such as 5D II.
Post by: Marsu42 on April 09, 2013, 07:28:02 AM
Quote from: scrax on April 09, 2013, 02:00:31 AM
if you lear and remember (by using it) the key needed you can change the value for example to change meter mode from spot to multi you have to press left arrow once and up/down arrow twice.

Ok, then this is not what I need, at least not in the current state as you'll understand - what I'd like are very quick and bulletproof one- or two-click (with meta) key for use in stress situations.

Do you see any sense in my "viewfinder approach" (basically this is something like professional cameras like 1dx or Nikon d4 with switches for access to crucial functions like servo/one shot af) and there's a chance to integrate it into your approach, or am I better off just implementing my own?