From 82689e2c37312e901c75ba1bb4576cf5d5ac7181 Mon Sep 17 00:00:00 2001 From: Krad Date: Fri, 15 Oct 2021 11:52:23 +0800 Subject: [PATCH] Introduce input panel to project. --- CMakeLists.txt | 4 +- src/InputObject.cpp | 171 +++++++++++ src/InputObject.h | 28 ++ src/inputobject.ui | 140 +++++++++ src/layouts/en_US/dialpad.fallback | 0 src/layouts/en_US/digits.fallback | 0 src/layouts/en_US/handwriting.fallback | 0 src/layouts/en_US/main.fallback | 0 src/layouts/en_US/numbers.fallback | 0 src/layouts/en_US/symbols.fallback | 0 src/layouts/fallback/dialpad.qml | 113 ++++++++ src/layouts/fallback/digits.qml | 112 ++++++++ src/layouts/fallback/handwriting.qml | 96 +++++++ src/layouts/fallback/main.qml | 208 ++++++++++++++ src/layouts/fallback/numbers.qml | 184 ++++++++++++ src/layouts/fallback/symbols.qml | 376 +++++++++++++++++++++++++ src/layouts/zh_CN/dialpad.fallback | 0 src/layouts/zh_CN/digits.fallback | 0 src/layouts/zh_CN/handwriting.qml | 116 ++++++++ src/layouts/zh_CN/main.qml | 204 ++++++++++++++ src/layouts/zh_CN/numbers.fallback | 0 src/layouts/zh_CN/symbols.qml | 294 +++++++++++++++++++ src/main.cpp | 16 +- 23 files changed, 2058 insertions(+), 4 deletions(-) create mode 100644 src/InputObject.cpp create mode 100644 src/InputObject.h create mode 100644 src/inputobject.ui create mode 100644 src/layouts/en_US/dialpad.fallback create mode 100644 src/layouts/en_US/digits.fallback create mode 100644 src/layouts/en_US/handwriting.fallback create mode 100644 src/layouts/en_US/main.fallback create mode 100644 src/layouts/en_US/numbers.fallback create mode 100644 src/layouts/en_US/symbols.fallback create mode 100644 src/layouts/fallback/dialpad.qml create mode 100644 src/layouts/fallback/digits.qml create mode 100644 src/layouts/fallback/handwriting.qml create mode 100644 src/layouts/fallback/main.qml create mode 100644 src/layouts/fallback/numbers.qml create mode 100644 src/layouts/fallback/symbols.qml create mode 100644 src/layouts/zh_CN/dialpad.fallback create mode 100644 src/layouts/zh_CN/digits.fallback create mode 100644 src/layouts/zh_CN/handwriting.qml create mode 100644 src/layouts/zh_CN/main.qml create mode 100644 src/layouts/zh_CN/numbers.fallback create mode 100644 src/layouts/zh_CN/symbols.qml diff --git a/CMakeLists.txt b/CMakeLists.txt index 1929ae4..922da11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,14 +11,14 @@ file(GLOB_RECURSE project_cc ./src/*.cc) file(GLOB_RECURSE project_c ./src/*.c) include_directories(./src/) -find_package(Qt5 COMPONENTS Core Widgets Gui OpenGL Sql REQUIRED) +find_package(Qt5 COMPONENTS Core Widgets Gui OpenGL Sql VirtualKeyboard REQUIRED) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) file(GLOB project_uis ./src/*.ui) qt5_wrap_ui(ui_FILES ${project_uis}) file(GLOB project_res ./src/*.qrc) add_executable(${PROJECT_NAME} ${project_headers} ${project_cpps} ${project_cxx} ${project_res} ${project_cc} ${project_c} ${ui_FILES}) -target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL Qt5::Sql) +target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Widgets Qt5::Gui Qt5::OpenGL Qt5::Sql Qt5::VirtualKeyboard) if(MSVC) set_target_properties(${PROJECT_NAME} PROPERTIES VS_DEBUGGER_ENVIRONMENT "path=${Qt5_DIR}/../../../bin/") diff --git a/src/InputObject.cpp b/src/InputObject.cpp new file mode 100644 index 0000000..22e07ee --- /dev/null +++ b/src/InputObject.cpp @@ -0,0 +1,171 @@ +#include "InputObject.h" +#include "ui_InputObject.h" +#include "qdesktopwidget.h" +#include +#include +#include +#include +#include + + + +InputObject::InputObject(QWidget *parent) : + QWidget(parent), + ui(new Ui::InputObject) +{ + ui->setupUi(this); + + initUi(); + + this->setVisible(false); + this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); + + +} + +InputObject::~InputObject() +{ + delete ui; +} + +void InputObject::initUi() +{ + + QString style = "*{background-color:#3c3c3c; font-family:Arial; color:white;margin:0;font-size:16px;}" + "QLabel#title{font-Size:98px;color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," + "stop: 0.0 darkgray, stop: 0.5 lightgray, stop: 1.0 darkgray);}" + "QLabel#warn{color:#930000;background:transparent;font-size:20px;}" + "QFrame#login_frame_username{min-width:700px;max-width:700px;max-height:500px;min-height:500px;" + "border:1px solid #0078d8;border-radius:20px;" + "background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\n" + " stop: 0.0 darkgray, stop: 0.5 gray, stop: 1.0 darkgray);" + "}" + + + "QLineEdit,QDateEdit{min-height:100px;max-height:100px; min-width:250px;max-width:250px;border: 3px solid pink; border-radius:10px;font-size:26px;}" + "QLineEdit,QDateEdit:enabled{background-color: #515151}" + "QDateEdit::up-button{image: url(:/up.png);height:15px;}" + "QDateEdit::down-button{image:url(:/down.png);height:15px;}" + ; + setStyleSheet(style); + this->setWindowOpacity(0.8); + + ui->dateEdit->setVisible(false); + ui->dateEdit->setMaximumDate(QDate::currentDate()); + ui->dateEdit->setDisplayFormat("yyyy/MM/dd"); + ui->dateEdit->setStyleSheet(style); + + //ui->lineEdit->setFont(QFont("Arial", 25)); + //ui->dateEdit->setFont(QFont("Arial", 25, QFont::Bold)); +} + + +//QLineEdit* InputObject::lineEdit() +//{ +// return ui->lineEdit; +//} + +bool InputObject::eventFilter(QObject *obj, QEvent *event) +{ + static bool _visible = false; + static bool excution = false; + + if (obj->inherits("QQuickView")) + { + if (_visible != QGuiApplication::inputMethod()->isVisible()) + { + + if (QGuiApplication::inputMethod()->isVisible()) + { + if (excution == false) { + excution = true; + //make sure vkb hide and show again,without activating InputObject(both show/hide) + this->ShowPanel(); + excution = false; + } + } + else + { + if (excution == false) { + excution = true; + //make sure will not give rise to another vkb + this->HidePanel(); + excution = false; + } + } + _visible = QGuiApplication::inputMethod()->isVisible(); + } + } + return QObject::eventFilter(obj, event); +} + +void InputObject::ShowPanel() { + if (qApp->focusWidget()->inherits("QLineEdit")) + { + curEdit = qobject_cast(qApp->focusWidget()); + ui->dateEdit->setVisible(false); + ui->lineEdit->setVisible(true); + } + else if (qApp->focusWidget()->inherits("QComboBox")) + { + curEdit = qobject_cast(qApp->focusWidget())->lineEdit(); + ui->dateEdit->setVisible(false); + ui->lineEdit->setVisible(true); + } + else if(qApp->focusWidget()->inherits("QDateEdit")) + { + curDateEdit = qobject_cast(qApp->focusWidget()); + ui->dateEdit->setVisible(true); + ui->lineEdit->setVisible(false); + } + else + { + return; + } + QDesktopWidget w; + int deskWidth = w.availableGeometry().width(); + int deskHeight = w.availableGeometry().height(); + int vkbHeight = QGuiApplication::inputMethod()->keyboardRectangle().height(); + this->setGeometry(0, 0, deskWidth, deskHeight - vkbHeight); + this->setVisible(true); + this->activateWindow(); //it is quite important!!! + + if (curEdit) { + ui->lineEdit->setText(curEdit->text()); + ui->lineEdit->setEchoMode(curEdit->echoMode()); + ui->lineEdit->setInputMethodHints(Qt::InputMethodHint::ImhNoAutoUppercase); + ui->lineEdit->setFocus(); + + QEvent event(QEvent::RequestSoftwareInputPanel); + QApplication::sendEvent(ui->lineEdit, &event); + } + if (curDateEdit) + { + ui->dateEdit->setDateTime(curDateEdit->dateTime()); + ui->dateEdit->setFocus(); + QEvent event(QEvent::RequestSoftwareInputPanel); + QApplication::sendEvent(ui->dateEdit, &event); + } + + +} + + +void InputObject::HidePanel() +{ + if (curEdit) { + curEdit->setText(ui->lineEdit->text()); + ui->lineEdit->clearFocus(); + ui->lineEdit->clear(); + this->setVisible(false); + curEdit = nullptr; + } + else if (curDateEdit) + { + curDateEdit->setDateTime(ui->dateEdit->dateTime()); + ui->dateEdit->clearFocus(); + ui->dateEdit->clear(); + this->setVisible(false); + curDateEdit = nullptr; + } +} \ No newline at end of file diff --git a/src/InputObject.h b/src/InputObject.h new file mode 100644 index 0000000..6f52df4 --- /dev/null +++ b/src/InputObject.h @@ -0,0 +1,28 @@ +#pragma once +#include +class QLineEdit; +class QDateEdit; + +namespace Ui { + class InputObject; +} + +class InputObject : public QWidget +{ + Q_OBJECT + +public: + explicit InputObject(QWidget *parent = 0); + ~InputObject(); + bool eventFilter(QObject *obj, QEvent *event); + +private: + void initUi(); + void ShowPanel(); + void HidePanel(); + + static InputObject *_instance; + Ui::InputObject *ui; + QDateEdit *curDateEdit = nullptr; + QLineEdit* curEdit = nullptr; +}; \ No newline at end of file diff --git a/src/inputobject.ui b/src/inputobject.ui new file mode 100644 index 0000000..e30a569 --- /dev/null +++ b/src/inputobject.ui @@ -0,0 +1,140 @@ + + + InputObject + + + + 0 + 0 + 916 + 305 + + + + mask + + + + + + + + + Qt::Horizontal + + + + 306 + 20 + + + + + + + + + + + Qt::Vertical + + + + 20 + 63 + + + + + + + + + 0 + 0 + + + + + 250 + 60 + + + + border: 3px solid pink; + border-radius: 15px; + selection-background-color: darkgray; + + + + + + + + + + + + 0 + 0 + + + + + 250 + 60 + + + + border: 3px solid pink; + border-radius: 15px; + selection-background-color: darkgray; + + + + 0 + 0 + 0 + 1994 + 11 + 29 + + + + + + + + Qt::Vertical + + + + 20 + 62 + + + + + + + + + + + Qt::Horizontal + + + + 306 + 20 + + + + + + + + + + + diff --git a/src/layouts/en_US/dialpad.fallback b/src/layouts/en_US/dialpad.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/en_US/digits.fallback b/src/layouts/en_US/digits.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/en_US/handwriting.fallback b/src/layouts/en_US/handwriting.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/en_US/main.fallback b/src/layouts/en_US/main.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/en_US/numbers.fallback b/src/layouts/en_US/numbers.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/en_US/symbols.fallback b/src/layouts/en_US/symbols.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/fallback/dialpad.qml b/src/layouts/fallback/dialpad.qml new file mode 100644 index 0000000..89f6873 --- /dev/null +++ b/src/layouts/fallback/dialpad.qml @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.1 +import QtQuick.VirtualKeyboard.Plugins 2.3 + +KeyboardLayout { + inputMethod: PlainInputMethod {} + inputMode: InputEngine.InputMode.Numeric + + KeyboardColumn { + Layout.fillWidth: false + Layout.fillHeight: true + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: height + KeyboardRow { + Key { + key: Qt.Key_1 + text: "1" + } + Key { + key: Qt.Key_2 + text: "2" + } + Key { + key: Qt.Key_3 + text: "3" + } + BackspaceKey {} + } + KeyboardRow { + Key { + key: Qt.Key_4 + text: "4" + } + Key { + key: Qt.Key_5 + text: "5" + } + Key { + key: Qt.Key_6 + text: "6" + } + Key { + text: " " + displayText: "\u2423" + repeat: true + showPreview: false + key: Qt.Key_Space + } + } + KeyboardRow { + Key { + key: Qt.Key_7 + text: "7" + } + Key { + key: Qt.Key_8 + text: "8" + } + Key { + key: Qt.Key_9 + text: "9" + } + HideKeyboardKey {} + } + KeyboardRow { + Key { + key: Qt.Key_Asterisk + displayText: "*+" + text: "*" + alternativeKeys: "*+" + } + Key { + key: Qt.Key_0 + text: "0" + } + Key { + text: "#" + key: Qt.Key_NumberSign + } + EnterKey {} + } + } +} diff --git a/src/layouts/fallback/digits.qml b/src/layouts/fallback/digits.qml new file mode 100644 index 0000000..432984a --- /dev/null +++ b/src/layouts/fallback/digits.qml @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.1 +import QtQuick.VirtualKeyboard.Plugins 2.3 + +KeyboardLayout { + inputMethod: PlainInputMethod {} + inputMode: InputEngine.InputMode.Numeric + + KeyboardColumn { + Layout.fillWidth: false + Layout.fillHeight: true + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: height + KeyboardRow { + Key { + key: Qt.Key_7 + text: "7" + } + Key { + key: Qt.Key_8 + text: "8" + } + Key { + key: Qt.Key_9 + text: "9" + } + BackspaceKey {} + } + KeyboardRow { + Key { + key: Qt.Key_4 + text: "4" + } + Key { + key: Qt.Key_5 + text: "5" + } + Key { + key: Qt.Key_6 + text: "6" + } + Key { + text: " " + displayText: "\u2423" + repeat: true + showPreview: false + key: Qt.Key_Space + } + } + KeyboardRow { + Key { + key: Qt.Key_1 + text: "1" + } + Key { + key: Qt.Key_2 + text: "2" + } + Key { + key: Qt.Key_3 + text: "3" + } + HideKeyboardKey {} + } + KeyboardRow { + ChangeLanguageKey { + customLayoutsOnly: true + } + Key { + key: Qt.Key_0 + text: "0" + } + Key { + // The decimal key, if it is not "," then we fallback to + // "." in case it is an unhandled different result + key: Qt.locale().decimalPoint === "," ? Qt.Key_Comma : Qt.Key_Period + text: Qt.locale().decimalPoint === "," ? "," : "." + } + EnterKey {} + } + } +} diff --git a/src/layouts/fallback/handwriting.qml b/src/layouts/fallback/handwriting.qml new file mode 100644 index 0000000..1da3fc8 --- /dev/null +++ b/src/layouts/fallback/handwriting.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2017 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.3 + +KeyboardLayout { + function createInputMethod() { + return Qt.createQmlObject('import QtQuick 2.0; import QtQuick.VirtualKeyboard.Plugins 2.3; HandwritingInputMethod {}', parent) + } + sharedLayouts: ['symbols'] + + KeyboardRow { + Layout.preferredHeight: 3 + KeyboardColumn { + Layout.preferredWidth: bottomRow.width - hideKeyboardKey.width + KeyboardRow { + TraceInputKey { + objectName: "hwrInputArea" + patternRecognitionMode: InputEngine.PatternRecognitionMode.Handwriting + } + } + } + KeyboardColumn { + Layout.preferredWidth: hideKeyboardKey.width + KeyboardRow { + BackspaceKey {} + } + KeyboardRow { + EnterKey {} + } + KeyboardRow { + ShiftKey { } + } + } + } + KeyboardRow { + id: bottomRow + Layout.preferredHeight: 1 + keyWeight: 154 + InputModeKey { + weight: 217 + } + ChangeLanguageKey { + weight: 154 + customLayoutsOnly: true + } + HandwritingModeKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: Qt.Key_Apostrophe + text: "'" + alternativeKeys: "<>()#%&*/\\\"'=+-_" + } + Key { + key: Qt.Key_Period + text: "." + alternativeKeys: ":;,.?!" + } + HideKeyboardKey { + id: hideKeyboardKey + weight: 204 + } + } +} diff --git a/src/layouts/fallback/main.qml b/src/layouts/fallback/main.qml new file mode 100644 index 0000000..c9a736f --- /dev/null +++ b/src/layouts/fallback/main.qml @@ -0,0 +1,208 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.VirtualKeyboard 2.1 + +KeyboardLayout { + inputMode: InputEngine.InputMode.Latin + keyWeight: 160 + KeyboardRow { + Key { + key: Qt.Key_Q + text: "q" + } + Key { + key: Qt.Key_W + text: "w" + } + Key { + key: Qt.Key_E + text: "e" + alternativeKeys: "êeëèé" + } + Key { + key: Qt.Key_R + text: "r" + alternativeKeys: "ŕrř" + } + Key { + key: Qt.Key_T + text: "t" + alternativeKeys: "ţtŧť" + } + Key { + key: Qt.Key_Y + text: "y" + alternativeKeys: "ÿyýŷ" + } + Key { + key: Qt.Key_U + text: "u" + alternativeKeys: "űūũûüuùú" + } + Key { + key: Qt.Key_I + text: "i" + alternativeKeys: "îïīĩiìí" + } + Key { + key: Qt.Key_O + text: "o" + alternativeKeys: "œøõôöòóo" + } + Key { + key: Qt.Key_P + text: "p" + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Key { + key: Qt.Key_A + text: "a" + alternativeKeys: "aäåãâàá" + } + Key { + key: Qt.Key_S + text: "s" + alternativeKeys: "šsşś" + } + Key { + key: Qt.Key_D + text: "d" + alternativeKeys: "dđď" + } + Key { + key: Qt.Key_F + text: "f" + } + Key { + key: Qt.Key_G + text: "g" + alternativeKeys: "ġgģĝğ" + } + Key { + key: Qt.Key_H + text: "h" + } + Key { + key: Qt.Key_J + text: "j" + } + Key { + key: Qt.Key_K + text: "k" + } + Key { + key: Qt.Key_L + text: "l" + alternativeKeys: "ĺŀłļľl" + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + ShiftKey {} + Key { + key: Qt.Key_Z + text: "z" + alternativeKeys: "zžż" + } + Key { + key: Qt.Key_X + text: "x" + } + Key { + key: Qt.Key_C + text: "c" + alternativeKeys: "çcċčć" + } + Key { + key: Qt.Key_V + text: "v" + } + Key { + key: Qt.Key_B + text: "b" + } + Key { + key: Qt.Key_N + text: "n" + alternativeKeys: "ņńnň" + } + Key { + key: Qt.Key_M + text: "m" + } + Key { + key: Qt.Key_Comma + text: "," + } + Key { + key: Qt.Key_Period + text: "." + } + ShiftKey { + weight: 204 + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + } + ChangeLanguageKey { + weight: 154 + } + HandwritingModeKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: Qt.Key_Apostrophe + text: "'" + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } +} diff --git a/src/layouts/fallback/numbers.qml b/src/layouts/fallback/numbers.qml new file mode 100644 index 0000000..7fd0a2a --- /dev/null +++ b/src/layouts/fallback/numbers.qml @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.1 +import QtQuick.VirtualKeyboard.Plugins 2.3 + +KeyboardLayout { + inputMethod: PlainInputMethod {} + inputMode: InputEngine.InputMode.Numeric + + KeyboardRow { + Layout.fillWidth: false + Layout.fillHeight: true + Layout.alignment: Qt.AlignHCenter + KeyboardColumn { + Layout.fillWidth: false + Layout.fillHeight: true + Layout.preferredWidth: parent.height / 4 * 3 + KeyboardRow { + Key { + key: Qt.Key_ParenLeft + text: "(" + } + Key { + key: Qt.Key_ParenRight + text: ")" + } + Key { + key: Qt.Key_Comma + text: "," + } + } + KeyboardRow { + Key { + key: Qt.Key_division + text: "\u00F7" + } + Key { + key: Qt.Key_multiply + text: "\u00D7" + } + Key { + key: Qt.Key_Plus + text: "+" + } + } + KeyboardRow { + Key { + key: Qt.Key_AsciiCircum + text: "^" + } + Key { + key: Qt.Key_Slash + text: "/" + } + Key { + key: Qt.Key_Minus + text: "-" + } + } + KeyboardRow { + Key { + key: 0x221A + text: "√" + } + Key { + key: Qt.Key_Percent + text: "%" + } + Key { + key: Qt.Key_Asterisk + text: "*" + } + } + } + KeyboardColumn { + Layout.fillWidth: false + Layout.fillHeight: true + Layout.preferredWidth: parent.height / 8 + KeyboardRow { + FillerKey {} + } + } + KeyboardColumn { + Layout.fillWidth: false + Layout.fillHeight: true + Layout.preferredWidth: parent.height + KeyboardRow { + Key { + key: Qt.Key_7 + text: "7" + } + Key { + key: Qt.Key_8 + text: "8" + } + Key { + key: Qt.Key_9 + text: "9" + } + BackspaceKey {} + } + KeyboardRow { + Key { + key: Qt.Key_4 + text: "4" + } + Key { + key: Qt.Key_5 + text: "5" + } + Key { + key: Qt.Key_6 + text: "6" + } + Key { + text: " " + displayText: "\u2423" + repeat: true + showPreview: false + key: Qt.Key_Space + } + } + KeyboardRow { + Key { + key: Qt.Key_1 + text: "1" + } + Key { + key: Qt.Key_2 + text: "2" + } + Key { + key: Qt.Key_3 + text: "3" + } + HideKeyboardKey {} + } + KeyboardRow { + ChangeLanguageKey { + customLayoutsOnly: true + } + Key { + key: Qt.Key_0 + text: "0" + } + Key { + key: Qt.Key_Period + text: "." + alternativeKeys: ".," + } + EnterKey {} + } + } + } +} diff --git a/src/layouts/fallback/symbols.qml b/src/layouts/fallback/symbols.qml new file mode 100644 index 0000000..26d6295 --- /dev/null +++ b/src/layouts/fallback/symbols.qml @@ -0,0 +1,376 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.1 + +KeyboardLayoutLoader { + property bool secondPage + onVisibleChanged: if (!visible) secondPage = false + sourceComponent: secondPage ? page2 : page1 + Component { + id: page1 + KeyboardLayout { + keyWeight: 160 + KeyboardRow { + Key { + key: Qt.Key_1 + text: "1" + } + Key { + key: Qt.Key_2 + text: "2" + } + Key { + key: Qt.Key_3 + text: "3" + } + Key { + key: Qt.Key_4 + text: "4" + } + Key { + key: Qt.Key_5 + text: "5" + } + Key { + key: Qt.Key_6 + text: "6" + } + Key { + key: Qt.Key_7 + text: "7" + } + Key { + key: Qt.Key_8 + text: "8" + } + Key { + key: Qt.Key_9 + text: "9" + } + Key { + key: Qt.Key_0 + text: "0" + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Key { + key: Qt.Key_At + text: "@" + } + Key { + key: Qt.Key_NumberSign + text: "#" + } + Key { + key: Qt.Key_Percent + text: "%" + } + Key { + key: Qt.Key_Ampersand + text: "&" + } + Key { + key: Qt.Key_Asterisk + text: "*" + } + Key { + key: Qt.Key_Minus + text: "-" + } + Key { + key: Qt.Key_Plus + text: "+" + } + Key { + key: Qt.Key_ParenLeft + text: "(" + } + Key { + key: Qt.Key_ParenRight + text: ")" + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + Key { + displayText: "1/2" + functionKey: true + onClicked: secondPage = !secondPage + } + Key { + key: Qt.Key_Exclam + text: "!" + } + Key { + key: Qt.Key_QuoteDbl + text: '"' + } + Key { + key: Qt.Key_Less + text: "<" + } + Key { + key: Qt.Key_Greater + text: ">" + } + Key { + key: Qt.Key_Apostrophe + text: "'" + } + Key { + key: Qt.Key_Colon + text: ":" + } + Key { + key: Qt.Key_Semicolon + text: ";" + } + Key { + key: Qt.Key_Slash + text: "/" + } + Key { + key: Qt.Key_Question + text: "?" + } + Key { + weight: 204 + displayText: "1/2" + functionKey: true + onClicked: secondPage = !secondPage + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + displayText: InputContext.inputEngine.inputMode === InputEngine.InputMode.Cyrillic ? "АБВ" : "ABC" + } + ChangeLanguageKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: Qt.Key_Period + text: "." + alternativeKeys: ".," + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } + } + } + Component { + id: page2 + KeyboardLayout { + keyWeight: 160 + KeyboardRow { + Key { + key: Qt.Key_AsciiTilde + text: "~" + } + Key { + key: Qt.Key_Agrave + text: "`" + } + Key { + key: Qt.Key_Bar + text: "|" + } + Key { + key: 0x7B + text: "·" + } + Key { + key: 0x221A + text: "√" + } + Key { + key: Qt.Key_division + text: "÷" + } + Key { + key: Qt.Key_multiply + text: "×" + } + Key { + key: Qt.Key_onehalf + text: "½" + alternativeKeys: "¼⅓½¾⅞" + } + Key { + key: Qt.Key_BraceLeft + text: "{" + } + Key { + key: Qt.Key_BraceRight + text: "}" + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Key { + key: Qt.Key_Dollar + text: "$" + } + Key { + key: 0x20AC + text: "€" + } + Key { + key: 0xC2 + text: "£" + } + Key { + key: 0xA2 + text: "¢" + } + Key { + key: 0xA5 + text: "¥" + } + Key { + key: Qt.Key_Equal + text: "=" + } + Key { + key: Qt.Key_section + text: "§" + } + Key { + key: Qt.Key_BracketLeft + text: "[" + } + Key { + key: Qt.Key_BracketRight + text: "]" + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + Key { + displayText: "2/2" + functionKey: true + onClicked: secondPage = !secondPage + } + Key { + key: Qt.Key_Underscore + text: "_" + } + Key { + key: 0x2122 + text: '™' + } + Key { + key: 0x00AE + text: '®' + } + Key { + key: Qt.Key_guillemotleft + text: '«' + } + Key { + key: Qt.Key_guillemotright + text: '»' + } + Key { + key: 0x201C + text: '“' + } + Key { + key: 0x201D + text: '”' + } + Key { + key: Qt.Key_Backslash + text: "\\" + } + Key { + key: Qt.Key_AsciiCircum + text: "^" + } + Key { + weight: 204 + displayText: "2/2" + functionKey: true + onClicked: secondPage = !secondPage + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + displayText: InputContext.inputEngine.inputMode === InputEngine.InputMode.Cyrillic ? "АБВ" : "ABC" + } + ChangeLanguageKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: 0x2026 + text: "\u2026" + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } + } + } +} diff --git a/src/layouts/zh_CN/dialpad.fallback b/src/layouts/zh_CN/dialpad.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/zh_CN/digits.fallback b/src/layouts/zh_CN/digits.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/zh_CN/handwriting.qml b/src/layouts/zh_CN/handwriting.qml new file mode 100644 index 0000000..fee0432 --- /dev/null +++ b/src/layouts/zh_CN/handwriting.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2017 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.3 + +KeyboardLayout { + function createInputMethod() { + return Qt.createQmlObject('import QtQuick 2.0; import QtQuick.VirtualKeyboard.Plugins 2.3; HandwritingInputMethod {}', parent) + } + sharedLayouts: ['symbols'] + inputMode: preferredInputMode() + + Connections { + target: InputContext + onInputMethodHintsChanged: { + var newInputMode = preferredInputMode() + if (InputContext.inputEngine.inputModes.indexOf(newInputMode) !== -1) + InputContext.inputEngine.inputMode = newInputMode + } + } + + function preferredInputMode() { + return InputContext.inputMethodHints & + (Qt.ImhPreferLatin | Qt.ImhEmailCharactersOnly | Qt.ImhUrlCharactersOnly | + Qt.ImhLatinOnly) ? InputEngine.InputMode.Latin : InputEngine.InputMode.ChineseHandwriting + } + + KeyboardRow { + Layout.preferredHeight: 3 + KeyboardColumn { + Layout.preferredWidth: bottomRow.width - hideKeyboardKey.width + KeyboardRow { + TraceInputKey { + objectName: "hwrInputArea" + patternRecognitionMode: InputEngine.PatternRecognitionMode.Handwriting + horizontalRulers: + InputContext.inputEngine.inputMode !== InputEngine.InputMode.ChineseHandwriting ? [] : + [Math.round(boundingBox.height / 4), Math.round(boundingBox.height / 4) * 2, Math.round(boundingBox.height / 4) * 3] + + } + } + } + KeyboardColumn { + Layout.preferredWidth: hideKeyboardKey.width + KeyboardRow { + BackspaceKey {} + } + KeyboardRow { + EnterKey {} + } + KeyboardRow { + ShiftKey { } + } + } + } + KeyboardRow { + id: bottomRow + Layout.preferredHeight: 1 + keyWeight: 154 + InputModeKey { + weight: 217 + } + ChangeLanguageKey { + weight: 154 + customLayoutsOnly: true + } + HandwritingModeKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: Qt.Key_Apostrophe + text: "‘" + alternativeKeys: "《》〈〉•…々〆‘’“”「」¥" + } + Key { + key: Qt.Key_Period + text: "." + alternativeKeys: ":;,.、。?!" + } + HideKeyboardKey { + id: hideKeyboardKey + weight: 204 + } + } +} diff --git a/src/layouts/zh_CN/main.qml b/src/layouts/zh_CN/main.qml new file mode 100644 index 0000000..349a14c --- /dev/null +++ b/src/layouts/zh_CN/main.qml @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.1 + +KeyboardLayout { + function createInputMethod() { + return Qt.createQmlObject('import QtQuick 2.0; import QtQuick.VirtualKeyboard.Plugins 2.1; PinyinInputMethod {}', parent, "pinyinInputMethod") + } + sharedLayouts: ['symbols'] + keyWeight: 160 + KeyboardRow { + Key { + key: Qt.Key_Q + text: "q" + } + Key { + key: Qt.Key_W + text: "w" + } + Key { + key: Qt.Key_E + text: "e" + } + Key { + key: Qt.Key_R + text: "r" + } + Key { + key: Qt.Key_T + text: "t" + } + Key { + key: Qt.Key_Y + text: "y" + } + Key { + key: Qt.Key_U + text: "u" + } + Key { + key: Qt.Key_I + text: "i" + } + Key { + key: Qt.Key_O + text: "o" + } + Key { + key: Qt.Key_P + text: "p" + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Key { + key: Qt.Key_A + text: "a" + } + Key { + key: Qt.Key_S + text: "s" + } + Key { + key: Qt.Key_D + text: "d" + } + Key { + key: Qt.Key_F + text: "f" + } + Key { + key: Qt.Key_G + text: "g" + } + Key { + key: Qt.Key_H + text: "h" + } + Key { + key: Qt.Key_J + text: "j" + } + Key { + key: Qt.Key_K + text: "k" + } + Key { + key: Qt.Key_L + text: "l" + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + Key { + enabled: InputContext.preeditText.length > 0 + key: Qt.Key_Apostrophe + text: "'" + } + Key { + key: Qt.Key_Z + text: "z" + } + Key { + key: Qt.Key_X + text: "x" + } + Key { + key: Qt.Key_C + text: "c" + } + Key { + key: Qt.Key_V + text: "v" + } + Key { + key: Qt.Key_B + text: "b" + } + Key { + key: Qt.Key_N + text: "n" + } + Key { + key: Qt.Key_M + text: "m" + } + Key { + key: Qt.Key_Comma + text: "\uFF0C" + alternativeKeys: "\uFF0C\uFF1B\u3001" + } + Key { + key: Qt.Key_Period + text: "\uFF0E" + alternativeKeys: "\uFF0E\uFF1A\u3002" + } + ShiftKey { + weight: 204 + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + } + ChangeLanguageKey { + weight: 154 + } + HandwritingModeKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: Qt.Key_Question + text: "?" + alternativeKeys: "?!" + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } +} diff --git a/src/layouts/zh_CN/numbers.fallback b/src/layouts/zh_CN/numbers.fallback new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/zh_CN/symbols.qml b/src/layouts/zh_CN/symbols.qml new file mode 100644 index 0000000..4ad06ba --- /dev/null +++ b/src/layouts/zh_CN/symbols.qml @@ -0,0 +1,294 @@ +/**************************************************************************** +** +** Copyright (C) 2016 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Layouts 1.0 +import QtQuick.VirtualKeyboard 2.1 + +KeyboardLayoutLoader { + function createInputMethod() { + return Qt.createQmlObject('import QtQuick 2.0; import QtQuick.VirtualKeyboard.Plugins 2.1; PinyinInputMethod {}', parent, "pinyinInputMethod") + } + sharedLayouts: ['main'] + property int page + readonly property int numPages: 3 + property var keysPage1: [ + "1234567890", + "@#$%^&*()", + "“”、=:;!?~" + ] + property var keysPage2: [ + "-+/\\|[]{}·", + "<>,.:;!?~", + "/\"'_§¥€£¢" + ] + property var keysPage3: [ + "()〔〕〈〉《》【】", + "→←↑↓↔■□●○", + "\『』「」★☆◆◇" + ] + sourceComponent: { + switch (page) { + case 2: return page3 + case 1: return page2 + default: return page1 + } + } + Component { + id: page1 + KeyboardLayout { + keyWeight: 160 + KeyboardRow { + Repeater { + model: keysPage1[0].length + Key { + key: keysPage1[0][index].charCodeAt(0) + text: keysPage1[0][index] + } + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Repeater { + model: keysPage1[1].length + Key { + key: keysPage1[1][index].charCodeAt(0) + text: keysPage1[1][index] + } + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + Key { + displayText: (page + 1) + "/" + numPages + functionKey: true + onClicked: page = (page + 1) % numPages + } + Repeater { + model: keysPage1[2].length + Key { + key: keysPage1[2][index].charCodeAt(0) + text: keysPage1[2][index] + } + } + Key { + weight: 204 + displayText: (page + 1) + "/" + numPages + functionKey: true + onClicked: page = (page + 1) % numPages + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + displayText: "ABC" + } + ChangeLanguageKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: 0x2014 + text: "—" + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } + } + } + Component { + id: page2 + KeyboardLayout { + keyWeight: 160 + KeyboardRow { + Repeater { + model: keysPage2[0].length + Key { + key: keysPage2[0][index].charCodeAt(0) + text: keysPage2[0][index] + } + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Repeater { + model: keysPage2[1].length + Key { + key: keysPage2[1][index].charCodeAt(0) + text: keysPage2[1][index] + } + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + Key { + displayText: (page + 1) + "/" + numPages + functionKey: true + onClicked: page = (page + 1) % numPages + } + Repeater { + model: keysPage2[2].length + Key { + key: keysPage2[2][index].charCodeAt(0) + text: keysPage2[2][index] + } + } + Key { + weight: 204 + displayText: (page + 1) + "/" + numPages + functionKey: true + onClicked: page = (page + 1) % numPages + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + displayText: "ABC" + } + ChangeLanguageKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: 0x3002 + text: "。" + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } + } + } + Component { + id: page3 + KeyboardLayout { + keyWeight: 160 + KeyboardRow { + Repeater { + model: keysPage3[0].length + Key { + key: keysPage3[0][index].charCodeAt(0) + text: keysPage3[0][index] + } + } + BackspaceKey {} + } + KeyboardRow { + FillerKey { + weight: 56 + } + Repeater { + model: keysPage3[1].length + Key { + key: keysPage3[1][index].charCodeAt(0) + text: keysPage3[1][index] + } + } + EnterKey { + weight: 283 + } + } + KeyboardRow { + keyWeight: 156 + Key { + displayText: (page + 1) + "/" + numPages + functionKey: true + onClicked: page = (page + 1) % numPages + } + Repeater { + model: keysPage3[2].length + Key { + key: keysPage3[2][index].charCodeAt(0) + text: keysPage3[2][index] + } + } + Key { + weight: 204 + displayText: (page + 1) + "/" + numPages + functionKey: true + onClicked: page = (page + 1) % numPages + } + } + KeyboardRow { + keyWeight: 154 + SymbolModeKey { + weight: 217 + displayText: "ABC" + } + ChangeLanguageKey { + weight: 154 + } + SpaceKey { + weight: 864 + } + Key { + key: 0x2026 + text: "…" + } + Key { + key: 0xE000 + text: ":-)" + alternativeKeys: [ ";-)", ":-)", ":-D", ":-(", "<3" ] + } + HideKeyboardKey { + weight: 204 + } + } + } + } +} diff --git a/src/main.cpp b/src/main.cpp index 96edecd..ef08e4f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,13 +1,25 @@ #include "mainwindow.h" #include #include "loginwindow.h" - +#include "InputObject.h" int main(int argc, char *argv[]) { - QApplication a(argc, argv); + //QLocale::setDefault(QLocale::English); + qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); + qputenv("QT_VIRTUALKEYBOARD_STYLE", QByteArray("retro")); + //qputenv("QT_LOGGING_RULES", QByteArray("qt.virtualkeyboard=true")); + qputenv("QT_VIRTUALKEYBOARD_LAYOUT_PATH", "..\\src\\layouts"); + + QApplication a(argc, argv); + InputObject *obj = new InputObject(); + //a.installEventFilter(obj); + a.installEventFilter(obj); + needLogin: LoginWindow l; l.showFullScreen(); + + MainWindow w; int rec = l.exec(); if (rec !=QDialog::Accepted )