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

📄 keytrans.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    int mode = 0;    int mask = 0;    while (sym == SYMOpr && (!strcmp(res.latin1(),"+") || !strcmp(res.latin1(),"-")))    {      bool on = !strcmp(res.latin1(),"+");      getSymbol();      // mode name      assertSyntax(sym == SYMName, "Name expected") // No tr      assertSyntax(syms->modsyms[res], "Unknown mode name") // No tr      int bits = (int)syms->modsyms[res]-1;      if (mask & (1 << bits))      {        fprintf(stderr,"%s(%d,%d): mode name used multible times.\n",path.ascii(),slinno,scolno); // No tr      }      else      {        mode |= (on << bits);        mask |= (1 << bits);      }//printf(", mode %s(%d) %s",res.latin1(),(int)syms->modsyms[res]-1,on?"on":"off");      getSymbol();    }    assertSyntax(sym == SYMOpr && !strcmp(res.latin1(),":"), "':' expected") // No tr    getSymbol();    // string or command    assertSyntax(sym == SYMName || sym == SYMString,"Command or string expected") // No tr    int cmd = 0;    if (sym == SYMName)    {      assertSyntax(syms->oprsyms[res], "Unknown operator name") // No tr      cmd = (int)syms->oprsyms[res]-1;//printf(": do %s(%d)",res.latin1(),(int)syms->oprsyms[res]-1);    }    if (sym == SYMString)    {      cmd = CMD_send;//printf(": send");//for (unsigned i = 0; i < res.length(); i++)//printf(" %02x(%c)",res.latin1()[i],res.latin1()[i]>=' '?res.latin1()[i]:'?');    }//printf(". summary %04x,%02x,%02x,%d\n",key,mode,mask,cmd);    KeyTrans::KeyEntry* ke = kt->addEntry(slinno,key,mode,mask,cmd,res);    if (ke)    {      fprintf(stderr,"%s(%d): keystroke already assigned in line %d.\n",path.ascii(),slinno,ke->ref); // No tr    }    getSymbol();    assertSyntax(sym == SYMEol, "Unexpected text") // No tr    goto Loop;  }  if (sym == SYMEol)  {    getSymbol();    goto Loop;  }  assertSyntax(sym == SYMEof, "Undecodable Line") // No tr  buf->close();  return;ERROR:  while (sym != SYMEol && sym != SYMEof) getSymbol(); // eoln  goto Loop;}KeyTrans* KeyTrans::defaultKeyTrans(){  QCString txt =#include "default.keytab.h"  ;  QBuffer buf(txt);  return fromDevice("[buildin]",buf);}KeyTrans* KeyTrans::fromFile(const char* path){  QFile file(path);  return fromDevice(path,file);}// local symbol tables ---------------------------------------------------------------------// material needed for parsing the config file.// This is incomplete work.void KeyTransSymbols::defKeySym(const char* key, int val){  keysyms.insert(key,(QObject*)(val+1));}void KeyTransSymbols::defOprSym(const char* key, int val){  oprsyms.insert(key,(QObject*)(val+1));}void KeyTransSymbols::defModSym(const char* key, int val){  modsyms.insert(key,(QObject*)(val+1));}void KeyTransSymbols::defOprSyms(){  // Modifier  defOprSym("scrollLineUp",  CMD_scrollLineUp  );  defOprSym("scrollLineDown",CMD_scrollLineDown);  defOprSym("scrollPageUp",  CMD_scrollPageUp  );  defOprSym("scrollPageDown",CMD_scrollPageDown);  defOprSym("emitSelection", CMD_emitSelection );  defOprSym("prevSession",   CMD_prevSession   );  defOprSym("nextSession",   CMD_nextSession   );}void KeyTransSymbols::defModSyms(){  // Modifier  defModSym("Shift",      BITS_Shift        ); // No tr  defModSym("Control",    BITS_Control      ); // No tr  defModSym("Alt",        BITS_Alt          );  // Modes  defModSym("BsHack",     BITS_BsHack       ); // deprecated  defModSym("Ansi",       BITS_Ansi         ); // No tr  defModSym("NewLine",    BITS_NewLine      );  defModSym("AppCuKeys",  BITS_AppCuKeys    );}void KeyTransSymbols::defKeySyms(){  // Grey keys  defKeySym("Escape",       Qt::Key_Escape      ); // No tr  defKeySym("Tab",          Qt::Key_Tab         ); // No tr  defKeySym("Backtab",      Qt::Key_Backtab     );  defKeySym("Backspace",    Qt::Key_Backspace   ); // No tr  defKeySym("Return",       Qt::Key_Return      ); // No tr  defKeySym("Enter",        Qt::Key_Enter       ); // No tr  defKeySym("Insert",       Qt::Key_Insert      ); // No tr  defKeySym("Delete",       Qt::Key_Delete      ); // No tr  defKeySym("Pause",        Qt::Key_Pause       ); // No tr  defKeySym("Print",        Qt::Key_Print       ); // No tr  defKeySym("SysReq",       Qt::Key_SysReq      );  defKeySym("Home",         Qt::Key_Home        ); // No tr  defKeySym("End",          Qt::Key_End         ); // No tr  defKeySym("Left",         Qt::Key_Left        ); // No tr  defKeySym("Up",           Qt::Key_Up          ); // No tr  defKeySym("Right",        Qt::Key_Right       ); // No tr  defKeySym("Down",         Qt::Key_Down        ); // No tr  defKeySym("Prior",        Qt::Key_Prior       ); // No tr  defKeySym("Next",         Qt::Key_Next        ); // No tr  defKeySym("Shift",        Qt::Key_Shift       ); // No tr  defKeySym("Control",      Qt::Key_Control     ); // No tr  defKeySym("Meta",         Qt::Key_Meta        ); // No tr  defKeySym("Alt",          Qt::Key_Alt         );  defKeySym("CapsLock",     Qt::Key_CapsLock    );  defKeySym("NumLock",      Qt::Key_NumLock     );  defKeySym("ScrollLock",   Qt::Key_ScrollLock  );  defKeySym("F1",           Qt::Key_F1          );  defKeySym("F2",           Qt::Key_F2          );  defKeySym("F3",           Qt::Key_F3          );  defKeySym("F4",           Qt::Key_F4          );  defKeySym("F5",           Qt::Key_F5          );  defKeySym("F6",           Qt::Key_F6          );  defKeySym("F7",           Qt::Key_F7          );  defKeySym("F8",           Qt::Key_F8          );  defKeySym("F9",           Qt::Key_F9          );  defKeySym("F10",          Qt::Key_F10         );  defKeySym("F11",          Qt::Key_F11         );  defKeySym("F12",          Qt::Key_F12         );  defKeySym("F13",          Qt::Key_F13         );  defKeySym("F14",          Qt::Key_F14         );  defKeySym("F15",          Qt::Key_F15         );  defKeySym("F16",          Qt::Key_F16         );  defKeySym("F17",          Qt::Key_F17         );  defKeySym("F18",          Qt::Key_F18         );  defKeySym("F19",          Qt::Key_F19         );  defKeySym("F20",          Qt::Key_F20         );  defKeySym("F21",          Qt::Key_F21         );  defKeySym("F22",          Qt::Key_F22         );  defKeySym("F23",          Qt::Key_F23         );  defKeySym("F24",          Qt::Key_F24         );  defKeySym("F25",          Qt::Key_F25         );  defKeySym("F26",          Qt::Key_F26         );  defKeySym("F27",          Qt::Key_F27         );  defKeySym("F28",          Qt::Key_F28         );  defKeySym("F29",          Qt::Key_F29         );  defKeySym("F30",          Qt::Key_F30         );  defKeySym("F31",          Qt::Key_F31         );  defKeySym("F32",          Qt::Key_F32         );  defKeySym("F33",          Qt::Key_F33         );  defKeySym("F34",          Qt::Key_F34         );  defKeySym("F35",          Qt::Key_F35         );  defKeySym("Super_L",      Qt::Key_Super_L     );  defKeySym("Super_R",      Qt::Key_Super_R     );  defKeySym("Menu",         Qt::Key_Menu        ); // No tr  defKeySym("Hyper_L",      Qt::Key_Hyper_L     );  defKeySym("Hyper_R",      Qt::Key_Hyper_R     );  // Regular keys  defKeySym("Space",        Qt::Key_Space       ); // No tr  defKeySym("Exclam",       Qt::Key_Exclam      );  defKeySym("QuoteDbl",     Qt::Key_QuoteDbl    );  defKeySym("NumberSign",   Qt::Key_NumberSign  );  defKeySym("Dollar",       Qt::Key_Dollar      ); // No tr  defKeySym("Percent",      Qt::Key_Percent     ); // No tr  defKeySym("Ampersand",    Qt::Key_Ampersand   ); // No tr  defKeySym("Apostrophe",   Qt::Key_Apostrophe  ); // No tr  defKeySym("ParenLeft",    Qt::Key_ParenLeft   );  defKeySym("ParenRight",   Qt::Key_ParenRight  );  defKeySym("Asterisk",     Qt::Key_Asterisk    ); // No tr  defKeySym("Plus",         Qt::Key_Plus        ); // No tr  defKeySym("Comma",        Qt::Key_Comma       ); // No tr  defKeySym("Minus",        Qt::Key_Minus       ); // No tr  defKeySym("Period",       Qt::Key_Period      ); // No tr  defKeySym("Slash",        Qt::Key_Slash       ); // No tr  defKeySym("0",            Qt::Key_0           );  defKeySym("1",            Qt::Key_1           );  defKeySym("2",            Qt::Key_2           );  defKeySym("3",            Qt::Key_3           );  defKeySym("4",            Qt::Key_4           );  defKeySym("5",            Qt::Key_5           );  defKeySym("6",            Qt::Key_6           );  defKeySym("7",            Qt::Key_7           );  defKeySym("8",            Qt::Key_8           );  defKeySym("9",            Qt::Key_9           );  defKeySym("Colon",        Qt::Key_Colon       ); // No tr  defKeySym("Semicolon",    Qt::Key_Semicolon   ); // No tr  defKeySym("Less",         Qt::Key_Less        ); // No tr  defKeySym("Equal",        Qt::Key_Equal       ); // No tr  defKeySym("Greater",      Qt::Key_Greater     ); // No tr  defKeySym("Question",     Qt::Key_Question    ); // No tr  defKeySym("At",           Qt::Key_At          ); // No tr  defKeySym("A",            Qt::Key_A           );  defKeySym("B",            Qt::Key_B           );  defKeySym("C",            Qt::Key_C           );  defKeySym("D",            Qt::Key_D           );  defKeySym("E",            Qt::Key_E           );  defKeySym("F",            Qt::Key_F           );  defKeySym("G",            Qt::Key_G           );  defKeySym("H",            Qt::Key_H           );  defKeySym("I",            Qt::Key_I           );  defKeySym("J",            Qt::Key_J           );  defKeySym("K",            Qt::Key_K           );  defKeySym("L",            Qt::Key_L           );  defKeySym("M",            Qt::Key_M           );  defKeySym("N",            Qt::Key_N           );  defKeySym("O",            Qt::Key_O           );  defKeySym("P",            Qt::Key_P           );  defKeySym("Q",            Qt::Key_Q           );  defKeySym("R",            Qt::Key_R           );  defKeySym("S",            Qt::Key_S           );  defKeySym("T",            Qt::Key_T           );  defKeySym("U",            Qt::Key_U           );  defKeySym("V",            Qt::Key_V           );  defKeySym("W",            Qt::Key_W           );  defKeySym("X",            Qt::Key_X           );  defKeySym("Y",            Qt::Key_Y           );  defKeySym("Z",            Qt::Key_Z           );  defKeySym("BracketLeft",  Qt::Key_BracketLeft );  defKeySym("Backslash",    Qt::Key_Backslash   ); // No tr  defKeySym("BracketRight", Qt::Key_BracketRight);  defKeySym("AsciiCircum",  Qt::Key_AsciiCircum );  defKeySym("Underscore",   Qt::Key_Underscore  ); // No tr  defKeySym("QuoteLeft",    Qt::Key_QuoteLeft   );  defKeySym("BraceLeft",    Qt::Key_BraceLeft   );  defKeySym("Bar",          Qt::Key_Bar         ); // No tr  defKeySym("BraceRight",   Qt::Key_BraceRight  );  defKeySym("AsciiTilde",   Qt::Key_AsciiTilde  );}KeyTransSymbols::KeyTransSymbols(){  defModSyms();  defOprSyms();  defKeySyms();}// Global material -----------------------------------------------------------static int keytab_serial = 0; //FIXME: remove,localizestatic QIntDict<KeyTrans> * numb2keymap = 0L;static QDict<KeyTrans>    * path2keymap = 0L;KeyTrans* KeyTrans::find(int numb){  KeyTrans* res = numb2keymap->find(numb);  return res ? res : numb2keymap->find(0);}KeyTrans* KeyTrans::find(const char* path){  KeyTrans* res = path2keymap->find(path);  return res ? res : numb2keymap->find(0);}int KeyTrans::count(){  return numb2keymap->count();}void KeyTrans::addKeyTrans(){  this->numb = keytab_serial ++;  numb2keymap->insert(numb,this);  path2keymap->insert(path,this);}void KeyTrans::loadAll(){  if (!numb2keymap)    numb2keymap = new QIntDict<KeyTrans>;  if (!path2keymap)    path2keymap = new QDict<KeyTrans>;  if (!syms)    syms = new KeyTransSymbols;  defaultKeyTrans()->addKeyTrans();  QString path = QPEApplication::qpeDir() + "etc/keytabs";  QDir dir(path);  QStringList lst = dir.entryList("*.keytab");  for(QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {      QFile file(path + "/" + *it);    KeyTrans* sc = KeyTrans::fromDevice(*it, file);    if (sc) {	sc->addKeyTrans();    }  }}// Debugging material -----------------------------------------------------------/*void TestTokenizer(QBuffer &buf){  // opening sequence  buf.open(IO_ReadOnly);  cc = buf.getch();  lineno = 1;  // Test tokenizer  while (getSymbol(buf)) ReportToken();  buf.close();}void test(){  // Opening sequence  QCString txt =#include "default.keytab.h"  ;  QBuffer buf(txt);  if (0) TestTokenizer(buf);  if (1) { KeyTrans kt; kt.scanTable(buf); }}*/

⌨️ 快捷键说明

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