author | simon <simon> | 2002-11-22 10:56:30 (UTC) |
---|---|---|
committer | simon <simon> | 2002-11-22 10:56:30 (UTC) |
commit | 480284c491e26427c630131a25e56f9ed1d129b2 (patch) (side-by-side diff) | |
tree | 3bdd60afe34e8c466fbea92dcf89fcab381b110d /inputmethods/kjumpx/keyboard.cpp | |
parent | 772c1321e4e95a415b9de700c3474f81f98b5482 (diff) | |
download | opie-480284c491e26427c630131a25e56f9ed1d129b2.zip opie-480284c491e26427c630131a25e56f9ed1d129b2.tar.gz opie-480284c491e26427c630131a25e56f9ed1d129b2.tar.bz2 |
- properly namespace the input methods. fixes symbols clashes at run-time
with names like 'Keyboard' or 'KeyboardConfig' . the qcom interface
objects are in an anonymous namespace now and the actual keyboard
implementations are in Dvorak, JumpX, etc. namespaces.
What's left is to solve the symbol clashes of the multiply compiled
pickboard classes. I'll leave that one (as part of the patch posted
yesterday) for another day for review. This part (namespacing) sounds like
a safe bet to me though, so comitting now. (got no comments anyway)
Diffstat (limited to 'inputmethods/kjumpx/keyboard.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | inputmethods/kjumpx/keyboard.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/inputmethods/kjumpx/keyboard.cpp b/inputmethods/kjumpx/keyboard.cpp index 3af6a78..dc44805 100644 --- a/inputmethods/kjumpx/keyboard.cpp +++ b/inputmethods/kjumpx/keyboard.cpp @@ -1,398 +1,399 @@ /**************************************************************************************94x78** ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** *********************************************************************************************/ #include "keyboard.h" #include <qpe/resource.h> //#include <iostream.h> static const int autorepeatDelaytime = 500; // ms static const int autorepeatRate = 20; // chars per second static const int mod1x1 = 0; static const int mod1x2 = 23; static const int mod1w = mod1x2 - mod1x1; static const int letterx1 = 27; static const int letterx2 = 129; static const int letterw = 17; static const int letterh = 14; static const int num1x1 = 130; static const int num1x2 = 137; static const int num1w = num1x2 - num1x1; static const int specialx1 = 138; static const int specialx2 = 170; static const int specialw = 16; static const int num2x1 = 171; static const int num2x2 = 178; static const int num2w = num2x2 - num2x1; static const int mod2x1 = 179; static const int mod2x2 = 203; static const int mod2w = mod2x2 - mod2x1; static const int cursorx1 = 207; static const int cursorw = 16; static const int myParenID = -10; typedef struct mapElement { int qcode; ushort unicode; }; static const mapElement mod1Map[] = { { Qt::Key_Escape, 27 }, { Qt::Key_Tab, 9 }, { Qt::Key_Return, 13 }, { Qt::Key_Alt, 0 }, { Qt::Key_Control, 0 }, }; static const uchar *const letterMap[] = { (const uchar *const)"zvchwk", (const uchar *const)"fitaly", (const uchar *const)" ne ", (const uchar *const)"gdorsb", (const uchar *const)"qjumpx", }; static const ushort kletterMap[][6] = { { 0x110c, 0x1112, 0x1109, 0x116d, 0x1167, 0x1163 }, { 0x110f, 0x1105, 0x1100, 0x1161, 0x1175, 0x1162 }, { ' ', ' ', 0x110b, 0x1165, ' ', ' ' }, { 0x1110, 0x1103, 0x1102, 0x1169, 0x1173, 0x1166 }, { 0x110e, 0x1107, 0x1106, 0x1111, 0x116e, 0x1172 }, }; static const uchar *const letterMapShift[] = { (const uchar *const)"ZVCHWK", (const uchar *const)"FITALY", (const uchar *const)" NE ", (const uchar *const)"GDORSB", (const uchar *const)"QJUMPX", }; static const ushort kletterMapShift[][6] = { { 0x110d, 0x1112, 0x110a, 0x116d, 0x1167, 0x1163 }, { 0x110f, 0x1105, 0x1101, 0x1161, 0x1175, 0x1164 }, { ' ', ' ', 0x110b, 0x1165, ' ', ' ' }, { 0x1110, 0x1104, 0x1102, 0x1169, 0x1173, 0x1168 }, { 0x110e, 0x1108, 0x1106, 0x1111, 0x116e, 0x1172 }, }; static const uchar *const num1Map = (const uchar *const)"12345"; static const uchar *const specialMap[] = { (const uchar *const)"-+", (const uchar *const)"*!", (const uchar *const)",'", (const uchar *const)".%", (const uchar *const)"/$", }; static const uchar *const specialMapShift[] = { (const uchar *const)"_=", (const uchar *const)"#?", (const uchar *const)";\"", (const uchar *const)":|", (const uchar *const)"\\&", }; static const uchar *const specialMapParen[] = { (const uchar *const)"()", (const uchar *const)"[]", (const uchar *const)"{}", (const uchar *const)"<>", (const uchar *const)"@~", }; static const uchar *const num2Map = (const uchar *const)"67890"; static const mapElement mod2Map[] = { { Qt::Key_Backspace, 8 }, { Qt::Key_Delete, 0 }, { Qt::Key_Return, 13 }, { Qt::Key_Shift, 0 }, { myParenID, 0 }, }; static const int cursorMap[][2] = { { Qt::Key_Home, Qt::Key_PageUp }, { Qt::Key_End, Qt::Key_PageDown }, { Qt::Key_Up, Qt::Key_Up }, { Qt::Key_Left, Qt::Key_Right }, { Qt::Key_Down, Qt::Key_Down }, }; +using namespace KJumpX; Keyboard::Keyboard(QWidget* parent, const char* name, WFlags f) : QFrame(parent, name, f), shift(0), paren(0), ctrl(0), alt(0), lang(1), lastKey(0), pressedKeyUnicode(0), pressedKeyQcode(0), pressedMod(0), isnoncont(false), slideKeyUnicodeH(0), slideKeyQcodeH(0), slideKeyUnicodeV(0), slideKeyQcodeV(0), enableMouseTracking(false), slidePix(NULL), slidePixH(NULL), slidePixV(NULL), releasedPix(NULL), pressedPix(NULL) { //setPalette(QPalette(QColor(240,240,230))); // Beige! releasedPlain = releasedShift = releasedParen = Resource::loadPixmap("kjumpx/released"); pressedPlain = pressedShift = pressedParen = Resource::loadPixmap("kjumpx/pressed"); pressedDigit = Resource::loadPixmap("kjumpx/pressed"); QPixmap tmp; tmp = Resource::loadPixmap("kjumpx/releasedShift"); bitBlt(&releasedShift, letterx1, 0, &tmp); tmp = Resource::loadPixmap("kjumpx/releasedParen"); bitBlt(&releasedParen, specialx1, 0, &tmp); tmp = Resource::loadPixmap("kjumpx/pressedShift"); bitBlt(&pressedShift, letterx1, 0, &tmp); tmp = Resource::loadPixmap("kjumpx/pressedParen"); bitBlt(&pressedParen, specialx1, 0, &tmp); tmp = Resource::loadPixmap("kjumpx/pressedDigit"); bitBlt(&pressedDigit, specialx1, 0, &tmp); offscreen = QPixmap( releasedPlain ); releasedPix = &releasedPlain; pressedPix = &pressedPlain; slidePix = &pressedPlain; delayTimer = new QTimer(this); rateTimer = new QTimer(this); connect( delayTimer, SIGNAL( timeout() ), this, SLOT( delayTimerDone() ) ); connect( rateTimer, SIGNAL( timeout() ), this, SLOT( rateTimerDone() ) ); } void Keyboard::resizeEvent(QResizeEvent*) { //cout << "resizeEvent()" << endl; } void Keyboard::paintEvent(QPaintEvent*) { bitBlt(this, 0, 0, &offscreen); } void Keyboard::mousePressEvent(QMouseEvent *e) { pressedx = -1; pressedKeyUnicode = pressedKeyQcode = pressedMod = 0; int x = e->x(); int y = e->y(); int row = (y - 1) / letterh; if ( x <= mod1x2 ) // mod1 { pressedx = mod1x1; pressedy = row * letterh; pressedw = mod1w + 1; pressedh = letterh + 1; if ( row == 2 ) // return { pressed2x = mod2x1; pressed2y = 2 * letterh; pressed2w = mod2w + 1; pressed2h = letterh + 1; isnoncont = true; } else if ( row == 3 ) // alt alt = 1; else if ( row == 4 ) // ctrl ctrl = 1; pressedKeyUnicode = mod1Map[row].unicode; pressedKeyQcode = mod1Map[row].qcode; } else if ( x >= letterx1 && x <= letterx2 ) // letter { int column = (x - letterx1 - 1) / letterw; QChar temp; if (lang == 0) // english if ( shift ) temp = QChar( letterMapShift[row][column] ); else temp = QChar( letterMap[row][column] ); else if (lang == 1) // korean if ( shift ) temp = parseKoreanInput( kletterMapShift[row][column] ); else temp = parseKoreanInput( kletterMap[row][column] ); if ( temp == ' ' ) // space { if ( column < 3 ) { pressedx = letterx1; pressed2x = letterx1 + letterw * 4; } else { pressedx = letterx1 + letterw * 4; pressed2x = letterx1; } pressedy = pressed2y = row * letterh; pressedw = pressed2w = letterw * 2 + 1; pressedh = pressed2h = letterh + 1; isnoncont = true; } else { pressedx = letterx1 + column * letterw; pressedy = row * letterh; pressedw = letterw + 1; pressedh = letterh + 1; } pressedKeyUnicode = temp.unicode(); pressedKeyQcode = slideKeyQcodeH = slideKeyQcodeV = temp.upper().unicode(); if ( temp == ' ' ) { slideKeyUnicodeH = slideKeyUnicodeV = 8; slideKeyQcodeH = slideKeyQcodeV = Qt::Key_Backspace; } else if ( temp == temp.lower() ) { slideKeyUnicodeH = slideKeyUnicodeV = temp.upper().unicode(); slidePixH = slidePixV = &pressedShift; } else { slideKeyUnicodeH = slideKeyUnicodeV = temp.lower().unicode(); slidePixH = slidePixV = &pressedPlain; } enableMouseTracking = true; } else if ( x >= num1x1 && x <= num1x2 ) // num1 { pressedx = num1x1; pressedy = row * letterh; pressedw = num1w + 1; pressedh = letterh + 1; QChar temp = QChar( num1Map[row] ); pressedKeyUnicode = pressedKeyQcode = temp.unicode(); } else if ( x >= specialx1 && x <= specialx2 ) // special { int column = (x - specialx1 - 1) / specialw; pressedx = specialx1 + column * specialw; pressedy = row * letterh; pressedw = specialw + 1; pressedh = letterh + 1; QChar temp; if ( shift ) temp = QChar( specialMapShift[row][column] ); else if ( paren ) temp = QChar( specialMapParen[row][column] ); else temp = QChar( specialMap[row][column] ); pressedKeyUnicode = pressedKeyQcode = temp.unicode(); slideKeyUnicodeH = slideKeyQcodeH = slideKeyUnicodeV = slideKeyQcodeV = QChar('0').unicode() + ( 5 * column + row + 1 ) % 10; slidePixH = slidePixV = &pressedDigit; if ( shift ) { slideKeyUnicodeV = slideKeyQcodeV = QChar( specialMap[row][column] ).unicode(); slidePixV = &pressedPlain; } else if ( !(shift || paren) ) { slideKeyUnicodeV = slideKeyQcodeV = QChar( specialMapShift[row][column] ).unicode(); slidePixV = &pressedShift; } enableMouseTracking = true; } else if ( x >= num2x1 && x <= num2x2 ) // num2 { pressedx = num2x1; pressedy = row * letterh; pressedw = num2w + 1; pressedh = letterh + 1; QChar temp = QChar( num2Map[row] ); pressedKeyUnicode = pressedKeyQcode = temp.unicode(); } else if ( x >= mod2x1 && x <= mod2x2 ) // mod2 { pressedx = mod2x1; pressedy = row * letterh; pressedw = mod2w + 1; pressedh = letterh + 1; if ( row == 2 ) // return { pressed2x = mod1x1; pressed2y = 2 * letterh; pressed2w = mod2w + 1; pressed2h = letterh + 1; isnoncont = true; } pressedKeyUnicode = mod2Map[row].unicode; pressedKeyQcode = mod2Map[row].qcode; if ( row == 3 ) // shift { paren = 0; switch ( shift ) { case 0: { shift = 1; releasedPix = &releasedShift; pressedPix = &pressedShift; bitBlt( &offscreen, 0, 0, releasedPix ); break; } case 1: { shift = 2; break; } case 2: { shift = 0; releasedPix = &releasedPlain; pressedPix = &pressedPlain; bitBlt( &offscreen, 0, 0, releasedPix ); break; } } } else if ( row == 4 ) // parenthesis { shift = 0; switch ( paren ) { case 0: { paren = 1; releasedPix = &releasedParen; pressedPix = &pressedParen; bitBlt( &offscreen, 0, 0, releasedPix ); break; } case 1: { paren = 2; break; |