📄 esram.c
字号:
/*
* $Id$
*/
#include "mpg123.h"
#include "mpglib.h"
#include "huffman.h"
//add data***************************
int bitindex; //in mpg123.c
unsigned char *bufpointer;
//extern nframe;
//real win1[4][36];
//volatile int * const mmacbase = (int *)0x41003ff0;
//volatile int * const mrambase = (int *)0x41003000;
volatile int * const mmacbase = (int *)0x11003ff0;
volatile int * const mrambase = (int *)0x11003000;
volatile int * const mmamoder = mmacbase;
volatile int * const mmastatr = mmacbase + 0x1;
volatile int * const mmabufxar = mmacbase + 0x2;
volatile int * const mmabufzar = mmacbase + 0x3;
#if 0
real /*const*/ win[4][36] = { // FLOAT24
{
0x000843a9, 0x001b71e0, 0x00338fe2, 0x00535b97, 0x00800000, 0x00c48ce2, 0x013dc0c8, 0x0254fac1,
0x07be80a6, 0xf78c7a66, 0xfcf6004c, 0xfe0d3a45, 0xfe866e2b, 0xfecafb0d, 0xfef79f75, 0xff176b2b,
0xff2f892d, 0xff42b764, 0xff528db3, 0xff600a32, 0xff6bd44e, 0xff765fbe, 0xff800000, 0xff88f3e7,
0xff916cc2, 0xff999313, 0xffa189e2, 0xffa9712c, 0xffb167fa, 0xffb98e4c, 0xffc20726, 0xffcafb0d,
0xffd49b50, 0xffdf26bf, 0xffeaf0dc, 0xfff86d5b,
},
{
0x000843a9, 0x001b71e0, 0x00338fe2, 0x00535b97, 0x00800000, 0x00c48ce2, 0x013dc0c8, 0x0254fac1,
0x07be80a6, 0xf78c7a66, 0xfcf6004c, 0xfe0d3a45, 0xfe866e2b, 0xfecafb0d, 0xfef79f75, 0xff176b2b,
0xff2f892d, 0xff42b764, 0xff526366, 0xff5ea8d8, 0xff683b58, 0xff6fb1f3, 0xff75742d, 0xff79c9cd,
0xff7e038d, 0xff88b916, 0xff9a5aa2, 0xffb2011a, 0xffce9807, 0xffeee313, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
},
{
0x001b71e0, 0x00800000, 0x0254fac1, 0xfcf6004c, 0xfecafb0d, 0xff2f892d, 0xff600a32, 0xff800000,
0xff999313, 0xffb167fa, 0xffcafb0d, 0xffeaf0dc, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
},
{
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004d3116, 0x017746ea,
0x06fa6529, 0xf6e7ecac, 0xfc76004c, 0xfdb5aba3, 0xfe5655b5, 0xfeb18517, 0xfeeacafb, 0xff11c58b,
0xff2dbcad, 0xff42893a, 0xff528db3, 0xff600a32, 0xff6bd44e, 0xff765fbe, 0xff800000, 0xff88f3e7,
0xff916cc2, 0xff999313, 0xffa189e2, 0xffa9712c, 0xffb167fa, 0xffb98e4c, 0xffc20726, 0xffcafb0d,
0xffd49b50, 0xffdf26bf, 0xffeaf0dc, 0xfff86d5b,
},
};
#endif
real /*const*/ COS9[9] = { // FLOAT24
0x01000000, 0x00fc1c5c, 0x00f08fb2, 0x00ddb3d7, 0x00c41b7d, 0x00a48dba, 0x00800000, 0x00578ea1, 0x002c7434,
};
real /*const*/ aa_cs[8] = { // FLOAT24
0x00db84a8, 0x00e1b9d7, 0x00f31adc, 0x00fbba81, 0x00feda41, 0x00ffc8fc, 0x00fff964, 0x00ffff8d,
};
real /*const*/ aa_ca[8] = { // FLOAT24
0xff7c4a02, 0xff873c93, 0xffafc67f, 0xffd16e23, 0xffe7c9fd, 0xfff58348, 0xfffc5d7c, 0xffff0d85,
};
real /*const*/ tfcos36[9] = { // FLOAT24
0x00807d2b, 0x008483ee, 0x008d3b7c, 0x009c4257, 0x00b504f3, 0x00df2943, 0x012edfb1, 0x01ee8dd4, 0x05bca2a2,
};
unsigned char rval;
#if 0
struct newhuff ht[] =
{
{ /* 0 */ 0 , tab0 } ,
{ /* 2 */ 0 , tab1 } ,
{ /* 3 */ 0 , tab2 } ,
{ /* 3 */ 0 , tab3 } ,
{ /* 0 */ 0 , tab0 } ,
{ /* 4 */ 0 , tab5 } ,
{ /* 4 */ 0 , tab6 } ,
{ /* 6 */ 0 , tab7 } ,
{ /* 6 */ 0 , tab8 } ,
{ /* 6 */ 0 , tab9 } ,
{ /* 8 */ 0 , tab10 } ,
{ /* 8 */ 0 , tab11 } ,
{ /* 8 */ 0 , tab12 } ,
{ /* 16 */ 0 , tab13 } ,
{ /* 0 */ 0 , tab0 } ,
{ /* 16 */ 0 , tab15 } ,
{ /* 16 */ 1 , tab16 } ,
{ /* 16 */ 2 , tab16 } ,
{ /* 16 */ 3 , tab16 } ,
{ /* 16 */ 4 , tab16 } ,
{ /* 16 */ 6 , tab16 } ,
{ /* 16 */ 8 , tab16 } ,
{ /* 16 */ 10, tab16 } ,
{ /* 16 */ 13, tab16 } ,
{ /* 16 */ 4 , tab24 } ,
{ /* 16 */ 5 , tab24 } ,
{ /* 16 */ 6 , tab24 } ,
{ /* 16 */ 7 , tab24 } ,
{ /* 16 */ 8 , tab24 } ,
{ /* 16 */ 9 , tab24 } ,
{ /* 16 */ 11, tab24 } ,
{ /* 16 */ 13, tab24 }
};
#endif
real *pnts[5] = {cos64, cos32, cos16, cos8, cos4};
#if 0
real /*const*/ ispow[130] = { // FLOAT21 !!!!!!!!!!!!!!
0x00000000, 0x00200000, 0x0050a28b, 0x008a74b9, 0x00cb2ff5, 0x0111989d, 0x015ce31c, 0x01ac7f20,
0x02000000, 0x0257106b, 0x02b16b4a, 0x030ed74b, 0x036f23fa, 0x03d227bd, 0x0437be65, 0x049fc823,
0x050a28be, 0x0576c6f5, 0x05e58c0b, 0x06566361, 0x06c93a2e, 0x073dff3e, 0x07b4a2bc, 0x082d160a,
0x08a74b9b, 0x092336d5, 0x09a0cbf6, 0x0a200000, 0x0aa0c8a1, 0x0b231c29, 0x0ba6f175, 0x0c2c3fe6,
0x0cb2ff52, 0x0d3b2800, 0x0dc4b298, 0x0e4f9821, 0x0edbd1f8, 0x0f6959c5, 0x0ff8297f, 0x10883b5c,
0x111989d6, 0x11ac0f9e, 0x123fc7a1, 0x12d4acfc, 0x136abaff, 0x1401ed25, 0x149a3f18, 0x1533aca7,
0x15ce31c8, 0x1669ca96, 0x1706734d, 0x17a4284a, 0x1842e608, 0x18e2a91f, 0x19836e43, 0x1a253242,
0x1ac7f203, 0x1b6baa83, 0x1c1058d7, 0x1cb5fa2b, 0x1d5c8bbe, 0x1e040ae1, 0x1eac74fa, 0x1f55c782,
0x20000000, 0x20ab1c0d, 0x21571953, 0x2203f589, 0x22b1ae76, 0x236041f0, 0x240fadd7, 0x24bff01b,
0x257106b8, 0x2622efb5, 0x26d5a925, 0x27893125, 0x283d85e0, 0x28f2a588, 0x29a88e5a, 0x2a5f3e9e,
0x2b16b4a3, 0x2bceeec2, 0x2c87eb5f, 0x2d41a8e2, 0x2dfc25bf, 0x2eb7606f, 0x2f735776, 0x3030095d,
0x30ed74b3, 0x31ab9812, 0x326a7217, 0x332a0167, 0x33ea44ae, 0x34ab3a9d, 0x356ce1ec, 0x362f3958,
0x36f23fa5, 0x37b5f39a, 0x387a5405, 0x393f5fbb, 0x3a051592, 0x3acb7469, 0x3b927b20, 0x3c5a28a0,
0x3d227bd2, 0x3deb73a7, 0x3eb50f12, 0x3f7f4d0d, 0x404a2c92, 0x4115aca2, 0x41e1cc42, 0x42ae8a7a,
0x437be655, 0x4449dee4, 0x45187337, 0x45e7a268, 0x46b76b8e, 0x4787cdc8, 0x4858c835, 0x492a59f9,
0x49fc823c, 0x4acf4026, 0x4ba292e4, 0x4c7679a5, 0x4d4af39d, 0x4e200000, 0x4ef59e05, 0x4fcbcce8,
0x50a28be6, 0x5179da3d,
};
#endif
real /*const*/ gainpow2[4] = {0x01000000, 0x01306fe0, 0x016a09e6, 0x01ae89f9, }; // FLOAT24
//real b0x[16];
//**********************************
#define GET1BIT() {\
rval = *bufpointer << bitindex;\
bitindex++;\
bufpointer += (bitindex>>3);\
bitindex &= 7;\
rval= rval>>7;\
}
#define WRITE_SAMPLE(samples,clip,sum) \
{ \
ctmp = (unsigned char *)(samples); \
*ctmp++ = (sum>>8)&0xff; \
*ctmp = (sum)&0xff; \
}
#define NOP_OPERATIOM() \
{ \
__asm{ \
NOP; \
NOP; \
NOP; \
NOP; \
NOP; \
NOP; \
}; \
}
//#define SOFT_DOT_MUL;
//#define MUL_ADD_SOFT1;
//#define MUL_ADD_SOFT2;
//#define MUL_ADD_SOFT3;
//#define MUL_ADD_SOFT4;
//#define MUL_ADD_SOFT5;
//#define MUL_ADD_SOFT6;
//#define MUL_ADD_SOFT7;
int synth_1to1(real *bandPtr,int channel,unsigned char *out,int *pnt)
{
register const int step = 2;
int bo;
short *samples = (short *) (out + *pnt);
unsigned char *ctmp;
real bufs[0x40];
real *b1 = bufs;
real *b2 = &bufs[0x20];
register real *costab;
real *b0,(*buf)[0x110];
int clip = 0;
int bo1;
real *out0, *out1;
bo = gmp.synth_bo;
if(!channel) {
bo--;
bo &= 0xf;
buf = gmp.synth_buffs[0];
}
else {
samples++;
buf = gmp.synth_buffs[1];
}
if(bo & 0x1) {
b0 = buf[0];
bo1 = bo;
out0 = buf[1]+((bo+1)&0xf);
out1 = buf[0]+bo;
}
else {
b0 = buf[1];
bo1 = bo+1;
out0 = buf[0]+bo;
out1 = buf[1]+bo+1;
}
{
{
costab = pnts[0];
b1[0x00] = bandPtr[0x00] + bandPtr[0x1F];
b1[0x1F] = bandPtr[0x00] - bandPtr[0x1F];
b1[0x01] = bandPtr[0x01] + bandPtr[0x1E];
b1[0x1E] = bandPtr[0x01] - bandPtr[0x1E];
b1[0x02] = bandPtr[0x02] + bandPtr[0x1D];
b1[0x1D] = bandPtr[0x02] - bandPtr[0x1D];
b1[0x03] = bandPtr[0x03] + bandPtr[0x1C];
b1[0x1C] = bandPtr[0x03] - bandPtr[0x1C];
b1[0x04] = bandPtr[0x04] + bandPtr[0x1B];
b1[0x1B] = bandPtr[0x04] - bandPtr[0x1B];
b1[0x05] = bandPtr[0x05] + bandPtr[0x1A];
b1[0x1A] = bandPtr[0x05] - bandPtr[0x1A];
b1[0x06] = bandPtr[0x06] + bandPtr[0x19];
b1[0x19] = bandPtr[0x06] - bandPtr[0x19];
b1[0x07] = bandPtr[0x07] + bandPtr[0x18];
b1[0x18] = bandPtr[0x07] - bandPtr[0x18];
b1[0x08] = bandPtr[0x08] + bandPtr[0x17];
b1[0x17] = bandPtr[0x08] - bandPtr[0x17];
b1[0x09] = bandPtr[0x09] + bandPtr[0x16];
b1[0x16] = bandPtr[0x09] - bandPtr[0x16];
b1[0x0A] = bandPtr[0x0A] + bandPtr[0x15];
b1[0x15] = bandPtr[0x0A] - bandPtr[0x15];
b1[0x0B] = bandPtr[0x0B] + bandPtr[0x14];
b1[0x14] = bandPtr[0x0B] - bandPtr[0x14];
b1[0x0C] = bandPtr[0x0C] + bandPtr[0x13];
b1[0x13] = bandPtr[0x0C] - bandPtr[0x13];
b1[0x0D] = bandPtr[0x0D] + bandPtr[0x12];
b1[0x12] = bandPtr[0x0D] - bandPtr[0x12];
b1[0x0E] = bandPtr[0x0E] + bandPtr[0x11];
b1[0x11] = bandPtr[0x0E] - bandPtr[0x11];
b1[0x0F] = bandPtr[0x0F] + bandPtr[0x10];
b1[0x10] = bandPtr[0x0F] - bandPtr[0x10];
#ifdef SOFT_DOT_MUL
MMA__SOFT_CALC(&b1[0x10], &b1[0x10], costab, 0x8083f000);
#else
// mma(&b1[0x10], &b1[0x10], costab, 0x8083f000);
*mmabufzar = (int)&b1[0x10];
*mmabufxar = (int)&b1[0x10];
*mmamoder = 0x8083f000 | (((int)(costab) >> 2) & 0x3ff);
#endif
}
{
costab = pnts[1];
b2[0x00] = b1[0x00] + b1[0x0F];
b2[0x0F] = b1[0x00] - b1[0x0F];
b2[0x01] = b1[0x01] + b1[0x0E];
b2[0x0E] = b1[0x01] - b1[0x0E];
b2[0x02] = b1[0x02] + b1[0x0D];
b2[0x0D] = b1[0x02] - b1[0x0D];
b2[0x03] = b1[0x03] + b1[0x0C];
b2[0x0C] = b1[0x03] - b1[0x0C];
b2[0x04] = b1[0x04] + b1[0x0B];
b2[0x0B] = b1[0x04] - b1[0x0B];
b2[0x05] = b1[0x05] + b1[0x0A];
b2[0x0A] = b1[0x05] - b1[0x0A];
b2[0x06] = b1[0x06] + b1[0x09];
b2[0x09] = b1[0x06] - b1[0x09];
b2[0x07] = b1[0x07] + b1[0x08];
b2[0x08] = b1[0x07] - b1[0x08];
b2[0x10] = b1[0x10] + b1[0x1F];
b2[0x1F] = b1[0x1F] - b1[0x10];
b2[0x11] = b1[0x11] + b1[0x1E];
b2[0x1E] = b1[0x1E] - b1[0x11];
b2[0x12] = b1[0x12] + b1[0x1D];
b2[0x1D] = b1[0x1D] - b1[0x12];
b2[0x13] = b1[0x13] + b1[0x1C];
b2[0x1C] = b1[0x1C] - b1[0x13];
b2[0x14] = b1[0x14] + b1[0x1B];
b2[0x1B] = b1[0x1B] - b1[0x14];
b2[0x15] = b1[0x15] + b1[0x1A];
b2[0x1A] = b1[0x1A] - b1[0x15];
b2[0x16] = b1[0x16] + b1[0x19];
b2[0x19] = b1[0x19] - b1[0x16];
b2[0x17] = b1[0x17] + b1[0x18];
b2[0x18] = b1[0x18] - b1[0x17];
#ifdef SOFT_DOT_MUL
MMA__SOFT_CALC(&b2[0x08], &b2[0x08], costab, 0x8083ec00);
#else
// mma(&b2[0x08], &b2[0x08], costab, 0x8083ec00);
*mmabufzar = (int)&b2[0x08];
*mmabufxar = (int)&b2[0x08];
*mmamoder = 0x8083ec00 | (((int)(costab) >> 2) & 0x3ff);
#endif
}
{
costab = pnts[2];
b1[0x00] = b2[0x00] + b2[0x07];
b1[0x07] = b2[0x00] - b2[0x07];
b1[0x01] = b2[0x01] + b2[0x06];
b1[0x06] = b2[0x01] - b2[0x06];
b1[0x02] = b2[0x02] + b2[0x05];
b1[0x05] = b2[0x02] - b2[0x05];
b1[0x03] = b2[0x03] + b2[0x04];
b1[0x04] = b2[0x03] - b2[0x04];
b1[0x08] = b2[0x08] + b2[0x0F];
b1[0x0F] = b2[0x0F] - b2[0x08];
b1[0x09] = b2[0x09] + b2[0x0E];
b1[0x0E] = b2[0x0E] - b2[0x09];
b1[0x0A] = b2[0x0A] + b2[0x0D];
b1[0x0D] = b2[0x0D] - b2[0x0A];
b1[0x0B] = b2[0x0B] + b2[0x0C];
b1[0x0C] = b2[0x0C] - b2[0x0B];
b1[0x10] = b2[0x10] + b2[0x17];
b1[0x17] = b2[0x10] - b2[0x17];
b1[0x11] = b2[0x11] + b2[0x16];
b1[0x16] = b2[0x11] - b2[0x16];
b1[0x12] = b2[0x12] + b2[0x15];
b1[0x15] = b2[0x12] - b2[0x15];
b1[0x13] = b2[0x13] + b2[0x14];
b1[0x14] = b2[0x13] - b2[0x14];
b1[0x18] = b2[0x18] + b2[0x1F];
b1[0x1F] = b2[0x1F] - b2[0x18];
b1[0x19] = b2[0x19] + b2[0x1E];
b1[0x1E] = b2[0x1E] - b2[0x19];
b1[0x1A] = b2[0x1A] + b2[0x1D];
b1[0x1D] = b2[0x1D] - b2[0x1A];
b1[0x1B] = b2[0x1B] + b2[0x1C];
b1[0x1C] = b2[0x1C] - b2[0x1B];
#ifdef SOFT_DOT_MUL
MMA__SOFT_CALC(&b1[0x04], &b1[0x04], costab, 0x8083e800);
#else
// mma(&b1[0x04], &b1[0x04], costab, 0x8083e800);
*mmabufzar = (int)&b1[0x04];
*mmabufxar = (int)&b1[0x04];
*mmamoder = 0x8083e800 | (((int)(costab) >> 2) & 0x3ff);
#endif
}
{
costab = pnts[3];
b2[0x00] = b1[0x00] + b1[0x03];
b2[0x03] = b1[0x00] - b1[0x03];
b2[0x01] = b1[0x01] + b1[0x02];
b2[0x02] = b1[0x01] - b1[0x02];
b2[0x04] = b1[0x04] + b1[0x07];
b2[0x07] = b1[0x07] - b1[0x04];
b2[0x05] = b1[0x05] + b1[0x06];
b2[0x06] = b1[0x06] - b1[0x05];
b2[0x08] = b1[0x08] + b1[0x0B];
b2[0x0B] = b1[0x08] - b1[0x0B];
b2[0x09] = b1[0x09] + b1[0x0A];
b2[0x0A] = b1[0x09] - b1[0x0A];
b2[0x0C] = b1[0x0C] + b1[0x0F];
b2[0x0F] = b1[0x0F] - b1[0x0C];
b2[0x0D] = b1[0x0D] + b1[0x0E];
b2[0x0E] = b1[0x0E] - b1[0x0D];
b2[0x10] = b1[0x10] + b1[0x13];
b2[0x13] = b1[0x10] - b1[0x13];
b2[0x11] = b1[0x11] + b1[0x12];
b2[0x12] = b1[0x11] - b1[0x12];
b2[0x14] = b1[0x14] + b1[0x17];
b2[0x17] = b1[0x17] - b1[0x14];
b2[0x15] = b1[0x15] + b1[0x16];
b2[0x16] = b1[0x16] - b1[0x15];
b2[0x18] = b1[0x18] + b1[0x1B];
b2[0x1B] = b1[0x18] - b1[0x1B];
b2[0x19] = b1[0x19] + b1[0x1A];
b2[0x1A] = b1[0x19] - b1[0x1A];
b2[0x1C] = b1[0x1C] + b1[0x1F];
b2[0x1F] = b1[0x1F] - b1[0x1C];
b2[0x1D] = b1[0x1D] + b1[0x1E];
b2[0x1E] = b1[0x1E] - b1[0x1D];
#ifdef SOFT_DOT_MUL
MMA__SOFT_CALC(&b2[0x02], &b2[0x02], costab, 0x8083e400);
#else
// mma(&b2[0x02], &b2[0x02], costab, 0x8083e400);
*mmabufzar = (int)&b2[0x02];
*mmabufxar = (int)&b2[0x02];
*mmamoder = 0x8083e400 | (((int)(costab) >> 2) & 0x3ff);
#endif
//sature(b2);
}
{
costab = pnts[4];
b1[0x00] = b2[0x00] + b2[0x01];
b1[0x01] = b2[0x00] - b2[0x01];
b1[0x02] = b2[0x02] + b2[0x03];
b1[0x03] = b2[0x03] - b2[0x02];
b1[0x04] = b2[0x04] + b2[0x05];
b1[0x05] = b2[0x04] - b2[0x05];
b1[0x06] = b2[0x06] + b2[0x07];
b1[0x07] = b2[0x07] - b2[0x06];
b1[0x08] = b2[0x08] + b2[0x09];
b1[0x09] = b2[0x08] - b2[0x09];
b1[0x0A] = b2[0x0A] + b2[0x0B];
b1[0x0B] = b2[0x0B] - b2[0x0A];
b1[0x0C] = b2[0x0C] + b2[0x0D];
b1[0x0D] = b2[0x0C] - b2[0x0D];
b1[0x0E] = b2[0x0E] + b2[0x0F];
b1[0x0F] = b2[0x0F] - b2[0x0E];
b1[0x10] = b2[0x10] + b2[0x11];
b1[0x11] = b2[0x10] - b2[0x11];
b1[0x12] = b2[0x12] + b2[0x13];
b1[0x13] = b2[0x13] - b2[0x12];
b1[0x14] = b2[0x14] + b2[0x15];
b1[0x15] = b2[0x14] - b2[0x15];
b1[0x16] = b2[0x16] + b2[0x17];
b1[0x17] = b2[0x17] - b2[0x16];
b1[0x18] = b2[0x18] + b2[0x19];
b1[0x19] = b2[0x18] - b2[0x19];
b1[0x1A] = b2[0x1A] + b2[0x1B];
b1[0x1B] = b2[0x1B] - b2[0x1A];
b1[0x1C] = b2[0x1C] + b2[0x1D];
b1[0x1D] = b2[0x1C] - b2[0x1D];
b1[0x1E] = b2[0x1E] + b2[0x1F];
b1[0x1F] = b2[0x1F] - b2[0x1E];
#ifdef SOFT_DOT_MUL
MMA__SOFT_CALC(&b1[0x01], &b1[0x01], costab, 0x8083e000);
#else
// mma(&b1[0x01], &b1[0x01], costab, 0x8083e000);
*mmabufzar = (int)&b1[0x01];
*mmabufxar = (int)&b1[0x01];
*mmamoder = 0x8083e000 | (((int)(costab) >> 2) & 0x3ff);
{
int i;
for(i=0;i<32;i++){
if(b1[i]>0x7fffff)
b1[i]=0x7fffff;
else if(b1[i]<-0x7fffff)
b1[i]=-0x7fffff;
}
}
#endif
b1[0x02] += b1[0x03];
b1[0x06] += b1[0x07];
b1[0x04] += b1[0x06];
b1[0x06] += b1[0x05];
b1[0x05] += b1[0x07];
b1[0x0A] += b1[0x0B];
b1[0x0E] += b1[0x0F];
b1[0x0C] += b1[0x0E];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -