-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index 74c99c7..1c17172 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp @@ -984,128 +984,131 @@ ushort Keyboard::constoe(const ushort c) { case 0x11bc: return 0x110b; case 0x11bd: return 0x110c; case 0x11be: return 0x110e; case 0x11bf: return 0x110f; case 0x11c0: return 0x1110; case 0x11c1: return 0x1111; case 0x11c2: return 0x1112; default: return 0; } } } // Keys::Keys {{{1 Keys::Keys() { Config *config = new Config ("multikey"); config->setGroup( "keymaps" ); QString map = config->readEntry( "current" ); delete config; if (map.isNull() || !(QFile(map).exists())) { Config *config = new Config("locale"); config->setGroup( "Language" ); QString l = config->readEntry( "Language" , "en" ); delete config; map = QPEApplication::qpeDir() + "/share/multikey/" + l + ".keymap"; } setKeysFromFile(map); } Keys::Keys(const char * filename) { setKeysFromFile(filename); } // Keys::setKeysFromFile {{{2 void Keys::setKeysFromFile(const char * filename) { QFile f(filename); if (f.open(IO_ReadOnly)) { QTextStream t(&f); int row; int qcode; ushort unicode; int width; QString buf; QString comment; char * xpm[256]; //couldnt be larger than that... could it? QPixmap *xpm2pix = 0; buf = t.readLine(); while (buf) { + // get rid of comments + buf.replace(QRegExp("#.*$", FALSE, FALSE), ""); + // key definition if (buf.contains(QRegExp("^\\d+\\s+[0-1a-fx]+", FALSE, FALSE))) { // no $1 type referencing!!! this implementation of regexp sucks // dont know of any sscanf() type funcs in Qt lib QTextStream tmp (buf, IO_ReadOnly); tmp >> row >> qcode >> unicode >> width >> comment; buf = t.readLine(); int xpmLineCount = 0; xpm2pix = 0; // erase blank space while (buf.contains(QRegExp("^\\s*$")) && buf) buf = t.readLine(); while (buf.contains(QRegExp("^\\s*\".*\""))) { QString xpmBuf = buf.stripWhiteSpace(); xpm[xpmLineCount] = new char [xpmBuf.length()]; int j = 0; for (ushort i = 0; i < xpmBuf.length(); i++) { if (xpmBuf[i].latin1() != '"') { ((char *)xpm[xpmLineCount])[j] = xpmBuf.at(i).latin1(); j++; } } // have to close that facker up ((char *)xpm[xpmLineCount])[j] = '\0'; xpmLineCount++; buf = t.readLine(); } if (xpmLineCount) { xpm2pix = new QPixmap((const char **)xpm); for (int i = 0; i < xpmLineCount; i++) delete [] (xpm[i]); } setKey(row, qcode, unicode, width, xpm2pix); } // shift map else if (buf.contains(QRegExp("^[0-9a-fx]+\\s+[0-9a-fx]+\\s*$", FALSE, FALSE))) { QTextStream tmp (buf, IO_ReadOnly); ushort lower, shift; tmp >> lower >> shift; shiftMap.insert(lower, shift); buf = t.readLine(); } // meta key map else if (buf.contains(QRegExp("^\\s*m\\s+[0-9a-fx]+\\s+[0-9a-fx]+\\s*$", FALSE, FALSE))) { QTextStream tmp (buf, IO_ReadOnly); ushort lower, shift; |