I recently ran into this exact problem and I found a solution that works (for me, anyway). I'm now using DISPLAY as my alt-mode button.
I started off with the most recent revision (727) of the code from
https://tools.assembla.com/svn/chdk .
Here's a summary of the changes I made:
In include\camera.h, added the following to the a570 section:
#define CAM_ADJUSTABLE_ALT_BUTTON 1
In platform\a570\kbd.c, added the following after line 18:
static long alt_mode_key_mask = 0x00000800;
Also in platform\a570\kbd.c, uncommented the following line:
physw_status[1] |= alt_mode_key_mask;
Same file, uncommented this section:
void kbd_set_alt_mode_key_mask(long key)
{
int i;
for (i=0; keymap[i].hackkey; ++i) {
if (keymap[i].hackkey == key) {
alt_mode_key_mask = keymap[i].canonkey;
return;
}
}
}
Finally, in core\gui.c, added the following after line 1435:
#elif defined(CAMERA_a570)
static const char* names[]={ "Print", "Display"};
static const int keys[] = {KEY_PRINT, KEY_DISPLAY};
The fact that some of this code was already in there and commented out makes me suspicious that it may have been done so for a reason.
But I figured I'd try it anyway, and it seems OK so far. If anyone knows of a reason why this fix could be bad please let me know.
I'm attaching my diffs and binaries in case anyone wants them. The binaries are for the 101a firmware, but I can build and post for the 100e firmware too if anyone wants them.