コード例 #1
0
ファイル: kbd_process.c プロジェクト: BioDesignRealWorld/CHDK
//-------------------------------------------------------------------
// Core keyboard handler
long kbd_process()
{
    static int key_pressed;

    if (camera_info.perf.md_af_tuning)
    {
        switch (camera_info.perf.md_af_on_flag)
        {
        case 1:
            if (get_tick_count() >= (camera_info.perf.md_detect_tick + camera_info.perf.md_af_on_delay))
            {
                camera_info.perf.md_af_on_flag = 2;
                camera_set_led(camera_info.cam_af_led,1,200);
            }
            break;
        case 2:
            if (get_tick_count() >= (camera_info.perf.md_detect_tick + camera_info.perf.md_af_on_delay + camera_info.perf.md_af_on_time))
            {
                camera_info.perf.md_af_on_flag = 0;
                camera_set_led(camera_info.cam_af_led,0,0);
            }
            break;
        }
    }

    // Reset keyboard auto repeat if no buttons pressed
    if (kbd_get_pressed_key() == 0)
        last_kbd_key = 0;

    // Set clicked key for scripts.
    if (kbd_get_clicked_key())
    {
        camera_info.state.kbd_last_clicked = kbd_get_clicked_key();
        camera_info.state.kbd_last_clicked_time = get_tick_count();
    }

    // Set Shutter Half Press state for GUI task.
    camera_info.state.is_shutter_half_press = kbd_is_key_pressed(KEY_SHOOT_HALF);

	// Alternative keyboard mode stated/exited by pressing print key.
	// While running Alt. mode shoot key will start a script execution.

	// alt-mode switch and delay emulation
 
	if ( key_pressed  && !usb_remote_active ) 
	{
        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 < CAM_EMUL_KEYPRESS_DELAY)
            {
                if (!kbd_blocked) 
                    enter_alt();
                else
                    exit_alt();
            }
            key_pressed = 0;
            return 1;
        }
        return 1;
    }
       
    // auto iso shift
    if (camera_info.state.is_shutter_half_press && 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;
    }

#ifdef CAM_TOUCHSCREEN_UI
    extern int ts_process_touch();
    if (ts_process_touch())
    {
        gui_set_need_restore();
    }
#endif

    // deals with the rest

    if ( !kbd_blocked || usb_remote_active ) 
	{
		kbd_blocked = handle_usb_remote();
	}

    if (gui_kbd_process())
        return 1;

    action_stack_process_all();

    return kbd_blocked;
}
コード例 #2
0
ファイル: kbd.c プロジェクト: emlyn/chdk
/*
    main kb processing
    this monster needs to be broken up and documented, remote stuff should go in it's own functions
*/
long kbd_process()
{
/* Alternative keyboard mode stated/exited by pressing print key.
 * While running Alt. mode shoot key will start a script execution.
 */
    static int nCER=0;
// ------ modif by Masuji SUTO (start) --------------

    unsigned int mmode;
    unsigned int nCrzpos,i;
    unsigned int drmode = 0;

    if(conf.ricoh_ca1_mode && conf.remote_enable) {
        drmode = shooting_get_drive_mode();
        mmode = mode_get();
        mplay = (mmode&MODE_MASK)==MODE_PLAY;
//      mvideo= ((mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || (mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED || (mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT ||(mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_MY_COLORS || (mmode&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_ACCENT);
        mvideo=MODE_IS_VIDEO(mmode);
    }
    // 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)) {
        if (conf.ricoh_ca1_mode && conf.remote_enable)
            conf.synch_enable=1;
        key_pressed = 1;
        kbd_key_release_all();
        return 1;
    }

    // deals with the rest
    if (kbd_blocked && nRmt==0) {
/*------------------- Alex scriptless remote additions start --------------------*/
        if (remoteShooting) {
            if (remoteHalfShutter) {
                if (get_usb_power(1)) {
                    if (remoteClickTimer < REMOTE_MAX_CLICK_LENGTH) {
                        remoteHalfShutter=0;
                        remoteFullShutter=1;
                        kbd_key_press(KEY_SHOOT_FULL);
                    }
                    return 1;
                } else {
                    --remoteClickTimer;
                    if ( remoteClickTimer == 0 ) {
                        kbd_key_release_all();
                        remoteHalfShutter=0;
                        remoteShooting=0;
                        kbd_blocked=0;
                        return 0;
                    }
                }
            }

            if (remoteFullShutter) {
                if (get_usb_power(1)) {
                    return 1;
                } else {
                    kbd_key_release_all();
                    remoteFullShutter=0;
                    remoteShooting=0;
                    kbd_blocked=0;
                    return 0;
                }
            }
        }
/*-------------------- Alex scriptless remote additions end ---------------------*/
#ifdef OPT_SCRIPTING
        if (kbd_is_key_pressed(KEY_SHOOT_FULL)) {
            key_pressed = 100;
            if (!state_kbd_script_run) {
                script_start_gui(0);
            } else if (state_kbd_script_run == 2 || state_kbd_script_run == 3) {
                script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED));
                script_end();
            }
#ifdef OPT_LUA
            else if (L) {
                state_kbd_script_run = 2;
				lua_run_restore();
                script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED));
                script_end();
            }
#endif
#ifdef OPT_UBASIC
            else {
                state_kbd_script_run = 2;
                if (jump_label("restore") == 0) {
                    script_console_add_line(lang_str(LANG_CONSOLE_TEXT_INTERRUPTED));
                    script_end();
                }
            }
#endif
        }
#endif

        action_stack_process_all();
        if (!state_kbd_script_run)
            gui_kbd_process();
    } else {
#ifndef SYNCHABLE_REMOTE_NOT_ENABLED
        if(conf.ricoh_ca1_mode && conf.remote_enable) {
// ------ add by Masuji SUTO (start) --------------
            if(nWt>0) {
                nWt--;
                return 1;
            }
#if defined(CAMERA_ixus960)
            if(nFirst==1) {
                if(nSW==0) {
                    nSW=1;
                    nWt=10;
                    kbd_key_release_all();
                    kbd_key_press(KEY_SHOOT_HALF);
                    soft_half_press = 1;
                    set_key_press(1);
                    return 1;
                } else if(nSW==1) {
                    nSW=2;
                    nWt=10;
                    kbd_key_release(KEY_SHOOT_HALF);
                    soft_half_press = 0;
                    set_key_press(1);
                    return 1;
                } else if(nSW==2) {
                    set_key_press(0);
                    nWt=10;
                    nSW=0;
                    nFirst=0;
                    return 1;
                }
            }
#endif // CAMERA_ixus960
            if (kbd_is_key_pressed(KEY_SHOOT_FULL))
                conf.synch_enable=0;
            if (kbd_is_key_pressed(KEY_SHOOT_HALF) && nTxzoom>0) {
                nCount2=0;
                nTxzoom=0;
                nReczoom=0;
                nTxvideo=0;
                debug_led(0);
            }
            if (mplay && (kbd_is_key_pressed(KEY_LEFT) || kbd_is_key_pressed(KEY_RIGHT))) {
                nPlyname=KEY_LEFT;
                if(kbd_is_key_pressed(KEY_RIGHT))
                    nPlyname=KEY_RIGHT;
            }
            if (kbd_is_key_pressed(KEY_VIDEO)) {
                nCount2=0;
                nTxzoom=0;
                nReczoom=0;
                nTxvideo++;
                if(nTxvideo<50) {
                    kbd_key_release_all();
                    debug_led(1);
                } else {
                    debug_led(0);
                    return 0;
                }
                return 1;
            }
            else if(nTxvideo>49)
                nTxvideo=0;
            if (kbd_is_key_pressed(KEY_ZOOM_IN) || kbd_is_key_pressed(KEY_ZOOM_OUT)) {
                nCount2=0;
                nTxvideo=0;
                if(kbd_is_key_pressed(KEY_ZOOM_IN)) {
                    if(nTxzname==KEY_ZOOM_IN)
                        nTxzoom++;
                    else
                        nTxzoom=1;
                    nTxzname=KEY_ZOOM_IN;
                } else {
                    if(nTxzname==KEY_ZOOM_OUT)
                        nTxzoom++;
                    else
                        nTxzoom=1;
                    nTxzname=KEY_ZOOM_OUT;
                }
                if(nTxzoom<50) {
                    kbd_key_release_all();
                    debug_led(1);
                } else {
                    debug_led(0);
                    return 0;
                }
                return 1;
            }
            if(!get_usb_power(1) && nSW<100 && nCount==0 && nTxzoom>0) {
                nCount2++;
                if(nCount2>conf.zoom_timeout*100) {
                    if(nTxzoom>0) {
                        nTxzoom=0;
                        nReczoom=0;
                        debug_led(0);
                    }
                    nCount2=0;
                }
                return 1;
            }
            if(get_usb_power(1) && nSW<100 && nCount==0) {
                nCount2=0;
                kbd_key_release_all();
                conf.synch_enable=1;
            }
            if(get_usb_power(1) && nSW<100 && nCount==0) {
                kbd_key_release_all();
                conf.synch_enable=1;
            }
            if(get_usb_power(1) && nSW<100 && nCount<6) {
                nCount++;
                return 1;
            }
            if(nCount>0 && nSW<100) {
                if(mplay) {
                    if(get_usb_power(1))
                        return 1;
                    kbd_key_release_all();
                    kbd_key_press(nPlyname);
                    set_key_press(1);
                    nCount=0;
                    nCa=2;
                    nSW=101;
                    nWt=5;
                    return 1;
                }
                if(nTxvideo>49)
                    nTxvideo=0;
                if(nCount<5)
                    nCa=1;                //for Richo remote switch CA-1
                else
                    nCa=2;                                //for hand made remote switch

                nCount=0;
//              debug_led(1);
                nSW=109;
            }

// -------------------------------------------------------------  hand made switch  --------------

            if(nCa==2) {
                if(nSW==101) {
                    kbd_key_release_all();
                    set_key_press(0);
                    nWt=50;
                    nSW=0;
                    nCa=0;
                    return 1;
                }
                if(nSW==109) {
//                  nSW=110;
                    nCER=0;
                    if(nTxzoom>0 && conf.remote_zoom_enable) {
                        if(nTxzoom<100) {
                            nIntzpos=lens_get_zoom_point();
                            for(i=0;i<ZSTEP_TABLE_SIZE;i++) {
                                if(nIntzpos<=nTxtbl[i]) {
                                    if(i>0) {
                                        if(abs(nTxtbl[i]-nIntzpos)<=abs(nTxtbl[i-1]-nIntzpos))
                                            nTxtblcr=i;
                                        else
                                            nTxtblcr=i-1;
                                    }
                                    else nTxtblcr=i;
                                    i=ZSTEP_TABLE_SIZE;
                                }
                            }
                            if(nTxzname==KEY_ZOOM_IN) {
                                nTxtblcr++;
                                if(nTxtblcr>(ZSTEP_TABLE_SIZE-1))
                                    nTxtblcr=(ZSTEP_TABLE_SIZE-1);
                            } else {
                                nTxtblcr--;
                                if(nTxtblcr<0)
                                    nTxtblcr=0;
                            }
                            nSW=108;
                            return 1;
                        }
                        nTxzoom=0;
                        nReczoom=0;
                    }
                    if(nTxvideo>0 && conf.remote_zoom_enable) {
                        nSW=121;
                        return 1;
                    }
                    nSW=110;
                    nWt=2;
                    kbd_key_release_all();
                    kbd_key_press(KEY_SHOOT_HALF);
//                  key_pressed = 1;
//                  kbd_blocked = 1;
//                  nRmt=1;
                    soft_half_press = 1;
                    set_key_press(1);
                    return 1;
                }
                if(nTxzoom>0 && nSW==108 && conf.remote_zoom_enable) {
                    nCrzpos=lens_get_zoom_point();
                    if(nIntzpos!=nCrzpos) {
                        nReczoom=0;
                    }
                    if(nIntzpos==nCrzpos && nCER>50) {
                        if(!get_usb_power(1)) {
                            kbd_key_release_all();
                            set_key_press(0);
                            nTxzoom=1;
                            nSW=0;
                            nCount=0;
                            nWt=10;
                            nReczoom=1;
                            return 1;
                        }
                    }
                    if(nReczoom==0 && ((nTxzname==KEY_ZOOM_IN && nCrzpos>=nTxtbl[nTxtblcr])
                            || (nTxzname==KEY_ZOOM_OUT && nCrzpos<=nTxtbl[nTxtblcr]))) {
                        if(get_usb_power(1)) {
                            i=1;
                            if(nTxzname==KEY_ZOOM_IN) {
                                nTxtblcr++;
                                if(nTxtblcr>(ZSTEP_TABLE_SIZE-1)) {
                                    nTxtblcr=(ZSTEP_TABLE_SIZE-1);
                                    nTxzname=KEY_ZOOM_OUT;
                                }
                            } else {
                                nTxtblcr--;
                                if(nTxtblcr<0){
                                    nTxtblcr=0;
                                    nTxzname=KEY_ZOOM_IN;
                                }
                            }
                            if(i==1)
                                return 1;
                        }
                        kbd_key_release_all();
                        set_key_press(0);
                        nTxzoom=1;
//                      lens_set_zoom_speed(25);
                        nSW=120;
                        nWt=5;
                        return 1;
                    }
                    kbd_key_release_all();
                    kbd_key_press(nTxzname);
                    set_key_press(1);
                    nCER++;
                    return 1;
                }

                if(nTxvideo>0 && nSW==121) {
                    if(!get_usb_power(1)) {
                        nWt=10;
                        kbd_key_press(KEY_VIDEO);
                        set_key_press(1);
                        nSW=122;
                    }
                    return 1;
                }
                if(nTxvideo>0 && nSW==122) {
                    nWt=10;
                    kbd_key_release(KEY_VIDEO);
                    set_key_press(1);
                    nSW=123;
                    return 1;
                }
                if(nTxvideo>0 && nSW==123) {
                    set_key_press(0);
                    nWt=50;
                    nSW=0;
                    nCa=0;
                    nTxvideo=0;
                    debug_led(0);
                    return 1;
                }

                if(nSW==110) {
                    if (shooting_in_progress() || mvideo || nCER>100) {
                        state_expos_recalculated = 0;
                        histogram_restart();
                        nCER=0;
                        nSW=111;
                    } else {
                        nCER++;return 1;
                    }
                }
                if(nSW==111) {
                    if (state_expos_recalculated || nCER>100) {
                        state_expos_under = under_exposed;
                        state_expos_over = over_exposed;
                        nCER=0;
                        nSW=112;
                        //presynch();
                    } else {
                        nCER++;
                        return 1;
                    }
                }
                if(nSW==112) {
                    if (shooting_is_flash_ready() || nCER>10) {
                        nCER=0;
                        nSW=113;
                    } else {
                        nCER++;
                        return 1;
                    }
                }
                if(nSW==113) {
                    if(get_usb_power(1) && !mvideo)
                        nSW=114;
                    else if(!get_usb_power(1) && mvideo)
                        nSW=114;
                    else
                        return 1;
                }
                if(nTxzoom>0 && nSW==120 && conf.remote_zoom_enable) {
                    nCrzpos=lens_get_zoom_point();
                    if((nTxzname==KEY_ZOOM_IN && nCrzpos<=nTxtbl[nTxtblcr])
                            || (nTxzname==KEY_ZOOM_OUT && nCrzpos>=nTxtbl[nTxtblcr])) {
                        kbd_key_release_all();
                        set_key_press(0);
                        nTxzoom=1;
                        lens_set_zoom_speed(100);
                        nSW=0;
                        nCount=0;
                        nWt=10;
                        return 1;
                    }
                    lens_set_zoom_speed(5);
                    kbd_key_release_all();
                    if(nTxzname==KEY_ZOOM_IN)
                        kbd_key_press(KEY_ZOOM_OUT);
                    else
                        kbd_key_press(KEY_ZOOM_IN);
                    set_key_press(1);
                    return 1;
                }

                if(nSW==114) {
                    nSW=115;
                    nWt=2;
                    shutter_int=0;
                    kbd_key_press(KEY_SHOOT_FULL);
                    set_key_press(1);
//                  kbd_blocked = 1;
//                  nRmt=1;
                    nCount=0;
                    return 1;
                }
                if(nSW==115) {
//                  debug_led(0);
                    if(drmode==1 && shutter_int==0) {
                        return 1;
                    }
                    nSW=116;
                    nWt=2;
                    kbd_key_release(KEY_SHOOT_FULL);
                    set_key_press(1);
                    soft_half_press = 0;
//                  kbd_blocked = 1;
//                  nRmt=1;
                    return 1;
                }
                if(!get_usb_power(1) && nSW==116) {
                    set_key_press(0);
//                  kbd_blocked = 0;
//                  key_pressed = 0;
                    nWt=50;
                    nSW=0;
//                  nRmt=0;
                    nCa=0;
                    //postsynch();
                    return 1;
                }
            }

// -------------------------------------------------------------  Ricoh remote switch CA-1 --------------
            if(nCa==1) {
                if(get_usb_power(1) && nSW>108 && nSW<120) {
                    nCount++;
                }
                if(nSW==109) {
//                  nSW=110;
                    nCER=0;
                    if(nTxzoom>0 && conf.remote_zoom_enable) {
                        if(nTxzoom<100) {
                            nIntzpos=lens_get_zoom_point();
                            for(i=0;i<ZSTEP_TABLE_SIZE;i++) {
                                if(nIntzpos<=nTxtbl[i]) {
                                    if(i>0) {
                                        if(abs(nTxtbl[i]-nIntzpos)<=abs(nTxtbl[i-1]-nIntzpos))
                                            nTxtblcr=i;
                                        else
                                            nTxtblcr=i-1;
                                    }
                                    else
                                        nTxtblcr=i;
                                    i=ZSTEP_TABLE_SIZE;
                                }
                            }
                            if(nTxzname==KEY_ZOOM_IN) {
                                nTxtblcr++;
                                if(nTxtblcr>(ZSTEP_TABLE_SIZE-1))
                                    nTxtblcr=(ZSTEP_TABLE_SIZE-1);
                            }
                            else {
                                nTxtblcr--;
                                if(nTxtblcr<0)
                                    nTxtblcr=0;
                            }
                            nSW=113;
                            return 1;
                        }
                        nTxzoom=0;
                        nReczoom=0;
                    }
                    if(nTxvideo>0 && conf.remote_zoom_enable) {
                        nSW=121;
                        return 1;
                    }
                    nSW=110;
                    nWt=2;
                    kbd_key_release_all();
                    kbd_key_press(KEY_SHOOT_HALF);
//                  debug_led(1);
                    soft_half_press = 1;
                    set_key_press(1);
//                  key_pressed = 1;
//                  kbd_blocked = 1;
//                  nRmt=1;
                    return 1;
                }
                if(nTxvideo>0 && nSW==121) {
                    if(get_usb_power(1)) {
                        nWt=10;
                        kbd_key_press(KEY_VIDEO);
                        set_key_press(1);
                        nSW=122;
                    }
                    return 1;
                }
                if(nTxvideo>0 && nSW==122) {
                    nWt=10;
                    kbd_key_release(KEY_VIDEO);
                    set_key_press(1);
                    nSW=123;
                    return 1;
                }
                if(nTxvideo>0 && nSW==123) {
                    set_key_press(0);
                    nWt=100;
                    nCount=0;
                    nSW=0;
                    nCa=0;
                    nTxvideo=0;
                    debug_led(0);
                    return 1;
                }

                if(nSW==110) {
                    if (shooting_in_progress() || mvideo || nCER>100) {
//                      debug_led(0);
                        state_expos_recalculated = 0;
                        histogram_restart();
                        nCER=0;
                        nSW=111;
                    } else {
                        nCER++;
                        return 1;
                    }
                }
                if(nSW==111) {
                    if (state_expos_recalculated || nCER>100) {
                        state_expos_under = under_exposed;
                        state_expos_over = over_exposed;
                        nCER=0;
                        nSW=112;
                        //presynch();
                    } else {
                        nCER++;
                        return 1;
                    }
                }
                if(nSW==112) {
                    if (shooting_is_flash_ready() || nCER>10) {
                        nCER=0;
                        nSW=113;
                    } else {
                        nCER++;
                        return 1;
                    }
                }
                if(nTxzoom>0 && nSW==114 && conf.remote_zoom_enable) {
                    nCrzpos=lens_get_zoom_point();
                    if(nIntzpos!=nCrzpos) {
                        nReczoom=0;
                    }
                    if(nIntzpos==nCrzpos && nCER>50) {
                        if(nCount>0) {
                            kbd_key_release_all();
                            set_key_press(0);
                            nTxzoom=1;
                            nSW=0;
                            nCount=0;
                            nWt=10;
                            nReczoom=1;
                            return 1;
                        }
                    }
                    if(nReczoom==0 && ((nTxzname==KEY_ZOOM_IN && nCrzpos>=nTxtbl[nTxtblcr])
                                || (nTxzname==KEY_ZOOM_OUT && nCrzpos<=nTxtbl[nTxtblcr]))) {
                        if(nCount==0) {
                            i=1;
                            if(nTxzname==KEY_ZOOM_IN){
                                nTxtblcr++;
                                if(nTxtblcr>(ZSTEP_TABLE_SIZE-1)){
                                    nTxtblcr=(ZSTEP_TABLE_SIZE-1);
                                    nTxzname=KEY_ZOOM_OUT;
                                }
                            } else {
                                nTxtblcr--;
                                if(nTxtblcr<0) {
                                    nTxtblcr=0;
                                    nTxzname=KEY_ZOOM_IN;
                                }
                            }
                            if(i==1)
                                return 1;
                        }
                        kbd_key_release_all();
                        set_key_press(0);
                        nTxzoom=1;
//                      lens_set_zoom_speed(25);
                        nSW=115;
                        nWt=5;
                        return 1;
                    }
                    kbd_key_release_all();
                    kbd_key_press(nTxzname);
                    set_key_press(1);
                    nCER++;
                    return 1;
                }
                if(nTxzoom>0 && nSW==115 && conf.remote_zoom_enable) {
                    if(nCount==0)
                        return 1;
                    nCrzpos=lens_get_zoom_point();
                    if((nTxzname==KEY_ZOOM_IN && nCrzpos<=nTxtbl[nTxtblcr])
                            || (nTxzname==KEY_ZOOM_OUT && nCrzpos>=nTxtbl[nTxtblcr])) {
                        kbd_key_release_all();
                        set_key_press(0);
                        nTxzoom=1;
                        lens_set_zoom_speed(100);
                        nSW=0;
                        nCount=0;
                        nWt=10;
                        return 1;
                    }
                    lens_set_zoom_speed(5);
                    kbd_key_release_all();
                    if(nTxzname==KEY_ZOOM_IN)
                        kbd_key_press(KEY_ZOOM_OUT);
                    else
                        kbd_key_press(KEY_ZOOM_IN);
                    set_key_press(1);
                    return 1;
                }

                if(get_usb_power(1)) {
                    return 1;
                }
                if(nCount>0 && nSW==113) {
                    if(nCount<9) {
                        if(nTxzoom>0 && conf.remote_zoom_enable) {
                            kbd_key_release_all();
                            set_key_press(0);
                            nTxzoom=0;
                            nReczoom=0;
                            nSW=0;
                            nCa=0;
                            nCount=0;
                            nWt=10;
//                          lens_set_zoom_speed(100);
                            debug_led(0);
                            return 1;
                        }
                        nSW=125;
                        nWt=10;
                        kbd_key_release(KEY_SHOOT_HALF);
                        soft_half_press = 0;
                        set_key_press(1);
//                      kbd_blocked = 1;
//                      nRmt=1;
                        nCount=0;
                        return 1;
                    } else {
                        if(nTxzoom>0 && conf.remote_zoom_enable) {
                            nCount=0;
                            nSW=114;
                            return 1;
                        }
                        nSW=124;
                        nWt=2;
                        shutter_int=0;
//                      debug_led(0);
                        kbd_key_press(KEY_SHOOT_FULL);
                        set_key_press(1);
//                      kbd_blocked = 1;
//                      nRmt=1;
                        nCount=0;
                        return 1;
                    }
                }
                if(nSW==124) {
//                  debug_led(0);
                    if(drmode==1 && shutter_int==0) {
                        return 1;
                    }
                    nSW=125;
                    nWt=2;
                    kbd_key_release(KEY_SHOOT_FULL);
                    soft_half_press = 0;
                    set_key_press(1);
//                  kbd_blocked = 1;
//                  nRmt=1;
                    return 1;
                }
                if(!get_usb_power(1) && nSW==125) {
                    set_key_press(0);
//                  kbd_blocked = 0;
//                  key_pressed = 0;
                    nWt=50;
                    nSW=0;
//                  nRmt=0;
                    nCa=0;
                    //postsynch();
                    return 1;
                }
            }
// ------ add by Masuji SUTO (end)   --------------
        } // ricoh_ca1_mode
#endif // ifndef SYNCHABLE_REMOTE_NOT_ENABLED
/*------------------- Alex scriptless remote additions start --------------------*/
        if (conf.remote_enable && !conf.ricoh_ca1_mode && key_pressed != 2 && get_usb_power(1)) {
            remoteShooting = 1;
            kbd_blocked = 1;
            kbd_key_release_all();
            remoteClickTimer = REMOTE_MAX_CLICK_LENGTH;
            if (shooting_get_focus_mode()) {
                remoteFullShutter = 1;
                kbd_key_press(KEY_SHOOT_FULL);
            } else {
                remoteHalfShutter = 1;
                kbd_key_press(KEY_SHOOT_HALF);
            }
            return 1;
        }
/*-------------------- Alex scriptless remote additions end ---------------------*/
#ifdef CAM_USE_ZOOM_FOR_MF
        if (conf.use_zoom_mf && kbd_use_zoom_as_mf()) {
            return 1;
        }
#endif // ifdef CAM_USE_ZOOM_FOR_MF
        if ((conf.fast_ev || conf.fast_movie_control || conf.fast_movie_quality_control)
                && kbd_use_up_down_left_right_as_fast_switch()) {
            return 1;
        }
        other_kbd_process(); // processed other keys in not <alt> mode
    }

    return kbd_blocked;
}