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

📄 directinput8.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
 ****************************************************************************)

  GUID_ConstantForce : TGUID = '{13541C20-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_RampForce     : TGUID = '{13541C21-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Square        : TGUID = '{13541C22-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Sine          : TGUID = '{13541C23-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Triangle      : TGUID = '{13541C24-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_SawtoothUp    : TGUID = '{13541C25-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_SawtoothDown  : TGUID = '{13541C26-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Spring        : TGUID = '{13541C27-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Damper        : TGUID = '{13541C28-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Inertia       : TGUID = '{13541C29-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Friction      : TGUID = '{13541C2A-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_CustomForce   : TGUID = '{13541C2B-8E33-11D0-9AD0-00A0C9A06E35}';


//
// Interfaces
//

type

  IDirectInputEffect = interface (IUnknown)
    ['{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}']
    (** IDirectInputEffect methods ***)
    function Initialize(hinst : THandle; const dwVersion : LongWord; const rguid : TGUID) : HResult; stdcall;
    function GetEffectGuid(out pguid : TGUID) : HResult;  stdcall;
    function GetParameters(var peff : TDIEffect; const dwFlags : LongWord) : HResult;  stdcall;
    function SetParameters(var peff : TDIEffect; const dwFlags : LongWord) : HResult;  stdcall;
    function Start(const dwIterations : LongWord; const dwFlags : LongWord) : HResult;  stdcall;
    function Stop : HResult;  stdcall;
    function GetEffectStatus(out pdwFlags : LongWord) : HResult;  stdcall;
    function Download : HResult;  stdcall;
    function Unload : HResult;  stdcall;
    function Escape(var pesc : PDIEffEscape) : HResult;  stdcall;
  end;

  TDIEnumDeviceObjectsCallbackA = function(var lpddoi : TDIDeviceObjectInstanceA; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDeviceObjectsCallbackW = function(var lpddoi : TDIDeviceObjectInstanceW; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDeviceObjectsCallback = function(var lpddoi : TDIDeviceObjectInstance; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDeviceObjectsProc = TDIEnumDeviceObjectsCallback;

  TDIEnumEffectsCallbackA = function(var pdei : TDIEffectInfoA; pvRef : Pointer) : Integer; stdcall;
  TDIEnumEffectsCallbackW = function(var pdei : TDIEffectInfoW; pvRef : Pointer) : Integer; stdcall;
  TDIEnumEffectsCallback = function(var pdei : TDIEffectInfo; pvRef : Pointer) : Integer; stdcall;
  TDIEnumEffectsProc = TDIEnumEffectsCallback;

  TDIEnumCreatedEffectObjectsCallback = function(peff : IDirectInputEffect; pvRev : Pointer) : Integer; stdcall;
  TDIEnumCreatedEffectObjectsProc = TDIEnumCreatedEffectObjectsCallback;

  TDIEnumEffectsInFileCallback = function(var lpDiFileEf : TDIFileEffect; pvRef : Pointer) : Integer; stdcall;

  IDirectInputDevice8A = interface (IUnknown)
    ['{54D41080-DC15-4833-A41B-748F73A38179}']
    (*** IDirectInputDevice8A methods ***)
    function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
    function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackA; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
    function GetProperty(const rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
    function SetProperty(const rguidProp : PGUID; const pdiph : TDIPropHeader) : HResult; stdcall;
    function Acquire : HResult; stdcall;
    function Unacquire : HResult; stdcall;
    function GetDeviceState(const cbData : LongWord; lpvData : Pointer) : HResult; stdcall;
    function GetDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const dwFlags : LongWord) : HResult; stdcall;
    function SetDataFormat(lpdf : PDIDataFormat) : HResult; stdcall;
    function SetEventNotification(const hEvent : THandle) : HResult; stdcall;
    function SetCooperativeLevel(const hwnd : HWND; const dwFlags : LongWord) : HResult; stdcall;
    function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceA; const dwObj, dwHow : LongWord) : HResult; stdcall;
    function GetDeviceInfo(var pdidi : TDIDeviceInstanceA) : HResult; stdcall;
    function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
    function Initialize(const hinst : THandle; const dwVersion : LongWord; const rguid : TGUID) : HResult; stdcall;


    function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; out ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult; stdcall;
    function EnumEffects(lpCallback: TDIEnumEffectsCallbackA; pvRef : Pointer; const dwEffType : LongWord) : HResult; stdcall;
    function GetEffectInfo(var pdei : TDIEffectInfoA; const rguid : TGUID) : HResult; stdcall;
    function GetForceFeedbackState(var pdwOut : LongWord) : HResult; stdcall;
    function SendForceFeedbackCommand(const dwFlags : LongWord) : HResult; stdcall;
    function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : Pointer; const fl : LongWord) : HResult; stdcall;
    function Escape(var pesc : TDIEffEscape) : HResult; stdcall;
    function Poll : HResult; stdcall;
    function SendDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const fl : LongWord) : HResult; stdcall;

    function EnumEffectsInFile(const lpszFileName : PChar; pec : TDIEnumEffectsInFileCallback; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
    function WriteEffectToFile(const lpszFileName : PChar; const dwEntries : LongWord; rgDIFileEft : PDIFileEffect; const dwFlags : LongWord) : HResult; stdcall;

    function BuildActionMap(var lpdiaf : TDIActionFormatA; const lpszUserName : PAnsiChar; const dwFlags : LongWord) : HResult; stdcall;
    function SetActionMap(var lpdiActionFormat : TDIActionFormatA; const lptszUserName : PAnsiChar; const dwFlags : LongWord) : HResult; stdcall;
    function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderA) : HResult; stdcall;
  end;

  IDirectInputDevice8W = interface (IUnknown)
    ['{54D41081-DC15-4833-A41B-748F73A38179}']
    (*** IDirectInputDevice8A methods ***)
    function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
    function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackW; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
    function GetProperty(const rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
    function SetProperty(const rguidProp : PGUID; const pdiph : TDIPropHeader) : HResult; stdcall;
    function Acquire : HResult; stdcall;
    function Unacquire : HResult; stdcall;
    function GetDeviceState(const cbData : LongWord; lpvData : Pointer) : HResult; stdcall;
    function GetDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const dwFlags : LongWord) : HResult; stdcall;
    function SetDataFormat(lpdf : PDIDataFormat) : HResult; stdcall;
    function SetEventNotification(const hEvent : THandle) : HResult; stdcall;
    function SetCooperativeLevel(const hwnd : HWND; const dwFlags : LongWord) : HResult; stdcall;
    function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceW; const dwObj, dwHow : LongWord) : HResult; stdcall;
    function GetDeviceInfo(var pdidi : TDIDeviceInstanceW) : HResult; stdcall;
    function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
    function Initialize(const hinst : THandle; const dwVersion : LongWord; const rguid : TGUID) : HResult; stdcall;

    function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; out ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult;  stdcall;
    function EnumEffects(lpCallback : TDIEnumEffectsCallbackW; pvRef : Pointer; const dwEffType : LongWord) : HResult;  stdcall;
    function GetEffectInfo(var pdei : TDIEffectInfoW; const rguid : TGUID) : HResult;  stdcall;
    function GetForceFeedbackState(var pdwOut : LongWord) : HResult;  stdcall;
    function SendForceFeedbackCommand(const dwFlags : LongWord) : HResult;  stdcall;
    function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : Pointer; const fl : LongWord) : HResult;  stdcall;
    function Escape(var pesc : TDIEffEscape) : HResult;  stdcall;
    function Poll : HResult;  stdcall;
    function SendDeviceData(const cbObjectData : LongWord; rgdod : PDIDeviceObjectData; var pdwInOut : LongWord; const fl : LongWord) : HResult;  stdcall;

    function EnumEffectsInFile(const lpszFileName : PWideChar; pec : TDIEnumEffectsInFileCallback; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
    function WriteEffectToFile(const lpszFileName : PWideChar; const dwEntries : LongWord; rgDIFileEft : PDIFileEffect; const dwFlags : LongWord) : HResult; stdcall;

    function BuildActionMap(var lpdiaf : TDIActionFormatW; const lpszUserName : PWideChar; const dwFlags : LongWord) : HResult; stdcall;
    function SetActionMap(var lpdiActionFormat : TDIActionFormatW; const lptszUserName : PWideChar; const  dwFlags : LongWord) : HResult; stdcall;
    function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderW) : HResult; stdcall;
  end;


{$IFDEF UNICODE}
  IDirectInputDevice8 = IDirectInputDevice8W;
{$ELSE}
  IDirectInputDevice8 = IDirectInputDevice8A;
{$ENDIF}


  TDIEnumDevicesCallbackA = function (var lpddi : TDIDeviceInstanceA; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesCallbackW = function (var lpddi : TDIDeviceInstanceW; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesCallback = function (var lpddi : TDIDeviceInstance; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesProc = TDIEnumDevicesCallback;

  TDIConfigureDevicesCallback = function(lpDDSTarget : IUnknown; pvRef : Pointer) : Integer; stdcall;
  TDIConfigureDevicesProc = TDIConfigureDevicesCallback;

  TDIEnumDevicesBySemanticsCallbackA = function(var lpddi : TDIDeviceInstanceA; out lpdid : IDirectInputDevice8A; const dwFlags, dwRemaining : LongWord; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesBySemanticsCallbackW = function(var lpddi : TDIDeviceInstanceW; out lpdid : IDirectInputDevice8W; const dwFlags, dwRemaining : LongWord; pvRef : Pointer) : Integer; stdcall;

{$IFDEF UNICODE}
  TDIEnumDevicesBySemanticsCallback = TDIEnumDevicesBySemanticsCallbackW;
{$ELSE}
  TDIEnumDevicesBySemanticsCallback = TDIEnumDevicesBySemanticsCallbackA;
{$ENDIF}
  TDIEnumDevicesBySemanticsProc = TDIEnumDevicesBySemanticsCallback;


  IDirectInput8A = interface (IUnknown)
    ['{BF798030-483A-4DA2-AA99-5D64ED369700}']
    {*** IDirectInput8A methods ***}
    function CreateDevice(const rguid : TGUID; out lplpDirectInputDevice : IDirectInputDevice8A; pUnkOuter : IUnknown) : HResult; stdcall;
    function EnumDevices(const dwDevType : LongWord; lpCallback : TDIEnumDevicesCallbackA; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
    function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
    function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
    function Initialize(const hinst : THandle; const dwVersion : LongWord) : HResult; stdcall;
    function FindDevice(const rguidClass : TGUID; ptszName : PAnsiChar; out pguidInstance : TGUID): HResult; stdcall;
    function EnumDevicesBySemantics(ptszUserName : PAnsiChar; const lpdiActionFormat : TDIActionFormatA; lpCallback : TDIEnumDevicesBySemanticsCallbackA; pvRef : Pointer; const dwFlags : LongWord)  : HResult; stdcall;
    function ConfigureDevices(lpdiCallback : TDIConfigureDevicesCallback; const lpdiCDParams : TDIConfigureDevicesParamsA; const dwFlags : LongWord; pvRefData : Pointer) : HResult; stdcall;
  end;

  IDirectInput8W = interface (IUnknown)
    ['{BF798031-483A-4DA2-AA99-5D64ED369700}']
    {*** IDirectInput8W methods ***}
    function CreateDevice(const rguid : TGUID; out lplpDirectInputDevice : IDirectInputDevice8W; pUnkOuter : IUnknown) : HResult; stdcall;
    function EnumDevices(const dwDevType : LongWord; lpCallback : TDIEnumDevicesCallbackW; pvRef : Pointer; const dwFlags : LongWord) : HResult; stdcall;
    function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
    function RunControlPanel(const hwndOwner : HWND; const dwFlags : LongWord) : HResult; stdcall;
    function Initialize(const hinst : THandle; const dwVersion : LongWord) : HResult; stdcall;
    function FindDevice(const rguidClass : TGUID; ptszName : PWideChar; out pguidInstance : TGUID): HResult; stdcall;
    function EnumDevicesBySemantics(ptszUserName : PWideChar; const lpdiActionFormat : TDIActionFormatW; lpCallback : TDIEnumDevicesBySemanticsCallbackW; pvRef : Pointer; const dwFlags : LongWord)  : HResult; stdcall;
    function ConfigureDevices(lpdiCallback : TDIConfigureDevicesCallback; const lpdiCDParams : TDIConfigureDevicesParamsW; const dwFlags : LongWord; pvRefData : Pointer) : HResult; stdcall;
  end;

{$IFDEF UNICODE}
  IDirectInput8 = IDirectInput8W;
{$ELSE}
  IDirectInput8 = IDirectInput8A;
{$ENDIF}


type
  IID_IDirectInput8W = IDirectInput8W;
  IID_IDirectInput8A = IDirectInput8A;
  IID_IDirectInput8  = IDirectInput8;

  IID_IDirectInputDevice8W = IDirectInputDevice8W;
  IID_IDirectInputDevice8A = IDirectInputDevice8A;
  IID_IDirectInputDevice8  = IDirectInputDevice8;

  IID_IDirectInputEffect = IDirectInputEffect;


const
  DIEFT_ALL                   = $00000000;

  DIEFT_CONSTANTFORCE         = $00000001;
  DIEFT_RAMPFORCE             = $00000002;
  DIEFT_PERIODIC              = $00000003;
  DIEFT_CONDITION             = $00000004;
  DIEFT_CUSTOMFORCE           = $00000005;
  DIEFT_HARDWARE              = $000000FF;

  DIEFT_FFATTACK              = $00000200;
  DIEFT_FFFADE                = $00000400;
  DIEFT_SATURATION            = $00000800;
  DIEFT_POSNEGCOEFFICIENTS    = $00001000;
  DIEFT_POSNEGSATURATION      = $00002000;
  DIEFT_DEADBAND              = $00004000;
  DIEFT_STARTDELAY            = $00008000;

  DI_DEGREES                  =     100;
  DI_FFNOMINALMAX             =   10000;
  DI_SECONDS                  = 1000000;


  DIEFF_OBJECTIDS             = $00000001;
  DIEFF_OBJECTOFFSETS         = $00000002;
  DIEFF_CARTESIAN             = $00000010;
  DIEFF_POLAR                 = $00000020;
  DIEFF_SPHERICAL             = $00000040;

  DIEP_DURATION               = $00000001;
  DIEP_SAMPLEPERIOD           = $00000002;
  DIEP_GAIN                   = $00000004;
  DIEP_TRIGGERBUTTON          = $00000008;
  DIEP_TRIGGERREPEATINTERVAL  = $00000010;
  DIEP_AXES                   = $00000020;
  DIEP_DIRECTION              = $00000040;
  DIEP_ENVELOPE               = $00000080;
  DIEP_TYPESPECIFICPARAMS     = $00000100;
{$IFDEF DIRECTX5}
  DIEP_ALLPARAMS              = $000001FF;
{$ELSE}
  DIEP_STARTDELAY             = $00000200;
  DIEP_ALLPARAMS_DX5          = $000001FF;
  DIEP_ALLPARAMS              = $000003FF;
{$ENDIF}
  DIEP_START                  = $20000000;
  DIEP_NORESTART              = $40000000;
  DIEP_NODOWNLOAD             = $80000000;
  DIEB_NOTRIGGER              = $FFFFFFFF;

  DIES_SOLO                   = $00000001;
  DIES_NODOWNLOAD             = $80000000;

  DIEGES_PLAYING              = $00000001;
  DIEGES_EMULATED             = $00000002;

  DIDEVTYPE_DEVICE   = 1;
  DIDEVTYPE_MOUSE    = 2;
  DIDEVTYPE_KEYBOARD = 3;
  DIDEVTYPE_JOYSTICK = 4;

  DI8DEVCLASS_ALL          = 0;
  DI8DEVCLASS_DEVICE       = 1;
  DI8DEVCLASS_Pointer      = 2;
  DI8DEVCLASS_KEYBOARD     = 3;
  DI8DEVCLASS_GAMECTRL     = 4;

  DI8DEVTYPE_DEVICE        = $11;
  DI8DEVTYPE_MOUSE         = $12;
  DI8DEVTYPE_KEYBOARD      = $13;
  DI8DEVTYPE_JOYSTICK      = $14;
  DI8DEVTYPE_GAMEPAD       = $15;
  DI8DEVTYPE_DRIVING       = $16;
  DI8DEVTYPE_FLIGHT        = $17;
  DI8DEVTYPE_1STPERSON     = $18;
  DI8DEVTYPE_DEVICECTRL    = $19;
  DI8DEVTYPE_SCREENPointer = $1A;
  DI8DEVTYPE_REMOTE        = $1B;
  DI8DEVTYPE_SUPPLEMENTAL  = $1C;

  DIDEVTYPE_HID = $00010000;

  DIDEVTYPEMOUSE_UNKNOWN        = 1;
  DIDEVTYPEMOUSE_TRADITIONAL    = 2;
  DIDEVTYPEMOUSE_FINGERSTICK    = 3;
  DIDEVTYPEMOUSE_TOUCHPAD       = 4;
  DIDEVTYPEMOUSE_TRACKBALL      = 5;

  DIDEVTYPEKEYBOARD_UNKNOWN     = 0;
  DIDEVTYPEKEYBOARD_PCXT        = 1;
  DIDEVTYPEKEYBOARD_OLIVETTI    = 2;
  DIDEVTYPEKEYBOARD_PCAT        = 3;
  DIDEVTYPEKEYBOARD_PCENH       = 4;
  DIDEVTYPEKEYBOARD_NOKIA1050   = 5;
  DIDEVTYPEKEYBOARD_NOKIA9140   = 6;
  DIDEVTYPEKEYBOARD_NEC98       = 7;
  DIDEVTYPEKEYBOARD_NEC98LAPTOP = 8;
  DIDEVTYPEKEYBOARD_NEC98106    = 9;
  DIDEVTYPEKEYBOARD_JAPAN106    = 10;
  DIDEVTYPEKEYBOARD_JAPANAX     = 11;
  DIDEVTYPEKEYBOARD_J3100       = 12;

  DIDEVTYPEJOYSTICK_UNKNOWN     = 1;
  DIDEVTYPEJOYSTICK_TRADITIONAL = 2;
  DIDEVTYPEJOYSTICK_FLIGHTSTICK = 3;
  DIDEVTYPEJOYSTICK_GAMEPAD     = 4;
  DIDEVTYPEJOYSTICK_RUDDER      = 5;
  DIDEVTYPEJOYSTICK_WHEEL       = 6;
  DIDEVTYPEJOYSTICK_HEADTRACKER = 7;

  DI8DEVTYPEMOUSE_UNKNOWN     = 1;
  DI8DEVTYPEMOUSE_TRADITIONAL = 2;
  DI8DEVTYPEMOUSE_FINGERSTICK = 3;
  DI8DEVTYPEMOUSE_TOUCHPAD    = 4;
  DI8DEVTYPEMOUSE_TRACKBALL   = 5;
  DI8DEVTYPEMOUSE_ABSOLUTE    = 6;

  DI8DEVTYPEKEYBOARD_UNKNOWN     = 0;
  DI8DEVTYPEKEYBOARD_PCXT        = 1;
  DI8DEVTYPEKEYBOARD_OLIVETTI    = 2;
  DI8DEVTYPEKEYBOARD_PCAT        = 3;
  DI8DEVTYPEKEYBOARD_PCENH       = 4;
  DI8DEVTYPEKEYBOARD_NOKIA1050   = 5;
  DI8DEVTYPEKEYBOARD_NOKIA9140   = 6;
  DI8DEVTYPEKEYBOARD_NEC98       = 7;
  DI8DEVTYPEKEYBOARD_NEC98LAPTOP = 8;
  DI8DEVTYPEKEYBOARD_NEC98106    = 9;
  DI8DEVTYPEKEYBOARD_JAPAN106    = 10;
  DI8DEVTYPEKEYBOARD_JAPANAX     = 11;
  DI8DEVTYPEKEYBOARD_J3100       = 12;

  DI8DEVTYPE_LIMITEDGAMESUBTYPE = 1;

  DI8DEVTYPEJOYSTICK_LIMITED  = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  DI8DEVTYPEJOYSTICK_STANDARD = 2;

  DI8DEVTYPEGAMEPAD_LIMITED  = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  DI8DEVTYPEGAMEPAD_STANDARD = 2;
  DI8DEVTYPEGAMEPAD_TILT     = 3;

  DI8DEVTYPEDRIVING_LIMITED         = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  DI8DEVTYPEDRIVING_COMBINEDPEDALS  = 2;
  DI8DEVTYPEDRIVING_DUALPEDALS      = 3;
  DI8DEVTYPEDRIVING_THREEPEDALS     = 4;
  DI8DEVTYPEDRIVING_HANDHELD        = 5;

⌨️ 快捷键说明

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