Revision control
++ // Copyright (C) 2021 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ import QtQuick
++ import QtQuick.Layouts
++ import QtQuick.VirtualKeyboard
++ import QtQuick.VirtualKeyboard.Components
++
++ KeyboardLayoutLoader {
++ property bool secondPage
++ onVisibleChanged: if (!visible) secondPage = false
++ sourceComponent: secondPage ? page2 : page1
++ Component {
++ id: page1
++ KeyboardLayout {
++ keyWeight: 160
++ smallTextVisible: true
++ readonly property real normalKeyWidth: normalKey.width
++ readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x
++ KeyboardRow {
++ Key {
++ key: 0x0661
++ text: "\u0661"
++ alternativeKeys: "\u06611"
++ }
++ Key {
++ id: normalKey
++ key: 0x0662
++ text: "\u0662"
++ alternativeKeys: "\u06622"
++ }
++ Key {
++ key: 0x0663
++ text: "\u0663"
++ alternativeKeys: "\u06633"
++ }
++ Key {
++ key: 0x0664
++ text: "\u0664"
++ alternativeKeys: "\u06644"
++ }
++ Key {
++ key: 0x0665
++ text: "\u0665"
++ alternativeKeys: "\u06655"
++ }
++ Key {
++ key: 0x0666
++ text: "\u0666"
++ alternativeKeys: "\u06666"
++ }
++ Key {
++ key: 0x0667
++ text: "\u0667"
++ alternativeKeys: "\u06677"
++ }
++ Key {
++ key: 0x0668
++ text: "\u0668"
++ alternativeKeys: "\u06688"
++ }
++ Key {
++ key: 0x0669
++ text: "\u0669"
++ alternativeKeys: "\u06699"
++ }
++ Key {
++ key: 0x0660
++ text: "\u0660"
++ alternativeKeys: "\u06600"
++ }
++ }
++ KeyboardRow {
++ 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_Underscore
++ 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: ")"
++ }
++ }
++ KeyboardRow {
++ Key {
++ displayText: "1/2"
++ functionKey: true
++ onClicked: secondPage = !secondPage
++ highlighted: true
++ }
++ 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_Semicolon
++ text: "\u061B"
++ alternativeKeys: "\u061B;"
++ }
++ Key {
++ key: Qt.Key_Slash
++ text: "/"
++ }
++ Key {
++ key: Qt.Key_Exclam
++ text: "!"
++ }
++ Key {
++ key: Qt.Key_Question
++ text: "\u061F"
++ alternativeKeys: "\u061F?"
++ }
++ BackspaceKey {
++ }
++ }
++ KeyboardRow {
++ SymbolModeKey {
++ weight: functionKeyWidth
++ Layout.fillWidth: false
++ displayText: "\u0623\u200C\u0628\u200C\u062C"
++ }
++ ChangeLanguageKey {
++ weight: normalKeyWidth
++ Layout.fillWidth: false
++ }
++ Key {
++ key: Qt.Key_Comma
++ weight: normalKeyWidth
++ Layout.fillWidth: false
++ text: "\u060C"
++ smallText: "\u2699"
++ smallTextVisible: keyboard.isFunctionPopupListAvailable()
++ highlighted: true
++ }
++ SpaceKey {
++ }
++ Key {
++ key: Qt.Key_Period
++ weight: normalKeyWidth
++ Layout.fillWidth: false
++ text: "."
++ alternativeKeys: "!,\u060C."
++ highlighted: true
++ }
++ EnterKey {
++ weight: functionKeyWidth
++ Layout.fillWidth: false
++ }
++ }
++ }
++ }
++ Component {
++ id: page2
++ KeyboardLayout {
++ keyWeight: 160
++ smallTextVisible: true
++ readonly property real normalKeyWidth: normalKey.width
++ readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x
++ KeyboardRow {
++ Key {
++ key: Qt.Key_AsciiTilde
++ text: "~"
++ }
++ Key {
++ id: normalKey
++ 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: "}"
++ }
++ }
++ KeyboardRow {
++ 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_AsciiCircum
++ 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: "]"
++ }
++ }
++ KeyboardRow {
++ Key {
++ displayText: "2/2"
++ functionKey: true
++ onClicked: secondPage = !secondPage
++ highlighted: true
++ }
++ Key {
++ key: 0x2122
++ text: '™'
++ }
++ Key {
++ key: 0x00AE
++ text: '®'
++ }
++ Key {
++ key: Qt.Key_guillemotleft
++ text: '«'
++ }
++ Key {
++ key: Qt.Key_guillemotright
++ text: '»'
++ }
++ Key {
++ key: Qt.Key_Colon
++ text: ":"
++ }
++ Key {
++ key: 0x201C
++ text: '“'
++ }
++ Key {
++ key: 0x201D
++ text: '”'
++ }
++ Key {
++ key: Qt.Key_Backslash
++ text: "\\"
++ }
++ BackspaceKey {
++ }
++ }
++ KeyboardRow {
++ SymbolModeKey {
++ weight: functionKeyWidth
++ Layout.fillWidth: false
++ displayText: "\u0623\u200C\u0628\u200C\u062C"
++ }
++ ChangeLanguageKey {
++ weight: normalKeyWidth
++ Layout.fillWidth: false
++ }
++ Key {
++ key: Qt.Key_Comma
++ weight: normalKeyWidth
++ Layout.fillWidth: false
++ text: "\u060C"
++ smallText: "\u2699"
++ smallTextVisible: keyboard.isFunctionPopupListAvailable()
++ highlighted: true
++ }
++ SpaceKey {
++ }
++ Key {
++ key: 0x2026
++ weight: normalKeyWidth
++ Layout.fillWidth: false
++ text: "\u2026"
++ highlighted: true
++ }
++ EnterKey {
++ weight: functionKeyWidth
++ Layout.fillWidth: false
++ }
++ }
++ }
++ }
++ }