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

📄 physet.c

📁 linux2.6.11内核无线网卡驱动程序。支持802.11 abg
💻 C
字号:
#include "wtprecomp.h"/*!<br>功能:与1.1G项目相关的<br><br>*/void Set1_1GRF(IN PWT_ADAPTER Adapter){//	DBGPRINT(WT_SEND,("1.1G RF set \n"));	////////1M        #ifdef __2_4__   	WRITE_WT4(0x154,0x0000104a,4);      ///////930mHz    	WRITE_WT4(0x154,0x0000200c,4);       ///////930mHz	WRITE_WT4(0x154,0x00003027,4); 	WRITE_WT4(0x154,0x00004c15,4); #endif     	WRITE_WT4(0x154,0x00001020,4);      ///////930mHz    	WRITE_WT4(0x154,0x00002000,4);       ///////930mHz	WRITE_WT4(0x154,0x00003027,4); 	WRITE_WT4(0x154,0x00004c17,4); ////socket D 1# mismatch power 40h                                           //addr is  78000154 ////I mismatch        //data is  009f0000     	WRITE_WT4(0x154,0x00009f06,4);    //addr is  78000154 ////I mismatch        //data is  04af0000 	WRITE_WT4(0x154,0x0000af30,4);    //addr is  78000154 ////q mismatch        //data is  00bf0000     	WRITE_WT4(0x154,0x0000bf00,4);                  //addr is  78000154 ////q mismatch        //data is  0bcf0000  	WRITE_WT4(0x154,0x0000cf01,4); }void Set1_1GAdapterInit(IN PWT_ADAPTER Adapter){	WRITE_WT4(0x170,0x1a23be,4);	WRITE_WT4(0x174,0xc2803f,4);	WRITE_WT4(0x184,0xd4,1);	WRITE_WT4(0x1a4,0xd4,1);	WRITE_WT4(0x14c,0x1040,4);	WRITE_WT4(0x181,0x01,1);	WRITE_WT4(0x188,0x10,1);	WRITE_WT4(0x17a,0x02,1);	WRITE_WT4(0x17b,0x12,1);	WRITE_WT4(0x17e,0x22,1);	WRITE_WT4(0x17f,0x26,1);	WRITE_WT4(0x182,0x2e,1);	WRITE_WT4(0x183,0x2e,1);	WRITE_WT4(0x186,0x2e,1);	WRITE_WT4(0x18a,0x2b,1);	WRITE_WT4(0x18b,0x55,1);	WRITE_WT4(0x18e,0xaa,1);	WRITE_WT4(0x18f,0xd5,1);	WRITE_WT4(0x196,0xff,1);	WRITE_WT4(0x197,0xff,1);	WRITE_WT4(0x19a,0xff,1);	WRITE_WT4(0x19c,0x38,1);	//WRITE_WT4(0x19c,0x0a,1);	WRITE_WT4(0x1cc,0x5a,1);	WRITE_WT4(0x1d8,0x11,1);	WRITE_WT4(0x1f0,0x67,1);	WRITE_WT4(0x18c,0x20,1);	WRITE_WT4(0x178,0xf3,1);	WRITE_WT4(0x17c,0x09,1);	WRITE_WT4(0x19c,0x38,1);//	DBGPRINT(WT_SEND,("1.1G RF set \n"));}/// <summary>/// 功能定义:扫描切换RF2230 rf 的信道/// </summary>///////// <param name="Adapter">适配器上下文环境</param>////// <returns>1</returns>////// <para>///函数实现: 根据信道号,从信道列表中找到对应的参数,然后逐一写到0x154寄存器即可。int RF2230_set(PWT_ADAPTER Adapter, int Channel){		int channeltotal = 0;//	unsigned int data = 0;	int i =0;	RF_CONF_DAT rf_conf_array[] =	{		//频率;信道;寄存器0;寄存器1;寄存器4;保留		{2412,   1, 0x03f790, 0x033331, 0x0, 0x0 },		{2417,   2, 0x03f790, 0x0b3331, 0x0, 0x0 },		{2422,   3, 0x03e790, 0x033331, 0x0, 0x0 },		{2427,   4, 0x03e790, 0x0b3331, 0x0, 0x0 },		{2432,   5, 0x03f7a0, 0x033331, 0x0, 0x0 },		{2437,   6, 0x03f7a0, 0x0b3331, 0x0, 0x0 },		{2442,   7, 0x03e7a0, 0x033331, 0x0, 0x0 },		{2447,   8, 0x03e7a0, 0x0b3331, 0x0, 0x0 },		{2452,   9, 0x03f7b0, 0x033331, 0x0, 0x0 },		{2457,  10, 0x03f7b0, 0x0b3331, 0x0, 0x0 },		{2462,  11, 0x03e7b0, 0x033331, 0x0, 0x0 },		{2467,  12, 0x03e7b0, 0x0b3331, 0x0, 0x0 },		{2472,  13, 0x03f7c0, 0x033331, 0x0, 0x0 },		{2484,  14, 0x03e7c0, 0x066661, 0x0, 0x0 },		//{5180,  36, 0x0ff560, 0x0aaab1, 0x7fd784, 0x0 },		//{5200,  40, 0x0ff570, 0x155551, 0x7fd784, 0x0 },		//{5220,  44, 0x0ff570, 0x000001, 0x6fd784, 0x0 },		//{5240,  48, 0x0ff570, 0x0aaab1, 0x7fd784, 0x0 },		//{5260,  52, 0x0ff580, 0x155551, 0x7fd784, 0x0 },		//{5280,  56, 0x0ff580, 0x000001, 0x6fd784, 0x0 },		//{5300,  60, 0x0ff580, 0x0aaab1, 0x7fd784, 0x0 },		//{5320,  64, 0x0ff590, 0x155551, 0x7fd784, 0x0 },		//japan channel  edit by wp 2006.2.6		/*{5170,  34, 0x000ff560, 0x00055551, 0x0007fd784, 0x0},		{5190,  38, 0x000ff570, 0x00100001, 0x0007fd784, 0x0},		{5210,  42, 0x000ff570, 0x001aaab1, 0x0007fd784, 0x0},			{5230,  46, 0x000ff570, 0x00055551, 0x0007fd784, 0x0},*/	};	if(Adapter->RegMacParameter.RfType != RF2230)		return FALSE;	channeltotal = (sizeof(rf_conf_array)/sizeof(RF_CONF_DAT));	for(i=0; i<channeltotal; i++)	{		if(rf_conf_array[i].ch_no == Channel)		{			if(Adapter->RegMacParameter.ABGMode == IEEE80211A_ONLY)			{			}			else			{//				DBGPRINT(WT_TRACE, ("RFAiroha switch channel %d,\n", Channel));				WRITE_WT4( 0x154, rf_conf_array[i].reg0,4);				WRITE_WT4( 0x154, rf_conf_array[i].reg1,4); 				udelay(SWITCH_CHANNEL_DELAY+6);				udelay(SWITCH_CHANNEL_DELAY+6);				udelay(SWITCH_CHANNEL_DELAY+6);				WRITE_WT4( 0x154, 0x00d80f,4);				udelay(SWITCH_CHANNEL_DELAY+6);				WRITE_WT4( 0x154, 0x00780f,4);				udelay(SWITCH_CHANNEL_DELAY+6);				WRITE_WT4( 0x154, 0x00580f,4);							}			return TRUE;		}	}	return FALSE;}void WtWlanInterMemInit( IN PWT_ADAPTER Adapter){	//TX	USHORT nLen = 0;	USHORT nHwKeyItemLen = 0;	Adapter->MacHwCfg.ulHwHeadLen =  MAX_HW_HEAD_LEN;	Adapter->MacHwCfg.ulHwTxCellLen = MAX_TX_CELL_LEN;	Adapter->MacHwCfg.ulHwRxCellLen = MAX_RX_CELL_LEN;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;#ifndef WT_11B_SCO	Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank4 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank4 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;#endif	//RX 	Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen;#ifndef WT_11B_SCO	Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen;#endif	Adapter->MacHwCfg.HeadLen =Adapter->MacHwCfg.ulHwHeadLen;	Adapter->MacHwCfg.BodyLen = ( Adapter->MacHwCfg.ulHwTxCellLen > Adapter->MacHwCfg.ulHwRxCellLen ) ? Adapter->MacHwCfg.ulHwTxCellLen : Adapter->MacHwCfg.ulHwRxCellLen;	nHwKeyItemLen = sizeof(WTWLAN_HWKEYTABLE);	Adapter->MacHwCfg.KeyMapBaseAddr =  nLen ;	Adapter->MainMemAddress->HwCSMem.SysCfg.KeyMapAddr = host2ieee16( nLen ); 	Adapter->MainMemAddress->HwCSMem.SysCfg.KeyMapLen =  (MAX_INTERNAL_MEM_LEN - nLen)/nHwKeyItemLen;	memset( &(Adapter->MainMemAddress->HwKeyTable), 0, 0x400);}void WtWlanTestInit( IN PWT_ADAPTER Adapter){	// test value:	WT_MEMCOPY( Adapter->MainMemAddress->HwCSMem.NetMacAddress.MacAddress,		Adapter->PermanentAddress,6);		WT_MEMCOPY( Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress,		Adapter->PermanentAddress,6);/*	WT_MEMSET( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, 				6, 0xFF );*/	//WRITE_WT4( 0x1c2, 0x00, 1);	//mxx add 06.11.08	if(Adapter->RegMacParameter.RfType == RF2230)		{		WRITE_WT4( 0x184, 0xd0, 1);//RX vga增益控制输出		}	else		{		WRITE_WT4( 0x184, 0xd4, 1);		}	if(Adapter->RegMacParameter.RfType == RFMD)	{		WRITE_WT4( 0x154, 0xe00000, 4);		WRITE_WT4( 0x154, 0xc2bf60, 4);		WRITE_WT4( 0x154, 0x9a9010, 4);		WRITE_WT4( 0x154, 0x666670, 4);		WRITE_WT4( 0x154, 0xfe5688, 4);		WRITE_WT4( 0x154, 0xc2bb68, 4);		WRITE_WT4( 0x154, 0x9f9818, 4);		WRITE_WT4( 0x154, 0x666678, 4);		WRITE_WT4( 0x154, 0xf6a284, 4);		WRITE_WT4( 0x154, 0x5fe7a4, 4);		WRITE_WT4( 0x154, 0x940094, 4);		WRITE_WT4( 0x154, 0x34, 4);		WRITE_WT4( 0x154, 0x0c, 4);		WRITE_WT4( 0x154, 0xec, 4);		WRITE_WT4( 0x154, 0xf0781c, 4);		WRITE_WT4( 0x154, 0xf00036, 4);		WRITE_WT4( 0x17a, 0x05, 1);		WRITE_WT4( 0x17b, 0x0d, 1);		WRITE_WT4( 0x17e, 0x1d, 1);		WRITE_WT4( 0x17f, 0x2d, 1);		WRITE_WT4( 0x182, 0x3d, 1);		WRITE_WT4( 0x183, 0x4d, 1);		WRITE_WT4( 0x186, 0x55, 1);		WRITE_WT4( 0x18a, 0xc8, 1);		WRITE_WT4( 0x18b, 0xc0, 1);		WRITE_WT4( 0x18e, 0xb0, 1);		WRITE_WT4( 0x18f, 0xa0, 1);		WRITE_WT4( 0x196, 0x90, 1);		WRITE_WT4( 0x197, 0x80, 1);		WRITE_WT4( 0x19a, 0x78, 1);	}	//just for test by hk 2005.11.24	WRITE_WT4( 0x178, 0x33, 1);	WRITE_WT4( 0x12c, 0x12, 1);	WRITE_WT4( 0x6e, 0x30, 1);	WRITE_WT4( 0x70, 0x04, 1);	WRITE_WT4( 0x74, 0x1fffff, 4);	WRITE_WT4( 0xb8, 0x0201, 2);	WRITE_WT4( 0xc4, 0x61a8, 2);	WRITE_WT4( 0xc0, 0x01, 1);	WRITE_WT4( 0x194, 0x64, 1);#ifdef WT_1_1G_ADAPTER	 Set1_1GAdapterInit(Adapter);#endif //WT_1_1G_ADAPTER}void RF2230Init(IN PWT_ADAPTER Adapter){	printk("enter RF2230Init \n");//	WRITE_WT4( 0x14c, 0x80002004, 4);		WRITE_WT4( 0x14c, 0x80002044, 4);		WRITE_WT4( 0x154, 0x03f790,4);	WRITE_WT4( 0x154, 0x033331,4);	WRITE_WT4( 0x154, 0x01b802,4);	WRITE_WT4( 0x154, 0x00fff3,4);	WRITE_WT4( 0x154, 0x0005a4,4);	WRITE_WT4( 0x154, 0x044dc5,4);	WRITE_WT4( 0x154, 0x0805b6,4);	WRITE_WT4( 0x154, 0x0146c7,4);	WRITE_WT4( 0x154, 0x000688,4);	WRITE_WT4( 0x154, 0x0403b9,4);	WRITE_WT4( 0x154, 0x00dbba,4);	WRITE_WT4( 0x154, 0x00099b,4);	WRITE_WT4( 0x154, 0x0bdffc,4);	WRITE_WT4( 0x154, 0x00000d,4);	WRITE_WT4( 0x154, 0x00580f,4);	udelay(SWITCH_CHANNEL_DELAY+6);	WRITE_WT4( 0x154, 0x00d80f,4);	udelay(SWITCH_CHANNEL_DELAY+6);	WRITE_WT4( 0x154, 0x00780f,4);	udelay(SWITCH_CHANNEL_DELAY+6);	WRITE_WT4( 0x154, 0x00580f,4);}void WtWlanInitWtRf(WT_ADAPTER *Adapter){        FN_ENTER;	        WRITE_WT4( 0x00, 0x28, 1);	//chip frequence	        WtWlanHwRFReset(Adapter);			WtWlanInterMemInit( Adapter );		WtWlanTestInit( Adapter );	WRITE_WT4( 0x5c, 0x09, 1);	WRITE_WT4( 0x60, 0x10, 1);	WRITE_WT4( 0x64, 0x140, 2);	WRITE_WT4( 0x68, 0x30, 1);	WRITE_WT4( 0x6c, 0x90, 1);	WRITE_WT4( 0x70, 0x04, 1);	WRITE_WT4( 0x74, 0x14, 1);		WRITE_WT4( 0xb8, 0x00, 2);	WRITE_WT4( 0xc4, 0x61a8, 2);	WRITE_WT4( 0xc0, 0x01, 1);	 	//WRITE_WT4( 0x12c, 0x12, 1);	WRITE_WT4( 0x12c, 0x92, 1);	WRITE_WT4( 0x14c, 0x1204, 2);//1206	WRITE_WT4( 0x170, 0x36, 1);	WRITE_WT4( 0x174, 0x25, 1);	WRITE_WT4( 0x178, 0xf3, 1);  	WRITE_WT4( 0x188, 0x08, 1);	WRITE_WT4( 0x18c, 0x18, 1);	WRITE_WT4( 0x194, 0x64, 1);	WRITE_WT4( 0x19c, 0x38, 1);	WRITE_WT4( 0x1cc, 0x28, 1);		WRITE_WT4( 0x154, 0x2a9a6, 4);	WRITE_WT4( 0x154, 0x33cc3, 4);	WRITE_WT4( 0x154, 0x8ccc, 4);	WRITE_WT4( 0x154, 0x214c0, 4);		FN_EXIT(0,0);}//check endianvoid WtWlanSoftReset( IN PWT_ADAPTER Adapter)//like hardware reset{	CHIPCTRL RegCtrl;	udelay( NIC_DELAY_DURING_RESET );	RegCtrl.RegChipCtrl = ieee2host16(Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl);	udelay( NIC_DELAY_DURING_RESET );	RegCtrl.RegChipCtrl &= (~(unsigned short)MASK_SOFT_RESET);	Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl = host2ieee16(RegCtrl.RegChipCtrl);	udelay( NIC_DELAY_DURING_RESET );		RegCtrl.RegChipCtrl |=MASK_SOFT_RESET;	Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl = host2ieee16(RegCtrl.RegChipCtrl);	udelay( NIC_DELAY_DURING_RESET );	RegCtrl.RegChipCtrl &= (~(unsigned short)MASK_SOFT_RESET);	Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl = host2ieee16(RegCtrl.RegChipCtrl);	udelay( NIC_DELAY_DURING_RESET );}//对硬件进行复位void WtWlanHardRest(IN PWT_ADAPTER Adapter){	//NdisStallExecution( HARDWARE_RESET_DELAY );	//Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl |= 0x01;	//NdisStallExecution( HARDWARE_RESET_DELAY );	//NdisStallExecution( 50 );	//NdisStallExecution( HARDWARE_RESET_DELAY );	//Adapter->MainMemAddress->HwCSMem.BBCSMem.OFDMCmdEn |= 0x0040;	//NdisStallExecution( HARDWARE_RESET_DELAY );	//Adapter->MainMemAddress->HwCSMem.BBCSMem.OFDMCmdEn &= ~0x0040;	//NdisStallExecution( HARDWARE_RESET_DELAY );	//NdisStallExecution( 50 );	//NdisStallExecution( 50 );}void WtWlanHwRFReset( IN PWT_ADAPTER Adapter){#if 0#define MASK_RF_SHUTDOWN	0X01#define MASK_RF_RADIOPE		0X02#define MASK_RF_RESET		0X04#endif	//0x150	Adapter->MainMemAddress->HwCSMem.CSRAddress.RFIfCtrl = 4;	udelay( NIC_RF_RESET_DELAY );		Adapter->MainMemAddress->HwCSMem.CSRAddress.RFIfCtrl =0;	udelay( NIC_RF_RESET_DELAY );	Adapter->MainMemAddress->HwCSMem.CSRAddress.RFIfCtrl = 3;	udelay( NIC_RF_RESET_DELAY );	}void WtWlanSetTTL( IN PWT_ADAPTER Adapter, ULONG MsduTTL){	Adapter->Ndis80211Parameter.dot11MaxReceiveLifetime = MsduTTL;	Adapter->MainMemAddress->HwCSMem.ProtoParam.MsduTTL = host2ieee32( MsduTTL&0xFFFFFF );}void WtWlanSetHwSeq( IN PWT_ADAPTER Adapter, USHORT seq, UCHAR step){	Adapter->MacParameter.mSeqNum = seq;	Adapter->MacParameter.mStep = step;	Adapter->MainMemAddress->HwCSMem.ProtoParam.FrmSN = host2ieee16( seq );	Adapter->MainMemAddress->HwCSMem.ProtoParam.FrmSeqStep = step; 	Adapter->MacParameter.bHwSeq = TRUE;}void WtWlanPrivacyInit( IN PWT_ADAPTER Adapter){	Adapter->MainMemAddress->HwCSMem.EncyptCSMem.DecryptModeUnicast = ENCRYPT_NONE;	Adapter->MainMemAddress->HwCSMem.EncyptCSMem.DecryptModeMulticast = ENCRYPT_NONE;}void WtWlanHwMacAddrInit( IN PWT_ADAPTER Adapter){	//78	WT_MEMCOPY( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.MacAddress,  		Adapter->MacParameter.dot11MacAddress,6 );	//80		WT_MEMCOPY( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress,  		Adapter->MacParameter.mBssid,6 );	/*	WT_MEMSET( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, 				6, 0xFF );	*/			}void Test64BitReadAndWrite( IN PWT_ADAPTER Adapter){	unsigned long long systime, testa;	testa = 0x0123456789abcdefull;		WRITE64_WT4( OFFSET_SYSTIMER, 0x0123456789abcdefull );	READ64_WT4( OFFSET_SYSTIMER, systime);	Dump((char *)(&systime), 8, TRUE, 1 );	Dump((char *)(&testa), 8, TRUE, 1 );}void WtWlanHwTimerInit( IN PWT_ADAPTER Adapter){	//a8	WRITE64_WT4( OFFSET_SYSTIMER, 0x12ull );// random data to initialize		//b8	Adapter->MainMemAddress->HwCSMem.ProtoParam.HwNavTime = host2ieee16( 0x201 );}void WtWlanHwIntInit( IN PWT_ADAPTER Adapter){#if 0#define MASK_INT_ALL			0X01#define MASK_INT_TXEND			0X02#define MASK_INT_RXSTART		0X04#define MASK_INT_RXEND			0X08#define MASK_INT_TIMER_BEACON	0X10

⌨️ 快捷键说明

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