tkeyboarddirect.cpp.svn-base

来自「ffshow源码」· SVN-BASE 代码 · 共 1,032 行 · 第 1/3 页

SVN-BASE
1,032
字号
          deciD->cyclePresets(i->idff==idff_presetNext?1:-1);          if (shortosd)           {            char_t msg[256],preset[256];            deciD->getActivePresetName(preset,256);            tsprintf(msg,_l("preset: %s"),preset);            deciV->shortOSDmessage(msg,30);           }          return;         }       }  } prevT=prevT0;     }void Tkeyboard::processState(void){ for (int k=0;k<256;k++)  if (dprevkeys[k]!=dkeys[k])   if (dkeys[k])    keydown=k;   else    if (k==keydown) keydown=-1; if (keydown!=-1) keyProc(keydown,false);}Tkeyboard::Tkeyboard(TintStrColl *Icoll,IffdshowBase *Ideci):TdirectInput(Icoll,_l("keys"),GUID_SysKeyboard,c_dfDIKeyboard,dkeys,dprevkeys,sizeof(dkeys),Ideci){ static const TintOptionT<Tkeyboard> iopts[]=  {   IDFF_isKeys       ,&Tkeyboard::is       ,0,0,_l(""),0,     _l("keyboard"),0,   IDFF_keysAlways   ,&Tkeyboard::always   ,0,0,_l(""),0,     _l("keysAlways"),0,   IDFF_keysShortOsd ,&Tkeyboard::shortosd ,0,0,_l(""),0,     _l("showKeysMessages"),1,   IDFF_keysSeek1    ,&Tkeyboard::seek1    ,1,10000,_l(""),0,     _l("keysSeek1"),15,   IDFF_keysSeek2    ,&Tkeyboard::seek2    ,1,10000,_l(""),0,     _l("keysSeek2"),60,   0  }; addOptions(iopts);  setOnChange(IDFF_isKeys,this,&Tkeyboard::onChange);  prevT=0; initKeysParam(); load(); memset(dkeys,0,sizeof(dkeys));memset(dprevkeys,0,sizeof(dprevkeys));}Tkeyboard::~Tkeyboard(){ unhook();}void Tkeyboard::reset(void){ always=0; shortosd=1; seek1=15; seek2=60; keysParams.clear(); initKeysParam();}void Tkeyboard::hook(void){ keydown=-1; TdirectInput::hook();}void Tkeyboard::keyDown(int key){ dkeys[vk2dik[key&255]]=1; keyProc(vk2dik[key&255],true);}void Tkeyboard::keyUp(int key){ dkeys[vk2dik[key&255]]=0;}void Tkeyboard::exportGMLkey(int &id,FILE *f,TkeysParams::const_iterator k,const char *second){ fprintf(f,"    <Command Name=\"%s\" Identifier=\"%i\" Enabled=\"TRUE\">\n",second?second:(const char*)text<char>(k->descr),id++); fprintf(f,"      <StateCount>1</StateCount>\n"); fprintf(f,"      <StateBegin>1</StateBegin>\n"); fprintf(f,"      <StateCurrent>1</StateCurrent>\n"); fprintf(f,"      <StateInvert>FALSE</StateInvert>\n"); fprintf(f,"      <OSD>FALSE</OSD>\n"); fprintf(f,"      <Target_class>ffdshow_remote_class</Target_class>\n"); fprintf(f,"      <Submatch>FALSE</Submatch>\n"); fprintf(f,"      <Topmost>FALSE</Topmost>\n"); fprintf(f,"      <MatchBy>2</MatchBy>\n"); fprintf(f,"      <OneMatch>FALSE</OneMatch>\n"); fprintf(f,"      <UseVar>TRUE</UseVar>\n"); fprintf(f,"      <MatchHidden>TRUE</MatchHidden>\n"); fprintf(f,"      <MatchNum>1</MatchNum>\n"); fprintf(f,"      <ActionType>6</ActionType>\n"); fprintf(f,"      <ActionSubType>1</ActionSubType>\n"); if (keyInfo[k->key&255].girderok)  fprintf(f,"      <sValue1>%s</sValue1>\n",(const char*)text<char>(keyInfo[k->key&255].keyname)); else  fprintf(f,"      <iValue1>%i</iValue1>\n",k->key); fprintf(f,"      <sValue2>FALSE</sValue2>\n"); fprintf(f,"      <bValue1>TRUE</bValue1>\n"); fprintf(f,"      <bValue2>%s</bValue2>\n",second?"TRUE":"FALSE"); fprintf(f,"      <bValue3>TRUE</bValue3>\n"); fprintf(f,"    </Command>\n");}bool Tkeyboard::exportToGML(const char_t *flnm){ FILE *f=fopen(flnm,_l("wt"));if (!f) return false; fprintf(f,"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); fprintf(f,"<Girder>\n"); int id=2; fprintf(f,"  <Group Name=\"ffdshow\" Identifier=\"%i\" Enabled=\"TRUE\">\n",id++); for (TkeysParams::const_iterator k=keysParams.begin()+3;k!=keysParams.end();k++)  {   exportGMLkey(id,f,k);   switch(k->idff)    {     case idff_forward:exportGMLkey(id,f,k,"Long seek forward");break;     case idff_backward:exportGMLkey(id,f,k,"Long seek backward");break;     case IDFF_isOSD:exportGMLkey(id,f,k,"Cycle OSD presets");break;     case IDFF_isSubtitles:exportGMLkey(id,f,k,"Cycle subtitle languages");break;     case idff_subdelaySub:exportGMLkey(id,f,k,"Descrease subtitles font size");break;     case idff_subdelayAdd:exportGMLkey(id,f,k,"Increase subtitles font size");break;     case idff_subposSub:exportGMLkey(id,f,k,"Subtitles horizontal position decrease");break;     case idff_subposAdd:exportGMLkey(id,f,k,"Subtitles horizontal position increase");break;    }  } fprintf(f,"  </Group>\n"); fprintf(f,"</Girder>\n"); fclose(f); return true;}const Tkeyboard::TkeyInfo Tkeyboard::keyInfo[256]={false,/*00*/_l("none"),false,/*01*/_l("VK_LBUTTON"),false,/*02*/_l("VK_RBUTTON"),false,/*03*/_l("VK_CANCEL"),false,/*04*/_l("VK_MBUTTON"),false,/*05*/_l("VK_XBUTTON1"),false,/*06*/_l("VK_XBUTTON2"),false,/*07*/_l(""),false,/*08*/_l("VK_BACK"),false,/*09*/_l("tab"),false,/*0A*/_l(""),false,/*0B*/_l(""),false,/*0C*/_l("VK_CLEAR"),false,/*0D*/_l("enter"),false,/*0E*/_l(""),false,/*0F*/_l(""),false,/*10*/_l("shift"),false,/*11*/_l("ctrl"),false,/*12*/_l("alt"),false,/*13*/_l("VK_PAUSE"),false,/*14*/_l("caps lock"),false,/*15*/_l("VK_HANGUL"),false,/*16*/_l(""),false,/*17*/_l("VK_JUNJA"),false,/*18*/_l("VK_FINAL"),false,/*19*/_l("VK_HANJA"),false,/*1A*/_l(""),false,/*1B*/_l("esc"),false,/*1C*/_l("VK_CONVERT"),false,/*1D*/_l("VK_NONCONVERT"),false,/*1E*/_l("VK_ACCEPT"),false,/*1F*/_l("VK_MODECHANGE"),false,/*20*/_l("space"),false,/*21*/_l("page up"),false,/*22*/_l("page down"),false,/*23*/_l("end"),false,/*24*/_l("home"),false,/*25*/_l("left arrow"),false,/*26*/_l("up arrow"),false,/*27*/_l("right arrow"),false,/*28*/_l("down arrow"),false,/*29*/_l("VK_SELECT"),false,/*2A*/_l("VK_PRINT"),false,/*2B*/_l("VK_EXECUTE"),false,/*2C*/_l("VK_SNAPSHOT"),false,/*2D*/_l("insert"),false,/*2E*/_l("delete"),false,/*2F*/_l("VK_HELP"),true ,/*30*/_l("0"),true ,/*31*/_l("1"),true ,/*32*/_l("2"),true ,/*33*/_l("3"),true ,/*34*/_l("4"),true ,/*35*/_l("5"),true ,/*36*/_l("6"),true ,/*37*/_l("7"),true ,/*38*/_l("8"),true ,/*39*/_l("9"),false,/*3A*/_l(""),false,/*3B*/_l(""),false,/*3C*/_l(""),false,/*3D*/_l(""),false,/*3E*/_l(""),false,/*3F*/_l(""),false,/*40*/_l(""),true ,/*41*/_l("A"),true ,/*42*/_l("B"),true ,/*43*/_l("C"),true ,/*44*/_l("D"),true ,/*45*/_l("E"),true ,/*46*/_l("F"),true ,/*47*/_l("G"),true ,/*48*/_l("H"),true ,/*49*/_l("I"),true ,/*4A*/_l("J"),true ,/*4B*/_l("K"),true ,/*4C*/_l("L"),true ,/*4D*/_l("M"),true ,/*4E*/_l("N"),true ,/*4F*/_l("O"),true ,/*50*/_l("P"),true ,/*51*/_l("Q"),true ,/*52*/_l("R"),true ,/*53*/_l("S"),true ,/*54*/_l("T"),true ,/*55*/_l("U"),true ,/*56*/_l("V"),true ,/*57*/_l("W"),true ,/*58*/_l("X"),true ,/*59*/_l("Y"),true ,/*5A*/_l("Z"),false,/*5B*/_l("left win"),false,/*5C*/_l("right win"),false,/*5D*/_l("menu key"),false,/*5E*/_l(""),false,/*5F*/_l("VK_SLEEP"),false,/*60*/_l("numpad 0"),false,/*61*/_l("numpad 1"),false,/*62*/_l("numpad 2"),false,/*63*/_l("numpad 3"),false,/*64*/_l("numpad 4"),false,/*65*/_l("numpad 5"),false,/*66*/_l("numpad 6"),false,/*67*/_l("numpad 7"),false,/*68*/_l("numpad 8"),false,/*69*/_l("numpad 9"),false,/*6A*/_l("numpad *"),false,/*6B*/_l("numpad +"),false,/*6C*/_l("VK_SEPARATOR"),false,/*6D*/_l("numpad -"),false,/*6E*/_l("VK_DECIMAL"),false,/*6F*/_l("numpad /"),false,/*70*/_l("F1"),false,/*71*/_l("F2"),false,/*72*/_l("F3"),false,/*73*/_l("F4"),false,/*74*/_l("F5"),false,/*75*/_l("F6"),false,/*76*/_l("F7"),false,/*77*/_l("F8"),false,/*78*/_l("F9"),false,/*79*/_l("F10"),false,/*7A*/_l("F11"),false,/*7B*/_l("F12"),false,/*7C*/_l("F13"),false,/*7D*/_l("F14"),false,/*7E*/_l("F15"),false,/*7F*/_l("F16"),false,/*80*/_l("F17"),false,/*81*/_l("F18"),false,/*82*/_l("F19"),false,/*83*/_l("F20"),false,/*84*/_l("F21"),false,/*85*/_l("F22"),false,/*86*/_l("F23"),false,/*87*/_l("F24"),false,/*88*/_l(""),false,/*89*/_l(""),false,/*8A*/_l(""),false,/*8B*/_l(""),false,/*8C*/_l(""),false,/*8D*/_l(""),false,/*8E*/_l(""),false,/*8F*/_l(""),false,/*90*/_l("numlock"),false,/*91*/_l("VK_SCROLL"),false,/*92*/_l("VK_OEM_NEC_EQUAL"),false,/*93*/_l(""),false,/*94*/_l(""),false,/*95*/_l(""),false,/*96*/_l(""),false,/*97*/_l(""),false,/*98*/_l(""),false,/*99*/_l(""),false,/*9A*/_l(""),false,/*9B*/_l(""),false,/*9C*/_l(""),false,/*9D*/_l(""),false,/*9E*/_l(""),false,/*9F*/_l(""),false,/*A0*/_l("VK_LSHIFT"),false,/*A1*/_l("VK_RSHIFT"),false,/*A2*/_l("VK_LCONTROL"),false,/*A3*/_l("VK_RCONTROL"),false,/*A4*/_l("VK_LMENU"),false,/*A5*/_l("VK_RMENU"),false,/*A6*/_l("VK_BROWSER_BACK"),false,/*A7*/_l("VK_BROWSER_FORWARD"),false,/*A8*/_l("VK_BROWSER_REFRESH"),false,/*A9*/_l("VK_BROWSER_STOP"),false,/*AA*/_l("VK_BROWSER_SEARCH"),false,/*AB*/_l("VK_BROWSER_FAVORITES"),false,/*AC*/_l("VK_BROWSER_HOME"),false,/*AD*/_l("VK_VOLUME_MUTE"),false,/*AE*/_l("VK_VOLUME_DOWN"),false,/*AF*/_l("VK_VOLUME_UP"),false,/*B0*/_l("VK_MEDIA_NEXT_TRACK"),false,/*B1*/_l("VK_MEDIA_PREV_TRACK"),false,/*B2*/_l("VK_MEDIA_STOP"),false,/*B3*/_l("VK_MEDIA_PLAY_PAUSE"),false,/*B4*/_l("VK_LAUNCH_MAIL"),false,/*B5*/_l("VK_LAUNCH_MEDIA_SELECT"),false,/*B6*/_l("VK_LAUNCH_APP1"),false,/*B7*/_l("VK_LAUNCH_APP2"),false,/*B8*/_l(""),false,/*B9*/_l(""),true ,/*BA*/_l(";"),true ,/*BB*/_l("="),true ,/*BC*/_l(","),true ,/*BD*/_l("-"),true ,/*BE*/_l("."),true ,/*BF*/_l("/"),true ,/*C0*/_l("`"),false,/*C1*/_l(""),false,/*C2*/_l(""),false,/*C3*/_l(""),false,/*C4*/_l(""),false,/*C5*/_l(""),false,/*C6*/_l(""),false,/*C7*/_l(""),false,/*C8*/_l(""),false,/*C9*/_l(""),false,/*CA*/_l(""),false,/*CB*/_l(""),false,/*CC*/_l(""),false,/*CD*/_l(""),false,/*CE*/_l(""),

⌨️ 快捷键说明

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