core/kbd.c:334-long kbd_process()-{-/* Alternative keyboard mode stated/exited by pressing print key.- * While running Alt. mode shoot key will start a script execution.- */-- if (kbd_blocked){- if (key_pressed){- if (kbd_is_key_pressed(conf.alt_mode_button)) {- ++key_pressed;- if (key_pressed==CAM_EMUL_KEYPRESS_DELAY) {- kbd_key_press(conf.alt_mode_button);- } else if (key_pressed==(CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION)) {- kbd_key_release(conf.alt_mode_button);- key_pressed = 2;- kbd_blocked = 0;-// gui_kbd_leave();- }- } else if (kbd_get_pressed_key() == 0) {- if (key_pressed!=100)- gui_kbd_enter();- key_pressed = 0;- } - return 1;- }-- if (kbd_is_key_pressed(conf.alt_mode_button)){- key_pressed = 2;- kbd_blocked = 0;- gui_kbd_leave();- return 1;- }-- if (kbd_is_key_pressed(KEY_SHOOT_FULL)){- key_pressed = 100;- if (!state_kbd_script_run){- script_console_clear();- script_console_add_line(lang_str(LANG_CONSOLE_TEXT_STARTED));- script_start();- } else {- script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED));- script_end();- }- }-- if (state_kbd_script_run)- process_script();- else {- gui_kbd_process();- }- } else {--// if (kbd_is_key_pressed(KEY_SHOOT_HALF) && kbd_is_key_pressed(conf.alt_mode_button)) return 0;-- if (!key_pressed && kbd_is_key_pressed(conf.alt_mode_button)){- kbd_blocked = 1;- key_pressed = 1;- kbd_key_release_all();-// gui_kbd_enter();- return 1;- } else - if ((key_pressed == 2) && !kbd_is_key_pressed(conf.alt_mode_button)){- key_pressed = 0;- }- - if (conf.use_zoom_mf && kbd_use_zoom_as_mf()) {- return 1;- }- }-- return kbd_blocked;-}+long kbd_process()+{+/* Alternative keyboard mode stated/exited by pressing print key.+ * While running Alt. mode shoot key will start a script execution.+ */+ // deals with alt-mode switch and delay emulation+ if (key_pressed)+ {+ if (kbd_is_key_pressed(conf.alt_mode_button) ||+ ((key_pressed >= CAM_EMUL_KEYPRESS_DELAY) && + (key_pressed < CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION)))+ {+ if (key_pressed <= CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION) + key_pressed++;+ if (key_pressed == CAM_EMUL_KEYPRESS_DELAY) + kbd_key_press(conf.alt_mode_button);+ else if (key_pressed == +CAM_EMUL_KEYPRESS_DELAY+CAM_EMUL_KEYPRESS_DURATION) + kbd_key_release(conf.alt_mode_button);+ return 1;+ } else + if (kbd_get_pressed_key() == 0)+ {+ if (key_pressed != 100 && (key_pressed < CAM_EMUL_KEYPRESS_DELAY))+ {+ kbd_blocked = 1-kbd_blocked;+ if (kbd_blocked) gui_kbd_enter(); else gui_kbd_leave();+ }+ key_pressed = 0;+ return 1;+ }+ return 1;+ }++ // auto iso shift+ if (kbd_is_key_pressed(KEY_SHOOT_HALF) && kbd_is_key_pressed(conf.alt_mode_button)) return 0;+ + if (kbd_is_key_pressed(conf.alt_mode_button))+ {+ key_pressed = 1;+ kbd_key_release_all(); + return 1;+ }++ // deals with the rest+ if (kbd_blocked)+ {+ if (kbd_is_key_pressed(KEY_SHOOT_FULL))+ {+ key_pressed = 100;+ if (!state_kbd_script_run)+ {+ script_console_clear();+ script_console_add_line(lang_str(LANG_CONSOLE_TEXT_STARTED));+ script_start();+ } else + {+ script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED));+ script_end();+ }+ }++ if (state_kbd_script_run) + process_script(); else+ gui_kbd_process();+ } else+ {+ if (conf.use_zoom_mf && kbd_use_zoom_as_mf())+ return 1;+ }++ return kbd_blocked;+}
Added 8 and 9.
edit: Ok, done. Now, should I commit this..? :]
I think 11 has been requested before. If you have the enthusiasm, go for it. :]
Btw, #11 really is a familiar feature request and it is something I'd find very useful. There should probably be some sort of detection for changes in the script, though, to prevent odd behavior when the script is updated and parameter assignments change (like a script file checksum stored in the config file, or just a simple file date and size check while loading the script).
And cyril42e, keep up the good work polishing some of the rough edges in CHDK (and whatever you may come up with), your improvements are very welcome!
Let me be the first to congratulate you.
I use to have sets of files with different default parameters for my timelapses, it was a mess. But not anymore!