⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csharedata.cpp

📁 日本的开源编辑器源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		m_pShareData->m_Common.m_bBackUpFolder = FALSE;			/* 指定フォルダにバックアップを作成する */
		m_pShareData->m_Common.m_szBackUpFolder[0] = '\0';		/* バックアップを作成するフォルダ */
		m_pShareData->m_Common.m_nBackUpType = 2;				/* バックアップファイル名のタイプ 1=(.bak) 2=*_日付.* */
		m_pShareData->m_Common.m_nBackUpType_Opt1 = BKUP_YEAR | BKUP_MONTH | BKUP_DAY;
																/* バックアップファイル名:日付 */
		m_pShareData->m_Common.m_nBackUpType_Opt2 = ('b' << 16 ) + 10;
																/* バックアップファイル名:連番の数と先頭文字 */
		m_pShareData->m_Common.m_nBackUpType_Opt3 = 5;			/* バックアップファイル名:Option3 */
		m_pShareData->m_Common.m_nBackUpType_Opt4 = 0;			/* バックアップファイル名:Option4 */
		m_pShareData->m_Common.m_nBackUpType_Opt5 = 0;			/* バックアップファイル名:Option5 */
		m_pShareData->m_Common.m_nBackUpType_Opt6 = 0;			/* バックアップファイル名:Option6 */
		m_pShareData->m_Common.m_bBackUpDustBox = FALSE;	/* バックアップファイルをごみ箱に放り込む */	//@@@ 2001.12.11 add MIK

		m_pShareData->m_Common.m_nFileShareMode = OF_SHARE_DENY_WRITE;/* ファイルの排他制御モード */

		m_pShareData->m_Common.m_nCaretType = 0;				/* カーソルのタイプ 0=win 1=dos */
		m_pShareData->m_Common.m_bIsINSMode = TRUE;				/* 挿入/上書きモード */
		m_pShareData->m_Common.m_bIsFreeCursorMode = FALSE;		/* フリーカーソルモードか */	//Oct. 29, 2000 JEPRO 「なし」に変更

		m_pShareData->m_Common.m_bStopsBothEndsWhenSearchWord = FALSE;	/* 単語単位で移動するときに、単語の両端で止まるか */
		m_pShareData->m_Common.m_bStopsBothEndsWhenSearchParagraph = FALSE;	/* 単語単位で移動するときに、単語の両端で止まるか */

		//	Oct. 27, 2000 genta
		m_pShareData->m_Common.m_bRestoreCurPosition = TRUE;	//	カーソル位置復元

		m_pShareData->m_Common.m_bRestoreBookmarks = TRUE;		// 2002.01.16 hor ブックマーク復元

		m_pShareData->m_Common.m_bRegularExp = 0;				/* 1==正規表現 */
		m_pShareData->m_Common.m_bLoHiCase = 0;					/* 1==英大文字小文字の区別 */
		m_pShareData->m_Common.m_bWordOnly = 0;					/* 1==単語のみ検索 */
		m_pShareData->m_Common.m_bSelectedArea = FALSE;			/* 選択範囲内置換 */
		m_pShareData->m_Common.m_szExtHelp[0] = '\0';			/* 外部ヘルプ1 */
		m_pShareData->m_Common.m_szExtHtmlHelp[0] = '\0';		/* 外部HTMLヘルプ */
		
		m_pShareData->m_Common.m_szMigemoDll[0] = '\0';			/* migemo dll */
		m_pShareData->m_Common.m_szMigemoDict[0] = '\0';		/* migemo dict */

		m_pShareData->m_Common.m_bNOTIFYNOTFOUND = TRUE;		/* 検索/置換  見つからないときメッセージを表示 */

		m_pShareData->m_Common.m_bExitConfirm = FALSE;			/* 終了時の確認をする */
		m_pShareData->m_Common.m_nRepeatedScrollLineNum = 3;	/* キーリピート時のスクロール行数 */
		m_pShareData->m_Common.m_nRepeatedScroll_Smooth = FALSE;/* キーリピート時のスクロールを滑らかにするか */

		m_pShareData->m_Common.m_bAddCRLFWhenCopy = FALSE;		/* 折り返し行に改行を付けてコピー */
		m_pShareData->m_Common.m_bGrepSubFolder = TRUE;			/* Grep: サブフォルダも検索 */
		m_pShareData->m_Common.m_bGrepOutputLine = TRUE;		/* Grep: 行を出力するか該当部分だけ出力するか */
		m_pShareData->m_Common.m_nGrepOutputStyle = 1;			/* Grep: 出力形式 */
		m_pShareData->m_Common.m_bGrepDefaultFolder=FALSE;		/* Grep: フォルダの初期値をカレントフォルダにする */
		m_pShareData->m_Common.m_nGrepCharSet = CODE_AUTODETECT;/* Grep: 文字コードセット */
		m_pShareData->m_Common.m_bGrepRealTimeView = FALSE;				/* 2003.06.28 Moca Grep結果のリアルタイム表示 */
		m_pShareData->m_Common.m_bGTJW_RETURN = TRUE;			/* エンターキーでタグジャンプ */
		m_pShareData->m_Common.m_bGTJW_LDBLCLK = TRUE;			/* ダブルクリックでタグジャンプ */

