maybe it will be possible to find this physw_status bit with the sigfinder.
Control event 0x905 appears to be the battery door switch. The method works on the ixus115 (DryOS r47) and a470 (DryOS r23), so I think it will work on DryOS <= r47 cameras.
I suspect that the event number changed similarly to several others in higher DryOS revisions, the new event is probably 0x205.
A patch is attached. includes the sigfinder addition and the found values for all DryOS cameras. If anyone could test it on a DryOS > r47 camera, that would be great. 'A' series cameras may not need this hack (my a3200 and a3400 operate normally with opened battery door).
To use it, change the port's kbd.c like this:
Index: platform/a470/kbd.c
===================================================================
--- platform/a470/kbd.c (revision 3326)
+++ platform/a470/kbd.c (working copy)
@@ -27,6 +27,8 @@
#define USB_MASK (0x40000)
#define USB_IDX 2
+#define BATTCOVER_FLAG 0x01000000 // Found @0xffe525b8, levent 0x905
+#define BATTCOVER_IDX 1
extern void usb_remote_key( void ) ;
int get_usb_bit()
@@ -154,6 +156,7 @@
physw_status[USB_IDX] = physw_status[USB_IDX] & ~(SD_READONLY_FLAG | USB_MASK);
}
else physw_status[USB_IDX] = physw_status[USB_IDX] & ~SD_READONLY_FLAG;
+ physw_status[BATTCOVER_IDX] = physw_status[BATTCOVER_IDX] | BATTCOVER_FLAG;
_kbd_pwr_off();
if (set_fake_key & 0x10000000) {