diff options
author | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-02-11 16:12:02 +0100 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-02-11 16:12:02 +0100 |
commit | 454759a0c485eb2924bb6b614d02c29392e202a7 (patch) | |
tree | f445d0cbf6de2c82867556b6bd40b206f9ff0f18 | |
parent | 041a3e8049831d5c4d51adce1218743be35b1ebe (diff) |
Very hacky fix for key events, including keyboard modifiers.
-rw-r--r-- | server.cpp | 9 | ||||
-rw-r--r-- | server.h | 4 | ||||
-rw-r--r-- | window.cpp | 11 |
3 files changed, 17 insertions, 7 deletions
@@ -238,7 +238,7 @@ void Server::sendMouseMoveEvent(quint32 id, const QPointF &point) } } -void Server::sendKeyPressEvent(quint32 id, quint32 key) +void Server::sendKeyPressEvent(quint32 id, quint32 key, ushort unicode, uint modifiers) { Q_UNUSED(key); qDebug() << "SERVER: sending key press event"; @@ -246,12 +246,16 @@ void Server::sendKeyPressEvent(quint32 id, quint32 key) event.type = Event::KeyPressEvent; event.id = id; event.value = key; + + // fishing for hack-of-the-year nominations... but at least this way we retain protocol compatibility + event.rect = QRect(unicode, modifiers, 1, 1); + QTcpSocket *connection = m_connections.value(id); QDataStream stream(connection); stream << event; } -void Server::sendKeyReleaseEvent(quint32 id, quint32 key) +void Server::sendKeyReleaseEvent(quint32 id, quint32 key, ushort unicode, uint modifiers) { Q_UNUSED(key); qDebug() << "SERVER: sending key release event"; @@ -259,6 +263,7 @@ void Server::sendKeyReleaseEvent(quint32 id, quint32 key) event.type = Event::KeyReleaseEvent; event.id = id; event.value = key; + event.rect = QRect(unicode, modifiers, 1, 1); // same hack as above if (QTcpSocket *connection = m_connections.value(id)) { QDataStream stream(connection); stream << event; @@ -45,8 +45,8 @@ public: void sendMousePressEvent(quint32 id, const QPointF &point); void sendMouseReleaseEvent(quint32 id, const QPointF &point); void sendMouseMoveEvent(quint32 id, const QPointF &point); - void sendKeyPressEvent(quint32 id, quint32 key); - void sendKeyReleaseEvent(quint32 id, quint32 key); + void sendKeyPressEvent(quint32 id, quint32 key, ushort unicode, uint modifiers); + void sendKeyReleaseEvent(quint32 id, quint32 key, ushort unicode, uint modifiers); protected Q_SLOTS: void handleRequest(); @@ -90,7 +90,7 @@ void Window::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QW bool Window::sceneEvent(QEvent *event) { - qDebug() << "SERVER: scene event" << event->type(); + qDebug() << "SERVER: Window::sceneEvent" << event->type(); switch (event->type()) { case QEvent::GraphicsSceneMousePress: { QPointF pos = static_cast<QGraphicsSceneMouseEvent*>(event)->pos(); @@ -109,12 +109,17 @@ bool Window::sceneEvent(QEvent *event) break; } case QEvent::KeyPress: { quint32 key = static_cast<QKeyEvent*>(event)->key(); - m_server->sendKeyPressEvent(id(), key); // ### modifiers + QString s = static_cast<QKeyEvent*>(event)->text(); + ushort unicode = s.size() ? s.utf16()[0] : 0; + uint modifiers = static_cast<QKeyEvent*>(event)->modifiers(); + m_server->sendKeyPressEvent(id(), key, unicode, modifiers); return true; break; } case QEvent::KeyRelease: { quint32 key = static_cast<QKeyEvent*>(event)->key(); - m_server->sendKeyReleaseEvent(id(), key); // ### modifiers + uint modifiers = static_cast<QKeyEvent*>(event)->modifiers(); + + m_server->sendKeyReleaseEvent(id(), key,0,modifiers); return true; break; } default: |