//キーワード:ツールバー順序
		//	Jan. 30, 2005 genta 関数として独立
		InitToolButtons( m_pShareData );

		m_pShareData->m_Common.m_bDispTOOLBAR = TRUE;			/* 次回ウィンドウを開いたときツールバーを表示する */
		m_pShareData->m_Common.m_bDispSTATUSBAR = TRUE;			/* 次回ウィンドウを開いたときステータスバーを表示する */
		m_pShareData->m_Common.m_bDispFUNCKEYWND = FALSE;		/* 次回ウィンドウを開いたときファンクションキーを表示する */
		m_pShareData->m_Common.m_nFUNCKEYWND_Place = 1;			/* ファンクションキー表示位置/0:上 1:下 */
		m_pShareData->m_Common.m_nFUNCKEYWND_GroupNum = 4;			// 2002/11/04 Moca ファンクションキーのグループボタン数

		m_pShareData->m_Common.m_bDispTabWnd = FALSE;			//タブウインドウ表示	//@@@ 2003.05.31 MIK
		m_pShareData->m_Common.m_bDispTabWndMultiWin = FALSE;	//タブウインドウ表示	//@@@ 2003.05.31 MIK
		strcpy( m_pShareData->m_Common.m_szTabWndCaption,
			"${w?【Grep】$h$:【アウトプット】$:$f$}${U?(更新)$}${R?(只读)$:(不可覆盖)$}${M?【宏记录中】$}" );	//@@@ 2003.06.13 MIK

		m_pShareData->m_Common.m_bSplitterWndHScroll = TRUE;	// 2001/06/20 asa-o 分割ウィンドウの水平スクロールの同期をとる
		m_pShareData->m_Common.m_bSplitterWndVScroll = TRUE;	// 2001/06/20 asa-o 分割ウィンドウの垂直スクロールの同期をとる

		/* カスタムメニュー情報 */
		wsprintf( m_pShareData->m_Common.m_szCustMenuNameArr[0], "右クリックメニュー", i );
		for( i = 1; i < MAX_CUSTOM_MENU; ++i ){
			wsprintf( m_pShareData->m_Common.m_szCustMenuNameArr[i], "メニュー%d", i );
			m_pShareData->m_Common.m_nCustMenuItemNumArr[i] = 0;
			for( j = 0; j < MAX_CUSTOM_MENU_ITEMS; ++j ){
				m_pShareData->m_Common.m_nCustMenuItemFuncArr[i][j] = 0;
				m_pShareData->m_Common.m_nCustMenuItemKeyArr [i][j] = '\0';
			}
		}
		wsprintf( m_pShareData->m_Common.m_szCustMenuNameArr[CUSTMENU_INDEX_FOR_TABWND], "タブメニュー" );	//@@@ 2003.06.13 MIK


		/* 見出し記号 */
		strcpy( m_pShareData->m_Common.m_szMidashiKigou, "1234567890(([[「『【■□▲△▼▽◆◇○◎●§?※☆★第①②③④⑤⑥⑦⑧⑨⑩??????????ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ一二三四五六七八九十壱弐参伍" );
		/* 引用符 */
		strcpy( m_pShareData->m_Common.m_szInyouKigou, "> " );		/* 引用符 */
		m_pShareData->m_Common.m_bUseHokan = FALSE;					/* 入力補完機能を使用する */

		// 2001/06/14 asa-o 補完とキーワードヘルプはタイプ別に移動したので削除
		//	2004.05.13 Moca ウィンドウサイズ固定指定追加に伴う指定方法変更
		m_pShareData->m_Common.m_nSaveWindowSize = WINSIZEMODE_SAVE;	// ウィンドウサイズ継承
		m_pShareData->m_Common.m_nWinSizeType = SIZE_RESTORED;
		m_pShareData->m_Common.m_nWinSizeCX = CW_USEDEFAULT;
		m_pShareData->m_Common.m_nWinSizeCY = 0;
		
		//	2004.05.13 Moca ウィンドウ位置
		m_pShareData->m_Common.m_nSaveWindowPos = WINSIZEMODE_DEF;		// ウィンドウ位置固定?継承
		m_pShareData->m_Common.m_nWinPosX = CW_USEDEFAULT;
		m_pShareData->m_Common.m_nWinPosY = 0;

		m_pShareData->m_Common.m_bUseTaskTray = TRUE;				/* タスクトレイのアイコンを使う */
		m_pShareData->m_Common.m_bStayTaskTray = TRUE;				/* タスクトレイのアイコンを常駐 */
		m_pShareData->m_Common.m_wTrayMenuHotKeyCode = 'Z';			/* タスクトレイ左クリックメニュー キー */
		m_pShareData->m_Common.m_wTrayMenuHotKeyMods = HOTKEYF_ALT | HOTKEYF_CONTROL;	/* タスクトレイ左クリックメニュー キー */
		m_pShareData->m_Common.m_bUseOLE_DragDrop = TRUE;			/* OLEによるドラッグ & ドロップを使う */
		m_pShareData->m_Common.m_bUseOLE_DropSource = TRUE;			/* OLEによるドラッグ元にするか */
		m_pShareData->m_Common.m_bDispExitingDialog = FALSE;		/* 終了ダイアログを表示する */
		m_pShareData->m_Common.m_bEnableUnmodifiedOverwrite = FALSE;/* 無変更でも上書きするか */
		m_pShareData->m_Common.m_bSelectClickedURL = TRUE;			/* URLがクリックされたら選択するか */
		m_pShareData->m_Common.m_bGrepExitConfirm = FALSE;			/* Grepモードで保存確認するか */
