Revision control
Copy as Markdown
// 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
readonly property real normalKeyWidth: normalKey.width
readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x
KeyboardRow {
Key {
key: Qt.Key_1
text: "1"
}
Key {
id: normalKey
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"
}
}
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_Colon
text: ":"
}
Key {
key: Qt.Key_Slash
text: "/"
}
Key {
key: Qt.Key_Exclam
text: "!"
}
Key {
key: Qt.Key_Question
text: "?"
}
BackspaceKey {
}
}
KeyboardRow {
SymbolModeKey {
weight: functionKeyWidth
Layout.fillWidth: false
displayText: InputContext.inputEngine.inputMode < inputModeNameList.length ?
inputModeNameList[InputContext.inputEngine.inputMode] : "ABC"
property var inputModeNameList: [
"ABC", // InputEngine.InputMode.Latin
"123", // InputEngine.InputMode.Numeric
"123", // InputEngine.InputMode.Dialable
"拼音", // InputEngine.InputMode.Pinyin
"倉頡", // InputEngine.InputMode.Cangjie
"注音", // InputEngine.InputMode.Zhuyin
"한글", // InputEngine.InputMode.Hangul
"かな", // InputEngine.InputMode.Hiragana
"カナ", // InputEngine.InputMode.Katakana
"全角", // InputEngine.InputMode.FullwidthLatin
"ΑΒΓ", // InputEngine.InputMode.Greek
"АБВ", // InputEngine.InputMode.Cyrillic
"\u0623\u200C\u0628\u200C\u062C", // InputEngine.InputMode.Arabic
"\u05D0\u05D1\u05D2", // InputEngine.InputMode.Hebrew
"中文", // InputEngine.InputMode.ChineseHandwriting
"日本語", // InputEngine.InputMode.JapaneseHandwriting
"한국어", // InputEngine.InputMode.KoreanHandwriting
"กขค", // InputEngine.InputMode.Thai
"笔画", // InputEngine.InputMode.Stroke
"ABC", // InputEngine.InputMode.Romaji
"FLK", // InputEngine.InputMode.HiraganaFlick
]
}
ChangeLanguageKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Comma
weight: normalKeyWidth
Layout.fillWidth: false
text: ","
smallText: "\u2699"
smallTextVisible: keyboard.isFunctionPopupListAvailable()
highlighted: true
}
SpaceKey {
}
Key {
key: Qt.Key_Period
weight: normalKeyWidth
Layout.fillWidth: false
text: "."
highlighted: true
}
HideKeyboardKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
EnterKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
}
}
}
Component {
id: page2
KeyboardLayout {
keyWeight: 160
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_Semicolon
text: ";"
}
Key {
key: 0x201C
text: '“'
}
Key {
key: 0x201D
text: '”'
}
Key {
key: Qt.Key_Backslash
text: "\\"
}
BackspaceKey {
}
}
KeyboardRow {
SymbolModeKey {
weight: functionKeyWidth
Layout.fillWidth: false
displayText: InputContext.inputEngine.inputMode === InputEngine.InputMode.Cyrillic ? "АБВ" : "ABC"
}
ChangeLanguageKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Comma
weight: normalKeyWidth
Layout.fillWidth: false
text: ","
smallText: "\u2699"
smallTextVisible: keyboard.isFunctionPopupListAvailable()
highlighted: true
}
SpaceKey {
}
Key {
key: 0x2026
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u2026"
highlighted: true
}
HideKeyboardKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
EnterKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
}
}
}
}