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

📄 tcformat.c

📁 一个提供档案及Partition作加解密的程式支援以下的加密演算法AESBlowfishCAST5SerpentTriple DESTwofishAES-BlowfishAES-TwofishAES-
💻 C
📖 第 1 页 / 共 5 页
字号:
				default:		pkcs5 = SHA1; CheckButton (GetDlgItem (hwndDlg, IDC_SHA1)); break;
				}

				EnableWindow (GetDlgItem (hwndDlg, IDC_SHA1), TRUE);
				EnableWindow (GetDlgItem (hwndDlg, IDC_RIPEMD160), TRUE);

				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
			}
			break;

		case SIZE_PAGE:
			{
				char szTmp[32];
				UINT nID[4] = { 0,0,0,0 };

				if (bHiddenVolHost)
				{
					nID[0] = IDS_SIZE_HELP0_HIDDEN_HOST_VOL;
					nID[1] = IDS_SIZE_HELP1_HIDDEN_HOST_VOL;
				}
				else
				{
					nID[0] = bHiddenVol ? IDS_SIZE_HELP0_HIDDEN_VOL : IDS_SIZE_HELP0;
					nID[1] = bHiddenVol ? IDS_SIZE_HELP1_HIDDEN_VOL : IDS_SIZE_HELP1;
				}

				if (bDevice == TRUE && !(bHiddenVol && !bHiddenVolHost))	// If raw device but not a hidden volume
				{
					nID[0] = IDS_SIZE_PARTITION_HELP;
					nID[1] = bHiddenVolHost ? IDS_SIZE_PARTITION_HIDDEN_VOL_HELP : 0;
				}
				SendMessage (GetDlgItem (hwndDlg, IDC_SPACE_LEFT), WM_SETFONT, (WPARAM) hSmallBoldFont, (LPARAM) TRUE);
				SendMessage (GetDlgItem (hwndDlg, IDC_SIZEBOX), EM_LIMITTEXT, 10, 0);

				if(!QueryFreeSpace (hwndDlg, GetDlgItem (hwndDlg, IDC_SPACE_LEFT), TRUE))
				{
					nUIVolumeSize=0;
					nVolumeSize=0;
					SetWindowText (GetDlgItem (hwndDlg, IDC_SIZEBOX), "UNKNOWN");
					EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), FALSE);
					EnableWindow (GetDlgItem (hwndDlg, IDC_KB), FALSE);
					EnableWindow (GetDlgItem (hwndDlg, IDC_MB), FALSE);

				}
				else if (bDevice == TRUE && !(bHiddenVol && !bHiddenVolHost))	// If raw device but not a hidden volume
				{
					EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), FALSE);
					EnableWindow (GetDlgItem (hwndDlg, IDC_KB), FALSE);
					EnableWindow (GetDlgItem (hwndDlg, IDC_MB), FALSE);
				}
				else
				{
					EnableWindow (GetDlgItem (hwndDlg, IDC_SIZEBOX), TRUE);
					EnableWindow (GetDlgItem (hwndDlg, IDC_KB), TRUE);
					EnableWindow (GetDlgItem (hwndDlg, IDC_MB), TRUE);
				}

				if (nMultiplier == BYTES_PER_KB)
					SendMessage (GetDlgItem (hwndDlg, IDC_KB), BM_SETCHECK, BST_CHECKED, 0);
				else
					SendMessage (GetDlgItem (hwndDlg, IDC_MB), BM_SETCHECK, BST_CHECKED, 0);

				if (nUIVolumeSize != 0)
				{
					sprintf (szTmp, "%I64u", nUIVolumeSize);
					SetWindowText (GetDlgItem (hwndDlg, IDC_SIZEBOX), szTmp);
				}

				SetFocus (GetDlgItem (hwndDlg, IDC_SIZEBOX));

				SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));

				if (bHiddenVol)
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (bHiddenVolHost ? IDS_SIZE_HIDVOL_HOST_TITLE : IDS_SIZE_HIDVOL_TITLE));
				else
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_SIZE_TITLE));


				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));


				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);

				VerifySizeAndUpdate (hwndDlg, FALSE);
			}
			break;

		case HIDVOL_HOST_PASSWORD_PAGE:
			{
				UINT nID[4];

				nID[0] = IDS_PASSWORD_HIDDENVOL_HOST_DIRECT_HELP0;
				nID[1] = IDS_PASSWORD_HIDDENVOL_HOST_DIRECT_HELP1;
				nID[2] = IDS_PASSWORD_HIDDENVOL_HOST_DIRECT_HELP2;
				nID[3] = 0;

				SendMessage (GetDlgItem (hwndDlg, IDC_PASSWORD_DIRECT), EM_LIMITTEXT, MAX_PASSWORD, 0);

				SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD_DIRECT), szPassword);

				SetFocus (GetDlgItem (hwndDlg, IDC_PASSWORD_DIRECT));

				SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));

				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_PASSWORD_HIDVOL_HOST_TITLE));

				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));

				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
			}
			break;

		case PASSWORD_PAGE:
			{
				UINT nID[4];

				if (bHiddenVolHost)
				{
					nID[0] = IDS_PASSWORD_HIDDENVOL_HOST_HELP0;
					nID[1] = 0;
					nID[2] = 0;
					nID[3] = 0;
				}
				else if (bHiddenVol)
				{
					nID[0] = IDS_PASSWORD_HIDDENVOL_HELP0;
					nID[1] = IDS_PASSWORD_HELP1;
					nID[2] = IDS_PASSWORD_HELP2;
					nID[3] = IDS_PASSWORD_HELP3;
				}
				else
				{
					nID[0] = IDS_PASSWORD_HELP1;
					nID[1] = IDS_PASSWORD_HELP2;
					nID[2] = IDS_PASSWORD_HELP3;
					nID[3] = IDS_PASSWORD_HELP0;
				}

				SendMessage (GetDlgItem (hwndDlg, IDC_PASSWORD), EM_LIMITTEXT, MAX_PASSWORD, 0);
				SendMessage (GetDlgItem (hwndDlg, IDC_VERIFY), EM_LIMITTEXT, MAX_PASSWORD, 0);

				SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), szPassword);
				SetWindowText (GetDlgItem (hwndDlg, IDC_VERIFY), szVerify);

				SetFocus (GetDlgItem (hwndDlg, IDC_PASSWORD));

				SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));

				if (bHiddenVol)
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (bHiddenVolHost ? IDS_PASSWORD_HIDVOL_HOST_TITLE : IDS_PASSWORD_HIDVOL_TITLE));
				else
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_PASSWORD_TITLE));

				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));

				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);

				VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
					 GetDlgItem (hwndDlg, IDC_PASSWORD),
					   GetDlgItem (hwndDlg, IDC_VERIFY),
						      NULL, NULL);

			}
			break;

		case FORMAT_PAGE:
			{
				UINT nID[4];

				nID[0] = bHiddenVolHost ? IDS_FORMAT_HIDVOL_HOST_HELP0 : IDS_FORMAT_HELP0;
				nID[1] = bHiddenVolHost ? IDS_FORMAT_HIDVOL_HOST_HELP1 : IDS_FORMAT_HELP1;
				nID[2] = bHiddenVolHost ? IDS_FORMAT_HIDVOL_HOST_HELP2 : IDS_FORMAT_HELP2;
				nID[3] = 0;


				SetTimer (GetParent (hwndDlg), 0xff, RANDOM_SHOW_TIMER, NULL);

				hDiskKey = GetDlgItem (hwndDlg, IDC_DISK_KEY);
				hHeaderKey = GetDlgItem (hwndDlg, IDC_HEADER_KEY);

				SendMessage (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);
				SendMessage (GetDlgItem (hwndDlg, IDC_DISK_KEY), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);
				SendMessage (GetDlgItem (hwndDlg, IDC_HEADER_KEY), WM_SETFONT, (WPARAM) hSmallFont, (LPARAM) TRUE);

				SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));

				if (bHiddenVol)
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (bHiddenVolHost ? IDS_FORMAT_HIDVOL_HOST_TITLE : IDS_FORMAT_HIDVOL_TITLE));
				else
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_FORMAT_TITLE));

				EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), bDevice && (!bHiddenVol));

				SendMessage (GetDlgItem (hwndDlg, IDC_SHOW_KEYS), BM_SETCHECK, showKeys ? BST_CHECKED : BST_UNCHECKED, 0);
				SetWindowText (GetDlgItem (hwndDlg, IDC_RANDOM_BYTES), showKeys ? "" : "****************************");
				SetWindowText (GetDlgItem (hwndDlg, IDC_HEADER_KEY), showKeys ? "" : "****************************");
				SetWindowText (GetDlgItem (hwndDlg, IDC_DISK_KEY), showKeys ? "" : "****************************");

				SendMessage (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), CB_RESETCONTENT, 0, 0);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "Default", 0);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "0.5 KB", 1);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "1 KB", 2);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "2 KB", 4);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "4 KB", 8);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "8 KB", 16);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "16 KB", 32);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "32 KB", 64);
				AddComboPair (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), "64 KB", 128);
				SendMessage (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), CB_SETCURSEL, 0, 0);

				SendMessage (GetDlgItem (hwndDlg, IDC_FILESYS), CB_RESETCONTENT, 0, 0);
				if (bHiddenVolHost)
				{
					// A volume within which a hidden volume is intended to be created can only be FAT (NTFS file system stores various info over the entire volume, which would get overwritten by the hidden volume).
					if (nVolumeSize <= MAX_FAT_VOLUME_SIZE)
						AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), "FAT", FILESYS_FAT);
					else
						AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), "None", FILESYS_NONE);

					SendMessage (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), BM_SETCHECK, BST_UNCHECKED, 0);

					EnableWindow (GetDlgItem (hwndDlg, IDC_FILESYS), FALSE);
					SendMessage (GetDlgItem (hwndDlg, IDC_FILESYS), CB_SETCURSEL, 0, 0);
				}
				else
				{
					if (bHiddenVol)
						SendMessage (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), BM_SETCHECK, BST_CHECKED, 0);

					AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), "None", FILESYS_NONE);

					if (nVolumeSize <= MAX_FAT_VOLUME_SIZE)
						AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), "FAT", FILESYS_FAT);

					if (nVolumeSize / 512 > 5050)
						AddComboPair (GetDlgItem (hwndDlg, IDC_FILESYS), "NTFS", FILESYS_NTFS);

					EnableWindow (GetDlgItem (hwndDlg, IDC_FILESYS), TRUE);

					/* IMPORTANT:
					   The default file system for ANY TrueCrypt volume must ALWAYS be FAT!
					   FAT is the only file system within which a hidden volume can be created. In future,
					   FAT file system will probably become obsolete and the fact that a TrueCrypt volume
					   contains FAT would probably arouse suspicion that it contains a hidden volume.
					   The only way to prevent this from happening is making FAT the default file system 
					   for ANY TrueCrypt volume. Then a user of a hidden volume, when asked why he used the
					   FAT file system, will be able to say "I left all the configurations which I did not
					   understand at their default settings."  */
					SendMessage (GetDlgItem (hwndDlg, IDC_FILESYS), CB_SETCURSEL, 1, 0);
				}

				EnableWindow (GetDlgItem (hwndDlg, IDC_CLUSTERSIZE), TRUE);
				EnableWindow (GetDlgItem (hwndDlg, IDC_CANCEL_BAR), FALSE);

				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_FINISH));
				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));

				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), TRUE);
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);

				SetFocus (GetDlgItem (GetParent (hwndDlg), IDC_NEXT));
			}
			break;

		case FORMAT_FINISHED_PAGE:
			{
				UINT nID[4];

				if (!bHiddenVolHost && bHiddenVol && !bHiddenVolFinished)
				{
					char msg[1028];
					char driveStr[2] = {hiddenVolHostDriveNo + 'A', 0};

					nID[0] = IDS_HIDVOL_HOST_FILLING_HELP0;
					nID[1] = IDS_HIDVOL_HOST_FILLING_HELP1;
					nID[2] = IDS_HIDVOL_HOST_FILLING_HELP2;
					nID[3] = IDS_HIDVOL_HOST_FILLING_HELP3;
					sprintf (msg, getmultilinestr (nID), driveStr);			
					SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), msg);
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (IDS_HIDVOL_HOST_FILLING_TITLE));
				}
				else 
				{
					nID[0] = bHiddenVol ? IDS_HIDVOL_FORMAT_FINISHED_HELP0 : IDS_FORMAT_FINISHED_HELP;
					nID[1] = bHiddenVol ? IDS_HIDVOL_FORMAT_FINISHED_HELP1 : 0;
					nID[2] = bHiddenVol ? IDS_HIDVOL_FORMAT_FINISHED_HELP2 : 0;
					nID[3] = bHiddenVol ? IDS_HIDVOL_FORMAT_FINISHED_HELP3 : 0;
					SetWindowText (GetDlgItem (hwndDlg, IDC_BOX_HELP), getmultilinestr (nID));
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_BOX_TITLE), getstr (bHiddenVol ? IDS_HIDVOL_FORMAT_FINISHED_TITLE : IDS_FORMAT_FINISHED_TITLE));
				}


				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), getstr (IDS_NEXT));
				SetWindowText (GetDlgItem (GetParent (hwndDlg), IDC_PREV), getstr (IDS_PREV));
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_PREV), (!bHiddenVol || bHiddenVolFinished) ? TRUE : FALSE);

				if (!bHiddenVol || bHiddenVolFinished)
					SetWindowText (GetDlgItem (GetParent (hwndDlg), IDCANCEL), getstr (IDS_EXIT));
			}
			break;

		}
		return 0;

	case WM_HELP:
		OpenPageHelp (GetParent (hwndDlg), nCurPageNo);
		return 1;

	case WM_COMMAND:
		if (lw == IDC_OPEN_OUTER_VOLUME && nCurPageNo == FORMAT_FINISHED_PAGE)
		{
			OpenVolumeExplorerWindow (hiddenVolHostDriveNo);
		}

		if (lw == IDC_HIDDEN_VOL_HELP && nCurPageNo == INTRO_PAGE)
		{
			MessageBox (hwndDlg, 
"It may happen that you are forced by somebody to reveal the password to an\n\
encrypted volume. There are many situations where you cannot refuse to reveal the\n\
password (for example, when the adversary uses violence). Using a so-called hidden\n\
volume allows you to solve such situations in a diplomatic manner without revealing\n\
the password to your volume.\n\
\n\
The principle is that a TrueCrypt volume is created within another TrueCrypt volume\n\
(within the free space on the volume). Even when the outer volume is mounted, it is\n\
impossible to tell whether there is a hidden volume within it or not, because free\n\
space on any TrueCrypt volume is always filled with random data when the volume is\n\
created (if Quick Format is disabled) and no part of the hidden volume can be\n\
distinguished from random data. The password for the hidden volume must be different\n\
from the password for the outer volume. To the outer volume (before creating the\n\
hidden volume within it) you should copy some sensitive-looking files that you do\n\
NOT really want to hide. These files will be there for anyone who would force you to\n\
hand over the password. You will reveal only the password for the outer volume, not\n\
for the hidden one. Files that are really sensitive will be stored on the hidden\n\
volume.\n\
\n\
For more information, please refer to TrueCrypt User's Guide."
				, lpszTitle, MB_OK);
		}
		if (lw == IDC_CANCEL_BAR && nCurPageNo == FORMAT_PAGE)
		{
			if (MessageBox (hwndDlg, getstr (IDS_FORMAT_ABORT), lpszTitle, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2 ) == IDYES)
				bThreadCancel = TRUE;
			return 1;
		}

		if (lw == IDC_CIPHER_TEST && nCurPageNo == CIPHER_PAGE)
		{
			LPARAM nIndex;
			int i = 0, c;

			nIndex = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETCURSEL, 0, 0);
			nVolumeEA = SendMessage (GetDlgItem (hCurPage, IDC_COMBO_BOX), CB_GETITEMDATA, nIndex, 0);

			for (c = EAGetLastCipher (nVolumeEA); c != 0; c = EAGetPreviousCipher (nVolumeEA, c))
			{
				DialogBoxParam (hInst, MAKEINTRESOURCE (IDD_CIPHER_TEST_DLG), 
					GetParent (hwndDlg), (DLGPROC) CipherTestDialogProc, (LPARAM) c);
			}
			return 1;
		}

		if (lw == IDC_WIZ_BENCHMARK && nCurPageNo == CIPHER_PAGE)
		{
			int nResult = DialogBoxParam (hInst,
				MAKEINTRESOURCE (IDD_BENCHMARK_DLG), hwndDlg,
				(DLGPROC) BenchmarkDlgProc, (LPARAM) NULL);

			return 1;
		}

		if (hw == CBN_EDITCHANGE && nCurPageNo == FILE_PAGE)
		{
			int j = GetWindowTextLength (GetDlgItem (hCurPage, IDC_COMBO_BOX));
			if (j > 0)
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
			else
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);
			return 1;
		}
		
		if (hw == CBN_SELCHANGE && nCurPageNo == FILE_PAGE)
		{
			LPARAM nIndex;

			nIndex = MoveEditToCombo ((HWND) lParam);
			nIndex = UpdateComboOrder (GetDlgItem (hwndDlg, IDC_COMBO_BOX));

			if (nIndex != CB_ERR)
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), TRUE);
			else
				EnableWindow (GetDlgItem (GetParent (hwndDlg), IDC_NEXT), FALSE);

			return 1;
		}
		
		if (hw == EN_CHANGE && nCurPageNo == SIZE_PAGE)
		{
			VerifySizeAndUpdate (hwndDlg, FALSE);
			return 1;
		}
		
		if (hw == EN_CHANGE && nCurPageNo == PASSWORD_PAGE)
		{
			VerifyPasswordAndUpdate (hwndDlg, GetDlgItem (GetParent (hwndDlg), IDC_NEXT),
					 GetDlgItem (hwndDlg, IDC_PASSWORD),
					   GetDlgItem (hwndDlg, IDC_VERIFY),
						 NULL, NULL);
			return 1;
		}
		
		if (hw == EN_CHANGE && nCurPageNo == HIDVOL_HOST_PASSWORD_PAGE)
		{
			GetWindowText (GetDlgItem (hCurPage, IDC_PASSWORD_DIRECT), szPassword, sizeof (szPassword));
			return 1;
		}

		if ((lw == IDC_KB || lw == IDC_MB) && nCurPageNo == SIZE_PAGE)
		{
			VerifySizeAndUpdate (hwndDlg, FALSE);
			return 1;
		}
		
		if (lw == IDC_HIDDEN_VOL && nCurPageNo == INTRO_PAGE)
		{
			bHiddenVol = TRUE;
			bHiddenVolHost = TRUE;

⌨️ 快捷键说明

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