//		m_pShareData->m_Common.m_bRulerDisp = TRUE;					/* ルーラー表示 */
		m_pShareData->m_Common.m_nRulerHeight = 13;					/* ルーラーの高さ */
		m_pShareData->m_Common.m_nRulerBottomSpace = 0;				/* ルーラーとテキストの隙間 */
		m_pShareData->m_Common.m_nRulerType = 0;					/* ルーラーのタイプ */
		//	Sep. 18, 2002 genta
		m_pShareData->m_Common.m_nLineNumRightSpace = 0;			/* 行番号の右の隙間 */
		m_pShareData->m_Common.m_bCopyAndDisablSelection = FALSE;	/* コピーしたら選択解除 */
		m_pShareData->m_Common.m_bHtmlHelpIsSingle = TRUE;			/* HtmlHelpビューアはひとつ */
		m_pShareData->m_Common.m_bCompareAndTileHorz = TRUE;		/* 文書比較後、左右に並べて表示 */
		/* 1999.11.15 */
		m_pShareData->m_Common.m_bDropFileAndClose = FALSE;			/* ファイルをドロップしたときは閉じて開く */
		m_pShareData->m_Common.m_nDropFileNumMax = 8;				/* 一度にドロップ可能なファイル数 */
		m_pShareData->m_Common.m_bCheckFileTimeStamp = TRUE;		/* 更新の監視 */
		m_pShareData->m_Common.m_bNotOverWriteCRLF = TRUE;			/* 改行は上書きしない */
		::SetRect( &m_pShareData->m_Common.m_rcOpenDialog, 0, 0, 0, 0 );	/* 「開く」ダイアログのサイズと位置 */
		m_pShareData->m_Common.m_bAutoCloseDlgFind = TRUE;			/* 検索ダイアログを自動的に閉じる */
		m_pShareData->m_Common.m_bSearchAll		 = FALSE;			/* 検索/置換/ブックマーク  先頭(末尾)から再検索 2002.01.26 hor */
		m_pShareData->m_Common.m_bScrollBarHorz = TRUE;				/* 水平スクロールバーを使う */
		m_pShareData->m_Common.m_bAutoCloseDlgFuncList = FALSE;		/* アウトライン ダイアログを自動的に閉じる */	//Nov. 18, 2000 JEPRO TRUE→FALSE に変更
		m_pShareData->m_Common.m_bAutoCloseDlgReplace = TRUE;		/* 置換 ダイアログを自動的に閉じる */
		m_pShareData->m_Common.m_bAutoColmnPaste = TRUE;			/* 矩形コピーのテキストは常に矩形貼り付け */

		m_pShareData->m_Common.m_bHokanKey_RETURN	= TRUE;			/* VK_RETURN 補完決定キーが有効/無効 */
		m_pShareData->m_Common.m_bHokanKey_TAB		= FALSE;		/* VK_TAB   補完決定キーが有効/無効 */
		m_pShareData->m_Common.m_bHokanKey_RIGHT	= TRUE;			/* VK_RIGHT 補完決定キーが有効/無効 */
		m_pShareData->m_Common.m_bHokanKey_SPACE	= FALSE;		/* VK_SPACE 補完決定キーが有効/無効 */

		m_pShareData->m_Common.m_bMarkUpBlankLineEnable	=	FALSE;	//アウトラインダイアログでブックマークの空行を無視			2002.02.08 aroka,hor
		m_pShareData->m_Common.m_bFunclistSetFocusOnJump	=	FALSE;	//アウトラインダイアログでジャンプしたらフォーカスを移す	2002.02.08 hor

		/*
			書式指定子の意味はWindows SDKのGetDateFormat(), GetTimeFormat()を参照のこと
		*/

		m_pShareData->m_Common.m_nDateFormatType = 0;	//日付書式のタイプ
		strcpy( m_pShareData->m_Common.m_szDateFormat, "yyyy\'年\'M\'月\'d\'日(\'dddd\')\'" );	//日付書式
		m_pShareData->m_Common.m_nTimeFormatType = 0;	//時刻書式のタイプ
		strcpy( m_pShareData->m_Common.m_szTimeFormat, "tthh\'時\'mm\'分\'ss\'秒\'"  );			//時刻書式

		m_pShareData->m_Common.m_bMenuIcon = TRUE;		/* メニューにアイコンを表示する */

		//	Nov. 12, 2000 genta
		m_pShareData->m_Common.m_bAutoMIMEdecode = FALSE;	//ファイル読み込み時にMIMEのデコードを行うか	//Jul. 13, 2001 JEPRO

		//	Oct. 03, 2004 genta 前回と異なる文字コードの時に問い合わせを行うか
		m_pShareData->m_Common.m_bQueryIfCodeChange = TRUE;
		//	Oct. 09, 2004 genta 開こうとしたファイルが存在しないとき警告する
		m_pShareData->m_Common.m_bAlertIfFileNotExist = FALSE;

		for( i = 0; i < MAX_CMDARR; i++ ){
			/* 初期化 */
			m_pShareData->m_szCmdArr[i][0] = '\0';
			//m_pShareData->m_bCmdArrFavorite[i] = false;	//お気に入り	//@@@ 2003.04.08 MIK
		}
		m_pShareData->m_nCmdArrNum = 0;

		InitKeyword( m_pShareData );
		InitTypeConfig( m_pShareData );
		InitPopupMenu( m_pShareData );

		//	Apr. 05, 2003 genta ウィンドウキャプションの初期値
		//	Aug. 16, 2003 genta $N(ファイル名省略表示)をデフォルトに変更
		strcpy( m_pShareData->m_Common.m_szWindowCaptionActive, 
			"${w?$h$:アウトプット$:${I?$f$:$N$}$}${U?(更新)$} -"
			" sakura $V ${R?(只读)$:(不可覆盖)$}${M?  【宏记录中】$}" );
		strcpy( m_pShareData->m_Common.m_szWindowCaptionInactive, 
			"${w?$h$:アウトプット$:$f$}${U?(更新)$} -"
			" sakura $V ${R?(只读)$:(不可覆盖)$}${M?  【宏记录中】$}" );

		//	From Here Sep. 14, 2001 genta
		//	Macro登録の初期化
		MacroRec *mptr = m_pShareData->m_MacroTable;
		for( i = 0; i < MAX_CUSTMACRO; ++i, ++mptr ){
			mptr->m_szName[0] = '\0';
			mptr->m_szFile[0] = '\0';
			mptr->m_bReloadWhenExecute = FALSE;
		}
		//	To Here Sep. 14, 2001 genta

		// 2004/06/21 novice タグジャンプ機能追加
		m_pShareData->m_TagJumpNum = 0;
		// 2004.06.22 Moca タグジャンプの先頭
		m_pShareData->m_TagJumpTop = 0;
