📄 normal.c
字号:
/*****************************************************************************
* Copyright (C) 2001 Acer Labs, Inc. All Rights Reserved.
* File: ui_normal.c
* Contents: normal process
* History:
* Date By Reason Ver.
* ============ ========= ========== ======
* 2000.4.3 Tom Gao Create it 0.9
* 2000.4.11 Tom Gao modify it 0.91
* 2000.5.9 Tom Gao modify it 0.92(new structure)
* 2003.4.8 Benjamin add dview 0.93
* 2003.4.10 Cliff Wang modify it
* 2003.4.10 Maggie Liu modify it
* 2003.4.17 Bond Ye,Haiyuan & Lily Ma delete PEDoRectify and add comment of Basal module
* 2003.5.6 Lily Ma reclassify the message type;split playback manager
* module;define 3 level playback mode parameters for
* 2003.5.14 Benjamin modify it add repeat random shuffle for picture cd
* 2003.5.29 Benjamin modify for picture cd repeat bug
* 2003.7.5 Lily Ma modify it use new GUI lib
*****************************************************************************/
#include <comsub.h>
#include <pe.h>
#include <panel.h>
#include <osd.h>
#include <nv.h>
#include <ui.h>
#include <ui_sub.h>
#include <panel.h>
#include "../../cstm/fend/frntp.h"
#include "nmnvlib.h"
#include "normal.h"
#include "nm_func.h"
#include <stdio.h>
#include <stdlib.h>
#include <audio.h>
#include <fileopen.h>
#include <rscstruc.h>
#include <resource.h>
#include <platform.h>
#include <filesys.h>
#include <setupfunc.h>
//20021115 Tom Yang for perhibit KEY_SETUP start
#include <atapi.h>
#include <vobu.h>
#include "uiosd.h"
#include "NMOSD.h"
#include "BookMark.c"
#include "Zoom.c"
#include "ParentLevel.c"
#include "TitleSearch.c"
#include <setupdefine.h>
#include "../FileopenMenu/MediaPlayerOutlook.h"
extern SETUP_CFG Setup_Config;
extern BOOL bVCD20JumpFlag;
extern WORD MaxKaraTTN;
extern BOOL bIsKaraDVD;
#if 0 //maggie
extern BOOL bNeedPLChk;//030814-01lily:for lastplay pl check
#endif
extern BOOL bIsFromStop;
extern int g_iServoCloseTrayTime;
#define VOBU_STL_OK_EVENT 0x00010000
#define VOBU_STL_SKIP_EVENT 0x00020000
#define MIC_3DSUR_MUTEX 1 //MIC and 3D surround can't exist the same time
extern BOOL flag_UserSetKey_standby; //30216-01jf
extern BOOL bPowerOff; //Added by brook,set this variable to TRUE when enter power off
extern void AutoOpenTray();
extern WORD g_VCDProCurNum;
#if 0//maggie
//below used in zoom's screen fit.
//0 mean normal 1 to 9 mean large -1 to -9 mean small.
int bZoomVRatio;
int bZoomHRatio;
//------------------
#endif
BYTE JpgNextState = 0;
BYTE JpgResumeState = 0;
WORD modeGuiType;
#if 0//maggie
BOOL isKaraoke,haveMelody;
BYTE isMultiVoise;
#endif
BOOL IsWaitPrev=TRUE;
BOOL bFPLastplay=FALSE;
//extern BOOL bLogoState;//301010-01mi
BYTE bShowNPswitch = 0;
//--> Gordon. used to Draw Slide Show OSD, which is used among Normal.c, MediaPlayFunc.c
BOOL bDrawSlideShowHelp=TRUE;
#if ( _UI_NORMAL_MODE==UI_Noraml_Enable )
static const WORD FastRatio[5] =
{
MSG_FAST, MSG_FAST + 1, MSG_FAST + 2, MSG_FAST + 3, MSG_FAST + 4
};
static const WORD SlowRatio[] =
{
MSG_SLOW, MSG_SLOW + 1, MSG_SLOW + 2, MSG_SLOW + 3, MSG_SLOW + 4,
MSG_REV_SLOW, MSG_REV_SLOW + 1, MSG_REV_SLOW + 2, MSG_REV_SLOW + 3, MSG_REV_SLOW + 4
};
static const WORD RevRatio[5] =
{
MSG_REV, MSG_REV + 1, MSG_REV + 2, MSG_REV + 3, MSG_REV + 4
};
/*============= define VFD key mapping function ============*/
/*============= key value is define in ui.h ============*/
#if(_SDRAM_MODE==_SDRAM_4M16x1_MODE_)
static const T_VOID_FUNC_PTR VKeyProc[] =
{
/*0*/ CaseV_KEY_POWER , CaseV_KEY_OPEN , CaseV_KEY_PLAY , CaseV_KEY_STOP , CaseV_KEY_STEP,
/*5*/ CaseV_KEY_LAST_PLAY , CaseV_KEY_PREVIOUS , CaseV_KEY_NEXT , CaseV_KEY_FAST , CaseV_KEY_REV,
/*10*/ CaseV_KEY_UP , CaseV_KEY_DOWN , CaseV_KEY_LEFT , CaseV_KEY_RIGHT , CaseV_KEY_MENU,
/*15*/ CaseV_KEY_TITLE , CaseV_KEY_ANGLE , ERRUIMsg , ERRUIMsg , /*CaseV_KEY_FILEOPEN*/ERRUIMsg,
/*20*/ /*CaseV_KEY_CONSOLE*/ERRUIMsg , CaseV_KEY_ENTER , ERRUIMsg , CaseV_KEY_SETUP , CaseV_KEY_RESUME,
/*25*/ CaseV_KEY_RANDOM , CaseV_KEY_ZOOM , /*CaseV_KEY_SEARCH*/ERRUIMsg , CaseV_KEY_SLOW , CaseV_KEY_SUBTITLE,
/*30*/ CaseV_KEY_SUBP_ON_OFF, CaseV_KEY_VOICE , CaseV_KEY_REPEAT , CaseV_KEY_AB_REPEAT, CaseV_KEY_KARAOKE_ONOFF,
/*35*/ ERRUIMsg, ERRUIMsg , ERRUIMsg , CaseV_KEY_AUDIO , ERRUIMsg/*CaseV_KEY_VOCAL*/,
/*40*/ CaseV_KEY_CLEAR , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM,
/*45*/ CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM,
/*50*/ CaseV_KEY_NUM , CaseV_KEY_10_PLUS , CaseV_KEY_PROGRAM , CaseV_KEY_EQ , ERRUIMsg/*CaseV_KEY_MICVAL*/,
/*55*/ ERRUIMsg/*CaseV_KEY_MICVAL*/ , CaseV_KEY_MUTE/*ERRUIMsg*/ , CaseV_KEY_VOICE , CaseV_KEY_KARAOKE_ONOFF, ERRUIMsg/*CaseV_KEY_ECHO*/,
/*60*/ ERRUIMsg/*CaseV_KEY_ECHO*/ , /*CaseV_KEY_ASSIST*/ERRUIMsg , CaseV_KEY_VOCAL , CaseV_KEY_BCS , /*CaseV_KEY_PBC_ON */ERRUIMsg,
/*65*/ /*CaseV_KEY_PBC_OFF*/ERRUIMsg , ERRUIMsg/*CaseV_KEY_PBC_ONOFF*/, ERRUIMsg , /* CaseV_KEY_GAME */ERRUIMsg , CaseV_KEY_VENDER_SETUP/*ERRUIMsg*/,
/*70*/ /*CaseV_KEY_SHOWTIME*/ERRUIMsg , CaseV_KEY_VOLUM , /*CaseV_KEY_CONFIRM*/ERRUIMsg , CaseV_KEY_PAUSE , CaseV_KEY_BOOKMARK,
/*75*/ CaseV_KEY_CLOSE , CaseV_KEY_DEBUG_M3323REG, /*CaseV_KEY_PREV_PICTURE*/ERRUIMsg, /* CaseV_KEY_NEXT_PICTURE*/ERRUIMsg , CaseV_KEY_RETURN,
/*80*/ CaseV_KEY_TV_SYS , ERRUIMsg/*CaseV_KEY_SETUPDEFAULT*/, /*CaseV_KEY_DOLBY_SETUP*/ERRUIMsg, /*CaseV_KEY_MACROVISION*/ERRUIMsg , ERRUIMsg/*CaseV_KEY_AUDIOEFFECT*/,
/*85*/ CaseV_KEY_DINTIAN_STOP, CaseV_KEY_SCANMODE, CaseV_KEY_VIDEO , /*CaseV_KEY_TTSEARCH*/ERRUIMsg, CaseV_KEY_TMSEARCH,
/*90*/ /*CaseV_KEY_DISPLAY*/ERRUIMsg, /*CaseV_KEY_FILEFILTER*/ERRUIMsg, /*CaseV_KEY_PIPN*/ERRUIMsg, /*CaseV_KEY_ADJUSTVFD*/ERRUIMsg, ERRUIMsg, /* for vfdbright */
//<<30226Wo for RevSlow&RevStep
/*95*/ CaseV_KEY_SLOWBACK, ERRUIMsg,/*CaseV_KEY_LGMP1*/ERRUIMsg,/*CaseV_KEY_LGMP2*/ERRUIMsg,CaseV_KEY_SURROUND_ON_OFF/*ERRUIMsg*/,
/*100*/NoDispUIMsg,/*CaseV_KEY_EEPOPTION*/ERRUIMsg,CaseV_KEY_SHOWREGION0,CaseV_KEY_SHOWREGION,ERRUIMsg,
/*105*/ERRUIMsg,ERRUIMsg,CaseV_KEY_PROGRESSIVEOFF,CaseV_KEY_NPswitch,ERRUIMsg,
//>>
//cliff 30906-02cf for repeat subtitle
/*110*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*115*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*120*//*CaseV_KEY_PAGEUP*/ERRUIMsg,/*CaseV_KEY_PAGEDOWN*/ERRUIMsg,CaseV_Key_RPTSUBTITLE,CaseV_KEY_FIRST_LASTPLAY,ERRUIMsg,
/*125*/ERRUIMsg,ERRUIMsg,/*CaseV_KEY_WHEEL*/ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*130*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*135*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*140*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg
}
;
#else
static const T_VOID_FUNC_PTR VKeyProc[] =
{
/*0*/ CaseV_KEY_POWER , CaseV_KEY_OPEN , CaseV_KEY_PLAY , CaseV_KEY_STOP , CaseV_KEY_STEP,
/*5*/ CaseV_KEY_LAST_PLAY , CaseV_KEY_PREVIOUS , CaseV_KEY_NEXT , CaseV_KEY_FAST , CaseV_KEY_REV,
/*10*/ CaseV_KEY_UP , CaseV_KEY_DOWN, CaseV_KEY_LEFT, CaseV_KEY_RIGHT , CaseV_KEY_MENU,
/*15*/ CaseV_KEY_TITLE , CaseV_KEY_ANGLE , ERRUIMsg , ERRUIMsg , CaseV_KEY_FILEOPEN,
/*20*/ CaseV_KEY_CONSOLE , CaseV_KEY_ENTER , ERRUIMsg , CaseV_KEY_SETUP, ERRUIMsg/*CaseV_KEY_RESUME*/,
/*25*/ ERRUIMsg/*CaseV_KEY_RANDOM*/ , CaseV_KEY_ZOOM , ERRUIMsg/*CaseV_KEY_SEARCH*/ , CaseV_KEY_SLOW , CaseV_KEY_SUBTITLE,
/*30*/ERRUIMsg/*CaseV_KEY_SUBP_ON_OFF*/, CaseV_KEY_VOICE , CaseV_KEY_REPEAT , CaseV_KEY_AB_REPEAT, ERRUIMsg/*CaseV_KEY_KARAOKE_ONOFF*/,
/*35*/ ERRUIMsg, ERRUIMsg , ERRUIMsg , ERRUIMsg/*CaseV_KEY_AUDIO*/ , ERRUIMsg/*CaseV_KEY_VOCAL*/,
/*40*/ CaseV_KEY_CLEAR , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM,
/*45*/ CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM , CaseV_KEY_NUM,
/*50*/ CaseV_KEY_NUM , ERRUIMsg/*CaseV_KEY_10_PLUS*/ , CaseV_KEY_PROGRAM , ERRUIMsg/*CaseV_KEY_EQ*/ , ERRUIMsg/*CaseV_KEY_MICVAL*/,
/*55*/ ERRUIMsg/*CaseV_KEY_MICVAL*/ , CaseV_KEY_MUTE , CaseV_KEY_VOICE , ERRUIMsg/*CaseV_KEY_KARAOKE_ONOFF*/, ERRUIMsg/*CaseV_KEY_ECHO*/,
/*60*/ ERRUIMsg/*CaseV_KEY_ECHO*/ , ERRUIMsg/*CaseV_KEY_ASSIST*/ , CaseV_KEY_VOCAL , CaseV_KEY_BCS , ERRUIMsg/*CaseV_KEY_PBC_ON */,
/*65*/ ERRUIMsg/*CaseV_KEY_PBC_OFF*/ , CaseV_KEY_PBC_ONOFF, ERRUIMsg , ERRUIMsg/*CaseV_KEY_GAME*/ , CaseV_KEY_VENDER_SETUP/*ERRUIMsg*/,
/*70*/ ERRUIMsg/*CaseV_KEY_SHOWTIME*/ , CaseV_KEY_VOCAL/*HQK 6 7*/ , ERRUIMsg/*CaseV_KEY_CONFIRM*/ , CaseV_KEY_PAUSE , CaseV_KEY_BOOKMARK,
/*75*/ CaseV_KEY_CLOSE , ERRUIMsg/*CaseV_KEY_DEBUG_M3323REG*/, /*CaseV_KEY_PREV_PICTURE*/ERRUIMsg, /* CaseV_KEY_NEXT_PICTURE*/ERRUIMsg , CaseV_KEY_RETURN,
/*80*/ ERRUIMsg/*CaseV_KEY_TV_SYS*/ , ERRUIMsg/* CaseV_KEY_SETUPDEFAULT*/, /*CaseV_KEY_DOLBY_SETUP*/ERRUIMsg, /*CaseV_KEY_MACROVISION*/ERRUIMsg , ERRUIMsg/*CaseV_KEY_AUDIOEFFECT*/,
/*85*/ CaseV_KEY_DINTIAN_STOP, ERRUIMsg/*CaseV_KEY_SCANMODE*/, ERRUIMsg/*CaseV_KEY_VIDEO*/ , ERRUIMsg/*CaseV_KEY_TTSEARCH*/, CaseV_KEY_TMSEARCH,
/*90*/ ERRUIMsg/*CaseV_KEY_DISPLAY*/, ERRUIMsg/*CaseV_KEY_FILEFILTER*/, /* CaseV_KEY_PIPN*/ERRUIMsg, ERRUIMsg/*CaseV_KEY_ADJUSTVFD*/, ERRUIMsg, /* for vfdbright */
//<<30226Wo for RevSlow&RevStep
/*95*/ CaseV_KEY_SLOWBACK, ERRUIMsg,/*CaseV_KEY_LGMP1*/ERRUIMsg,/*CaseV_KEY_LGMP2*/ERRUIMsg,CaseV_KEY_SURROUND_ON_OFF/*ERRUIMsg*/,
/*100*/NoDispUIMsg,/*CaseV_KEY_EEPOPTION*/ERRUIMsg,ERRUIMsg/*CaseV_KEY_SHOWREGION0*/,CaseV_KEY_SHOWREGION,ERRUIMsg,
/*105*/ERRUIMsg,ERRUIMsg,ERRUIMsg/*CaseV_KEY_PROGRESSIVEOFF*/,CaseV_KEY_NPswitch,ERRUIMsg,
//>>
//cliff 30906-02cf for repeat subtitle
/*110*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*115*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*120*//*CaseV_KEY_PAGEUP*/ERRUIMsg,/*CaseV_KEY_PAGEUP*/ERRUIMsg/*CaseV_KEY_PAGEDOWN*/,ERRUIMsg/*CaseV_Key_RPTSUBTITLE*/,CaseV_KEY_FIRST_LASTPLAY,ERRUIMsg/*CaseV_KEY_CCONOFF*/,
/*125*/ERRUIMsg,ERRUIMsg,ERRUIMsg/*CaseV_KEY_WHEEL*/,ERRUIMsg,ERRUIMsg,
/*130*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*135*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,
/*140*/ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg,ERRUIMsg
}
;
#endif
extern BYTE HLValidKeyProcessing;
extern WORD wCurrentPlayTrack;
extern BOOL g_fShowFileName; //adamadd 2002/11/12
#if 0//maggie
typedef BYTE t_Domain;
extern t_Domain CurrentDomain;
#endif
/* FOR playback manager fucntions use */
WORD wPlayNow = 0;
//30917 gamble for AC3
BOOL bNeedShowAC3=0;
//30917 gamble for AC3 end
//31212 jane for 3dsurround
BOOL isShow3DSur=FALSE;
//31212 jane for 3dsurround end
#if 0//maggie
//30919 gamble for parental level
BOOL bPLIsChanged;
//30919 gamble for parental level end
/* FOR record NV cmd Parent level value */
DWORD dwNVCmdPL;
#endif
DWORD bVFDCurrentTime;
BOOL BDiscPhyTypeKnown = FALSE;
#if 0//maggie
int ZoomPreSub = 0;
BYTE ZoomPreOnOff = 0;
#endif
#if 0//maggie
BYTE PLPassWdPos;
BYTE PLPassWdCnt;
BYTE PLPassWord[4];
#endif
//30929 gamble for lg dvd auto play spec
BOOL bIsAutoPlayMode=TRUE;
//30929 gamble for lg dvd auto play spec end
//<<031013 bond add for retoreing show scan mode osd.
WORD ScanRatio;
//>>
static void NV2UI_Chg2Norm(void);
static void NV2UI_Stop(void);
static void NV2UI_Chg2PBCOff(void);
static void NV2UI_ShowTitleNum(void);
static void NV2UI_ShowChapterNum(void);
static void DVD2UI_ChgDomain(void);
static void NV2UI_AudioTypeCHG(void);
static void DVD2UI_AngleCHK(void);
static void DVD2UI_HLTimer(void);
static void VCD2UI_DISC_ERR(void);
static void VCD2UI_NODATA(void);
static void VCD2UI_TimeOut(void);
static void DVD2UI_SubPicCHK(void);
static void DVD_ShowResume(void); // Angus add at 02/11/27
static void DVD_ShowBadDisc(void); // 30117-01An
#if 0//maggie
static void DVD_Clear_ZOOM(void); //30507-01jeff clear zoom when highlight come up
#endif
static void DVD2UI_MultiAngleChk(void);
static void NV2UI_SegEnd(void);
static void UI_NextPre(void);
void InitKara(BOOL NeedInitEcho);
void NumberPlayProc(void);
BOOL IsInsideAB(LPPLAYPOINT lpplaypoint);
/*======== Define function of NV send message to UI ============*/
/*============= Msg value is define in ui.h ,ex. C_NV_CMD_NORMAL ============*/
static const T_VOID_FUNC_PTR NV2UIChkFun[] =
{
NV2UI_Chg2Norm , NV2UI_Stop , NV2UI_ShowTitleNum , NV2UI_ShowChapterNum,
DVD2UI_ChgDomain , NV2UI_AudioTypeCHG , DVD2UI_AngleCHK , VCD2UI_DISC_ERR,
VCD2UI_NODATA , VCD2UI_TimeOut , NV2UI_Chg2PBCOff , DVD2UI_HLTimer,
VCD2UI_NODATA/*DVD2UI_SubPicCHK*/, DVD_ShowResume, DVD_ShowBadDisc, DVD_Clear_ZOOM,
DVD2UI_MultiAngleChk,NumberPlayProc
}
; // Angus add "DVD_ShowResume" at 02/11/27 //30507-01jeff clear zoom when highlight come up
#endif/*#ifdef _UI_NORMAL_E_*/
void VCD2UI_NODATA(void)
{
}
BOOL bDVDSetup_NoShowLogo = FALSE; //sean for M3351 setup show logo.
const UINT GUI_LANGUAGEID[21] =
{
RS_GUI_CHINESE, //0
RS_GUI_ENGLISH,
RS_GUI_FRENCH,
RS_GUI_RUSSIAN,
RS_GUI_JAPANESE,
RS_GUI_GERMAN, //5
RS_GUI_DANISH,
RS_GUI_DUTCH,
RS_GUI_ITALIAN,
RS_GUI_PORTUGUESE,
RS_GUI_SPANISH, //10
RS_GUI_SWEDISH,
RS_GUI_HUNGARIAN,
RS_GUI_KOREAN,
RS_GUI_OTHERS,
RS_GUI_POLISH, //15
RS_GUI_GREEK,
RS_GUI_FINNISH,
RS_GUI_ICELANDIC,
RS_GUI_NORWEGIAN,
RS_GUI_OTHERS, //20
};
/****************************************************************/
/* define tables used by playback manage module
/* 030516-01lily: abstract all actions about modify playback mode
/* parameters to one function module
/****************************************************************/
#define C_NONE_END 0x12
const BOOL PBModePermit_Normal[3][5] =
{ // none one all ab disc //record current available playback mode combinitions
/*normal*/ {TRUE, TRUE, TRUE, TRUE, TRUE},
/*random*/ {FALSE, FALSE, FALSE, FALSE, FALSE},
/*Shuffle*/ {TRUE, TRUE, TRUE, FALSE, FALSE}
};
const BOOL PBModePermit_Program[3][5] =
{
{TRUE, TRUE,TRUE, FALSE, FALSE},
{FALSE, FALSE, FALSE, FALSE, FALSE},
{FALSE, FALSE, FALSE, FALSE, FALSE}
};
const BYTE SegEndType_DVD_Normal[3][5] =
{ //record segment end type according to each playback mode combinition
{C_NORMAL_END, C_CHAPTER_END, C_TITLE_END, C_POINT_END, C_DISC_END },
{C_CHAPTER_END, C_NONE_END, C_CHAPTER_END, C_NONE_END, C_CHAPTER_END},
{C_CHAPTER_END, C_CHAPTER_END, C_CHAPTER_END, C_NONE_END, C_CHAPTER_END}
};
const BYTE SegEndType_NODVD_Normal[3][5] =
{
{C_NORMAL_END, C_TITLE_END, C_DISC_END, C_POINT_END, C_DISC_END},
{C_TITLE_END, C_NONE_END, C_TITLE_END, C_NONE_END, C_TITLE_END},
{C_TITLE_END, C_TITLE_END, C_TITLE_END, C_NONE_END, C_TITLE_END}
};
BOOL PlaybackModeChangeSuccess(BYTE list, BYTE repeatrange, BYTE method);
BOOL ChkPBModePermit(BYTE list, BYTE repeatrange, BYTE method);
/*----------------------------------------------------------------------------
* Function_Name: ChkPBModePermit
* Arguments : BYTE list:IN,indicate the playback list now wanna change to;
* BYTE repeatrange:IN,indicate the playback repeat range now wanna change to;
* BYTE method:IN,indicate the playback method now wanna change to.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -