diff options
author | Mikko Seppänen <mikko.seppanen123@gmail.com> | 2019-06-19 15:56:13 +0300 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2019-10-08 10:53:15 +0000 |
commit | ae362d1e7ea48a2620a121f2848a9f12fa82d498 (patch) | |
tree | a0045479d86e9962ada7c7ea9de32ad1a98d5d9d /tests/manual/x11vkbtest/mousesimulator.h | |
parent | 932ae053ab9ea8aed974e8dde1bf7ef8524826a3 (diff) |
Qt virtual keyboard wrapper for X11v5.14.0-beta2
This application is a Qt virtual keyboard wrapper that uses Qt virtual
keyboard for any X11 input. Application uses At-Spi2 library for
listening focus-in events on text widgets and pops up the Qt virtual
keyboard when an accepted focus-in event is received. There's also
support for listening focus-in events from Chromium browser. For
mapping and sending the key events to focused text widget the application
uses libXtst, libX11 and libxdo which are also
external dependencies to the application among At-Spi2 library.
Change-Id: Ifa54969ab4f61e1d48f11ca11058c836f2a403b8
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
(cherry picked from commit fb9e76c9ebcc9ca98ff04e7310a12b4511fa5539)
Diffstat (limited to 'tests/manual/x11vkbtest/mousesimulator.h')
-rw-r--r-- | tests/manual/x11vkbtest/mousesimulator.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/manual/x11vkbtest/mousesimulator.h b/tests/manual/x11vkbtest/mousesimulator.h new file mode 100644 index 00000000..7fdff58c --- /dev/null +++ b/tests/manual/x11vkbtest/mousesimulator.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef MOUSESIMULATOR_H +#define MOUSESIMULATOR_H + +#include <QObject> + +extern "C" { +#include <xdo.h> +} + +class MouseSimulator : public QObject +{ + Q_OBJECT +public: + explicit MouseSimulator(QObject *parent, Window x11vkbWinId, quint16 x11vkbWidth, quint16 x11vkbHeight); + ~MouseSimulator() override; + +public: + enum LanguageLines {FirstLine, SecondLine, ThirdLine, FourthLine, FifthLine}; + void clickEnglishLetter(QChar &letter) const; + void clickExtraKeyIfNeeded(QChar &letter) const; + void clickCtrlPlusSToSave(const Window winId) const; + void clickLangKey(const quint16 layoutEnglish = 1) const; + void clickLangLine(const LanguageLines langLine) const; + void clickHideKeyboard() const; + void mouseLeftClickOnVkb(QPair<quint16, quint16> coordinates) const; + void setWidthHeight(QPair<quint16, quint16> pairWidthHeight); + QPair<quint16, quint16> getPosition(const quint16 rowNum, const quint16 keyNum) const; + QPair<quint16, quint16> getPositionOfNotEngLayout(const quint16 rowNum, const quint16 keyNum) const; + +private: + quint16 vkbPositionOfRow(const quint16 row) const; + void clickLetter(const QChar &letter) const; + +private: + /** Libxdo context. */ + xdo_t *m_xdo; + Window m_x11vkbWinId; + quint16 m_x11vkbWidth; + quint16 m_x11vkbHeight; +}; + + +#endif // MOUSESIMULATOR_H + |