//@@@ 2002.01.08 YAZAKI 設定を保存するためにShareDataに移動
		m_pShareData->m_bGetStdout = TRUE;	/* 外部コマンド実行の「標準出力を得る」 */
		m_pShareData->m_bLineNumIsCRLF = TRUE;	/* 指定行へジャンプの「改行単位の行番号」か「折り返し単位の行番号」か */

		m_pShareData->m_nDiffFlgOpt = 0;	/* DIFF差分表示 */	//@@@ 2002.05.27 MIK

		m_pShareData->m_nTagsOpt = 0;	/* CTAGS */	//@@@ 2003.05.12 MIK
		strcpy( m_pShareData->m_szTagsCmdLine, "" );	/* CTAGS */	//@@@ 2003.05.12 MIK
		//From Here 2005.04.03 MIK キーワード指定タグジャンプのHistory保管
		m_pShareData->m_nTagJumpKeywordArrNum = 0;
		for( i = 0; i < MAX_TAGJUMP_KEYWORD; ++i ){
			strcpy( m_pShareData->m_szTagJumpKeywordArr[i], "" );
			//m_pShareData->m_bTagJumpKeywordArrFavorite[i] = false;	//お気に入り
		}
		m_pShareData->m_bTagJumpICase = FALSE;
		m_pShareData->m_bTagJumpAnyWhere = FALSE;
		//To Here 2005.04.03 MIK 

	}else{
		/* オブジェクトがすでに存在する場合 */
		/* ファイルのビューを? 呼び出し側プロセスのアドレス空間にマップします */
		m_pShareData = (DLLSHAREDATA*)::MapViewOfFile(
			m_hFileMap,
			FILE_MAP_ALL_ACCESS,
			0,
			0,
			0
		);
		//	From Here Oct. 27, 2000 genta
		if( m_pShareData->m_vStructureVersion != uShareDataVersion ){
			//	この共有データ領域は使えない.
			//	ハンドルを解放する
			::UnmapViewOfFile( m_pShareData );
			m_pShareData = NULL;
			return false;
		}
		//	To Here Oct. 27, 2000 genta
	}
	return true;
}




/* KEYDATA配列にデータをセット */
void CShareData::SetKeyNameArrVal(
	DLLSHAREDATA*	pShareData,
	int				nIdx,
	short			nKeyCode,
	char*			pszKeyName,
	short			nFuncCode_0,
	short			nFuncCode_1,
	short			nFuncCode_2,
	short			nFuncCode_3,
	short			nFuncCode_4,
	short			nFuncCode_5,
	short			nFuncCode_6,
	short			nFuncCode_7
 )
 {
	pShareData->m_pKeyNameArr[nIdx].m_nKeyCode = nKeyCode;
	strcpy( pShareData->m_pKeyNameArr[nIdx].m_szKeyName, pszKeyName );
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[0] = nFuncCode_0;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[1] = nFuncCode_1;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[2] = nFuncCode_2;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[3] = nFuncCode_3;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[4] = nFuncCode_4;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[5] = nFuncCode_5;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[6] = nFuncCode_6;
	pShareData->m_pKeyNameArr[nIdx].m_nFuncCodeArr[7] = nFuncCode_7;
 	return;
 }


/* KEYDATA配列にデータをセット */
void CShareData::SetKeyNameArrVal(
	DLLSHAREDATA*	pShareData,
	int				nIdx,
	short			nKeyCode,
	char*			pszKeyName
 )
{
	pShareData->m_pKeyNameArr[nIdx].m_nKeyCode = nKeyCode;
	strcpy( pShareData->m_pKeyNameArr[nIdx].m_szKeyName, pszKeyName );
	return;
 }



