📄 key_receive.c
字号:
/****************************************************************************** * Filename : Key_receive.c * Start : 2002. 11. 6. * By : Taejin Kwon * Contact : tj1kwon@samsung.co.kr * Description : Process key input from front micom ****************************************************************************** *//****************************************************** * INCLUDES *****************************************************/#include "Basic_typedefs.h"#include "CUSTOM/Custom_option.h"#include "OS/OS_abstract.h"#include "API/SH_types.h"#include "API/SH_api.h"#include "COMMON/Common.h"#include "DRIVER/FS/Fs_api.h"#include "MAIN/Global_state.h"#include "MAIN/Appl_types.h"#include "CUSTOM/Osd_types.h"#include "CUSTOM/Osd_if.h"#include "CUSTOM/Key_handler_setup.h"#include "CUSTOM/Key_receive.h"#include "CUSTOM/Key_defs.h"#include "MAIN/DVD/Dvd_predef.h"#include "MAIN/DVD/Dvd_common.h"#include "MAIN/SVCD/Svcd_types.h"#include "MAIN/SVCD/Svcd_ext.h"#include "MAIN/SVCD/Svcd_common.h"#include "MAIN/MMP/MMN/Mmn_core.h"#include "MAIN/MMP/Mmp_predef.h"#include "MAIN/Uop_msg.h"#include "MAIN/MMP/Mmp_common.h"#include "MAIN/MMP/Mmp_global.h"#include "MAIN/MMP/Mmp_util.h"#include "CUSTOM/Key_2_uop.h"#if _COP_CAPTURE_LOGO_USED#include "API/SH_BM_api.h"#include "API/LAPI/IFO/IFO.h"#include "API/LAPI/IFO/Capture_Logo.h"#endif/****************************************************** * Global variables / functions *****************************************************/#if _APP_CAP_FUNC_ZOOM_CLEAR_BY_SKIPBOOL gZoom_clear = FALSE;#endif /*_APP_CAP_FUNC_ZOOM_CLEAR_BY_SKIP*/BYTE1 gNew_disc_id; /****************************************************** * Extern variables *****************************************************/extern SysQueue_t gQ_key;extern SysTimer_t gTimer_saver;extern volatile BOOL gScreen_saver_on;extern volatile BOOL gState_timer_on;#if _APP_CAP_FUNC_TRAY_AUTO_CLOSEextern SysTimer_t gTimer_auto_close;extern volatile BOOL gAuto_close_timer_on;extern volatile BOOL gbMain_loop;extern volatile BOOL gTray_auto_close;extern BOOL gclose_at_saver;#endifextern volatile UCHAR main_mode;extern volatile BOOL gLoading_on;#if _APP_CAP_NAV_FIRM_CDextern SysQueue_t *gQ_firm;#endif /* _SUPPORT_CD_UPGRADE */extern VOID OsdTimerSet( SysTimeTick_t time, SysEnable_t set );extern VOID SH_writeEepromFromBuffer( VOID );extern VOID CloseTrayAndPlayDisc(VOID);extern VOID StateTimerSet( SysEnable_t set );extern BOOL IsMenuDomainKeyForbidden( UCHAR data ); extern BOOL IsXvcdPBCMenuKeyForbidden( UCHAR data );extern VOID MmpShowNoticeString(MmpNoticeType_et notice_type, char *string);extern VOID OSD_ChangeSetupSelD2(MenuDom1State_et d1, MenuDom2State_et old_t, MenuDom2State_et new_t, SysWait_t wait );extern INLINE IconState_et GetDisplayIconState( VOID );extern INLINE OSD_MainType_et GetDisplayMainState( VOID );extern INLINE VolOsdType_et GetDisplayVolOsdTypeState( VOID );extern INLINE OSD_MainType_et GetDisplayMainState( VOID );extern INLINE IconState_et GetDisplayIconState( VOID );extern INLINE void SetDisplayVolOsdTypeState( VolOsdType_et type );extern INLINE VOID SetMenuState( OSD_MenuCtrl_st *menu );/****************************************************** * functions *****************************************************/#if _APP_CAP_FUNC_RANDOM_PLAY/****************************************************************************** * Function name : GuiSetMode * Arguments : * IN VOID * * OUT * I/O * Return : VOID * * By : Kim Do Yeon * Description : Set the mode * Revision : 1.0 ****************************************************************************** */ VOID GuiSetMode(VOID){ OSD_State_st *osd_state; osd_state = OSD_GetState(); OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT); switch(osd_state->ecPlaymode_pos) { case 0: UiPlayModeChange(PARAM_PB_NORMAL); OSD_BannerOff(); break; case 1: UiPlayModeChange(PARAM_PB_RANDOM); OSD_BannerOff(); break; case 2: GuiProgramEnter(); break; default: break; } } #endif /* _APP_CAP_FUNC_RANDOM_PLAY */ /****************************************************************************** * Function name : GuiSetAudioCh() * Arguments : * IN UCHAR data * * OUT * I/O * Return : VOID * * By : Kim Do Yeon * Description : Set the audio ch * Revision : 1.0 ****************************************************************************** */ VOID GuiSetAudioCh(VOID){ S5H_Lrstereo_et lrstereo_state; OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT); OSD_BannerOff(); GetLrstereoState(&lrstereo_state); SetLrstereoState(lrstereo_state); if (GetDiscState() == CD_DA #if _APP_CAP_FUNC_MIXED_VCD_CDDA && GetMixedCdState() == FALSE#endif /* _APP_CAP_FUNC_MIXED_VCD_CDDA */ ) { // Qian liping 060427 OsdTimerSet(1, TIMER_DISABLE ); OSD_SetMainDisplay(DISPLAY_INFO, SYS_NO_WAIT); } }#if _APP_CAP_FUNC_COLDSTART/******************************************************************************* Function name : GuiColdStart* Arguments : * IN VOID* * OUT * I/O * Return : VOID * * By : Kim Do Yeon* Description : Handle the cold start hot key* Revision : 1.0 *******************************************************************************/ VOID GuiColdStart(VOID){ OSD_State_st *osd_state; osd_state = OSD_GetState(); if(osd_state->etCur_dsp != DISPLAY_COLDSTART) { OSD_SetMainDisplay(DISPLAY_COLDSTART, SYS_NO_WAIT); } }#endif /* _APP_CAP_FUNC_COLDSTART *//******************************************************************************* Function name : GuiHandleCdUpgrade* Arguments : * IN UCHAR data, UCHAR param* * OUT * I/O * Return : VOID * * By : Kim Do Yeon* Description : Handle the CD Upgrade OSD* Revision : 1.0 *******************************************************************************/ VOID GuiHandleCdUpgrade(UCHAR data, UCHAR param){ Key_t tx; tx.key_data = data; tx.key_mode = 0; tx.param = param; SysSendMsg(gQ_firm, &tx, sizeof(Key_t), SYS_NO_WAIT, 0);} /******************************************************************************* Function name : KeyInputCheckTimer* Arguments : * IN UCHAR data* * OUT * I/O * Return : BOOL * * By : Yang Lu* Description : * Revision : 1.0 *******************************************************************************/ BOOL KeyInputCheckTimer(UCHAR data){ SetMainState_t main; if( gState_timer_on == TRUE ) { /* restart state timer */ main = GetMainState(); SetMainState( main ); return FALSE; } #if _APP_CAP_FUNC_TRAY_AUTO_CLOSE if( gScreen_saver_on && (data != RC_KEY_OPENCLOSE) && (data != RC_KEY_POWER) && gTray_auto_close == TRUE ) { gbMain_loop = FALSE; EndScreenSaver(RC_KEY_AUTOCLOSE); CloseTrayAndPlayDisc(); StateTimerSet( TIMER_DISABLE ); OSD_LogoOn(LOGO_IDLE, TRUE); OSD_SetIconDisplay(ICON_LOADING, NULL, SYS_NO_WAIT); gTray_auto_close = FALSE; return TRUE; }#endif/*_APP_CAP_FUNC_TRAY_AUTO_CLOSE*/ if( (gScreen_saver_on == TRUE) && (data != RC_KEY_POWER)#if _APP_CAP_FUNC_TRAY_AUTO_CLOSE && (gclose_at_saver != TRUE)#endif ) { main = GetMainState(); SetMainState(main); if( EndScreenSaver(data) ) return FALSE;#if _APP_CAP_FUNC_MMP_FIXED_SUB_SCHEME if( ( GetDisplayMainState() == DISPLAY_EXT_SUBTITLE )) return; #endif#if _APP_CAP_FUNC_KEYHANDLE_AFTER_SAVER if( data != RC_KEY_PLAY#if (_APP_CAP_NAV_USB_DISC||_APP_CAP_NAV_FX_DATA) // Qian liping 060906: bug fix 642 &&!( GetDisplayMainState()== DISPLAY_FAT_DEVICE && data == RC_KEY_ENTER )#endif ) OSD_SetIconDisplay(ICON_KEEP,NULL,SYS_NO_WAIT); SysSleep(1000,NULL); return FALSE;#else/*_APP_CAP_FUNC_KEYHANDLE_AFTER_SAVER*/ OSD_SetIconDisplay(ICON_KEEP,NULL,SYS_NO_WAIT); return TRUE;#endif/*_APP_CAP_FUNC_KEYHANDLE_AFTER_SAVER*/ } return FALSE;}/******************************************************************************* Function name : KeyInputCheckHLSpecialKey* Arguments : * IN UCHAR data, UCHAR param* * OUT * I/O * Return : BOOL * * By : Yang Lu* Description : Handle Hot keys * Revision : 1.0 *******************************************************************************/BOOL KeyInputCheckHLSpecialKey(UCHAR data, UCHAR param){ SH_FEState_et state; state = SH_FE_GetState(); #if 0//_APP_CAP_FUNC_COLDSTART if( SetupInfoReadColdStart()==TRUE ) return FALSE;#endif /* _SUPPORT_COLD_START */ if (data == RC_KEY_POWER) { GuiPower(param); return TRUE; } if( data == RC_KEY_OPENCLOSE ) { GuiOpenClose( param); return TRUE; } if( data == RC_KEY_FAT_DEVICE_SELECT) { #if (_APP_CAP_NAV_USB_DISC||_APP_CAP_NAV_FX_DATA) if(GetDisplayMainState() == DISPLAY_FAT_DEVICE) return FALSE; if(GetDisplayMainState() == DISPLAY_DIGEST_MENU) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_WAIT); return TRUE; } if( GetMainState() == MAIN_LEADIN || (GetMainState() == MAIN_OPEN && main_mode != 0x0b) || SH_FE_GetState() == SH_FE_STATE_CLOSING) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); } else if(GetDiscState() == DUMMY_DISC || GetDiscState() == NO_USB|| GetDiscState() == NO_FX \ ||GetDiscState() == NO_DISC) { OSD_SetMainDisplay(DISPLAY_FAT_DEVICE, SYS_WAIT); } else { // Qian liping 060721: bug fix. if( S5H_GetAppType()==APP_MMN ) { MmpClearRepeatAB(); if(GetMmpFileType() == MMP_IMAGE_FILE) //wanglin 20061017 UiCmdGeneral(UOP_MMP_CLEAR_PREVIEW); } OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT); UiBigOsd(TRUE, BIG_OSD_FAT_SELECT); } return TRUE;#else OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_WAIT); return TRUE;#endif } #if _APP_CAP_NAV_USB_DISC if(data == RC_KEY_USB_ATTACH) { GuiHandleUSBAttach(param); return TRUE; } if(data == RC_KEY_USB_REMOVE) { GuiHandleUSBRemove(param); return TRUE; }#endif#if _APP_CAP_NAV_FX_DATA if(data == RC_KEY_MCARD_INSERT) { GuiHandleMcardInsert(param); return TRUE; } if(data == RC_KEY_MCARD_REMOVE) { GuiHandleMcardRemove(param); return TRUE; }#endif#if _APP_CAP_KEY_USE_NTPAL_CHANGE if( data == RC_KEY_NTSC_PAL ) { GuiTvChange(0); return TRUE; }#endif /* _SUPPORT_NTPAL_CHANGE */ #if _APP_CAP_KEY_USE_VIDEO_OUT_CHANGE if ( data == RC_KEY_VIDEOMODE ) { GuiVideoMode(); return TRUE; }#endif /* (_SUPPORT_VIDEO_MODE_CHANGE) */#if _APP_CAP_KEY_USE_VIDEO_SCAN_CHANGE if ( data == RC_KEY_VIDEOSCAN ) { GuiVideoScan(); return TRUE; }#endif /* _SUPPORT_VIDEO_SCAN_CHANGE */#if _APP_CAP_FUNC_VOLUM_CONTOL if ( (data == RC_KEY_VOLUME_ADD) || (data == RC_KEY_VOLUME_REDUCE) || (data == RC_KEY_KEY_ADD) || (data == RC_KEY_KEY_REDUCE) || (data == RC_KEY_KEY_DEFAULT) ) { if (GetDisplayMainState() == DISPLAY_BOOKMARK) SysSleep(100, NULL);#if _APP_CAP_AUD_FUNCTION_KEY GuiFuncCtrl(data);#else GuiVolCtrl(data);#endif return TRUE; }#endif /* _SUPPORT_VOLUME_CONTROL_APPL */#if _APP_CAP_FUNC_MASTER_MUTE if(data == RC_KEY_MUTE ) { GuiMute(); return TRUE; }#endif /* _SUPPORT_MASTER_MUTE_APPL */ if(GetDisplayIconState() == ICON_LOADING || GetMainState() == MAIN_LEADIN || GetMainState() == MAIN_CLOSE )// Qian liping 060622 : bug fix 486, not support in MAIN_CLOSE state. return TRUE;#if _APP_CAP_AUD_FUNCTION_KEY if(data == RC_KEY_FUNC) { GuiFuncKey(data); return TRUE; }#endif /* _SUPPORT_FUNC_KEY */ if ((state == SH_FE_STATE_OPEN) ||(state == SH_FE_STATE_OPENING) ||(state == SH_FE_STATE_OPENED) ) { if (data == RC_KEY_PLAY || data == RC_KEY_SETUP || GetDisplayMainState() == DISPLAY_SETUP#if _APP_CAP_OSD_COPYRIGHT_WIN ||data == RC_KEY_DISPLAY#endif #if _APP_CAP_FUNC_COLDSTART || GetDisplayMainState() == DISPLAY_COLDSTART#endif /* _SUPPORT_COLD_START */ || GetDisplayMainState() == DISPLAY_FAT_DEVICE#if _COP_SYS_REGION_CODE ||IS_NUM_KEY(data) || data ==RC_KEY_DISPLAY || data ==RC_KEY_ENTER || data ==RC_KEY_RETURN#endif /* _COP_SYS_REGION_CODE */ )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -