-rw-r--r-- | noncore/apps/opie-console/function_keyboard.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/noncore/apps/opie-console/function_keyboard.cpp b/noncore/apps/opie-console/function_keyboard.cpp index d8ade69..a5b19c0 100644 --- a/noncore/apps/opie-console/function_keyboard.cpp +++ b/noncore/apps/opie-console/function_keyboard.cpp @@ -1,19 +1,20 @@ #include "function_keyboard.h" #include <qsizepolicy.h> -#include <qwindowsystem_qws.h> +#include <qevent.h> +#include <qapplication.h> FunctionKeyboard::FunctionKeyboard(QWidget *parent) : QFrame(parent), numRows(1), numCols(11), pressedRow(0), pressedCol(0) { setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed)); Config conf("opie-console-keys"); conf.setGroup("keys"); for (int r = 0; r < numRows; r++) for (int c = 0; c < numCols; c++) { QString handle = "r" + QString::number(r) + "c" + QString::number(c); QStringList value_list = conf.readListEntry( handle, '|'); if (value_list.isEmpty()) continue; @@ -79,54 +80,60 @@ void FunctionKeyboard::paintKey(int row, int col) { p.fillRect(QRect(QPoint(col * keyWidth + 1, row * keyHeight + 1), QPoint((col + 1) * keyWidth - 1, row * keyHeight + keyHeight- 1)), (pressedRow != -1 && pressedCol != -1 ) ? QColor(97,119,155) : QColor(255,255,255)); p.drawText( col * keyWidth + 1, row * keyHeight + 1, keyWidth, keyHeight, Qt::AlignHCenter | Qt::AlignVCenter, keys["r" + QString::number(row) + "c" + QString::number(col)].getL() ); } void FunctionKeyboard::mousePressEvent(QMouseEvent *e) { pressedRow = e->y() / keyHeight; - pressedCol = e->x() / keyWidth; + pressedCol = (int) (e->x() / keyWidth); paintKey(pressedRow, pressedCol); // emit that sucker! FKey k = keys["r" + QString::number(pressedRow) + "c" + QString::number(pressedCol)]; //QWSServer::sendKeyEvent(k.getU(), k.getQ(), 0, 1, 0); //qwsServer->sendKeyEvent(k.getU(), k.getQ(), 0, 1, 0); //qwsServer->sendKeyEvent(0x41, 0, 0, 1, 0); + + QKeyEvent ke(QEvent::KeyPress, k.getQ(), k.getU(), 0); + QApplication::sendEvent(this, &ke); + } void FunctionKeyboard::mouseReleaseEvent(QMouseEvent *) { if (pressedRow != -1 && pressedRow != -1) { int row = pressedRow; pressedRow = -1; int col = pressedCol; pressedCol = -1; paintKey(row, col); FKey k = keys["r" + QString::number(row) + "c" + QString::number(col)]; //QWSServer::sendKeyEvent(k.getU(), k.getQ(), 0, 0, 0); //qwsServer->sendKeyEvent(k.getU(), k.getQ(), 0, 0, 0); + QKeyEvent ke(QEvent::KeyRelease, k.getQ(), k.getU(), 0); + QApplication::sendEvent(this, &ke); } } void FunctionKeyboard::resizeEvent(QResizeEvent*) { /* set he default font height/width */ QFontMetrics fm=fontMetrics(); keyHeight = fm.lineSpacing() + 2; keyWidth = (double)width()/numCols; } QSize FunctionKeyboard::sizeHint() const { |