/*!
	ファイル名から、ドキュメントタイプ(数値)を取得する
	
	@param pszFilePath [in] ファイル名
	
	拡張子を切り出して GetDocumentTypeExt に渡すだけ.
*/
int CShareData::GetDocumentType( const char* pszFilePath )
{
	char	szExt[_MAX_EXT];

	if( NULL != pszFilePath && 0 < (int)strlen( pszFilePath ) ){
		_splitpath( pszFilePath, NULL, NULL, NULL, szExt );
		if( szExt[0] == '.' )
			return GetDocumentTypeExt( szExt + 1 );
		else
			return GetDocumentTypeExt( szExt );
	}
	return 0;
}

/*!
	拡張子から、ドキュメントタイプ(数値)を取得する
	
	@param pszExt [in] 拡張子 (先頭の,は含まない)
	
	指定された拡張子の属する文書タイプ番号を返す.
	とりあえず今のところはタイプは拡張子のみに依存すると仮定している.
	ファイル全体の形式に対応させるときは,また考え直す.
*/
int CShareData::GetDocumentTypeExt( const char* pszExt )
{
	const char	pszSeps[] = " ;,";	// separator

	int		i;
	char*	pszToken;
	char	szText[256];

	for( i = 0; i < MAX_TYPES; ++i ){
		strcpy( szText, m_pShareData->m_Types[i].m_szTypeExts );
		pszToken = strtok( szText, pszSeps );
		while( NULL != pszToken ){
			if( 0 == _stricmp( pszExt, pszToken ) ){
				return i;	//	番号
			}
			pszToken = strtok( NULL, pszSeps );
		}
	}
	return 0;	//	ハズレ
}





/*! 編集ウィンドウリストへの登録

	@date 2003.06.28 MIK CRecent利用で書き換え
*/
BOOL CShareData::AddEditWndList( HWND hWnd )
{
//	int		i;
//	int		j;
//	/* 同じウィンドウハンドルがある場合は先頭に持ってくる */
//	for( i = 0; i < m_pShareData->m_nEditArrNum; ++i ){
//		if( hWnd == m_pShareData->m_pEditArr[i].m_hWnd ){
//			break;
//		}
//	}
//	if( i < m_pShareData->m_nEditArrNum ){
//		for( j = i; j > 0; j-- ){
//			m_pShareData->m_pEditArr[j] = m_pShareData->m_pEditArr[j - 1];
//		}
//	}else{
//		if( m_pShareData->m_nEditArrNum >= MAX_EDITWINDOWS ){	//最大値修正	//@@@ 2003.05.31 MIK
//			/* これ以上登録できない */
//			return FALSE;
//		}
//
//		for( j = MAX_EDITWINDOWS - 1; j > 0; j-- ){
//			m_pShareData->m_pEditArr[j] = m_pShareData->m_pEditArr[j - 1];
//		}
//		m_pShareData->m_nEditArrNum++;
//		if( m_pShareData->m_nEditArrNum > MAX_EDITWINDOWS ){
//			m_pShareData->m_nEditArrNum = MAX_EDITWINDOWS;
////#ifdef _DEBUG
////			/* デバッグモニタに出力 */
////			TraceOut( "%s(%d): m_nEditArrNum=%d\n", __FILE__, __LINE__, hWnd, m_pShareData->m_nEditArrNum );
////#endif
//			/* これ以上登録できない */
//			return FALSE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -