// 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 { function createInputMethod() { return Qt.createQmlObject('import QtQuick; import QtQuick.VirtualKeyboard.Plugins; TCInputMethod {}', parent, "inputMethod.qml") } sharedLayouts: ['symbols'] sourceComponent: { switch (InputContext.inputEngine.inputMode) { case InputEngine.InputMode.Cangjie: return pageCangjie case InputEngine.InputMode.Zhuyin: return pageZhuyin default: return null } } Component { id: pageCangjie KeyboardLayout { keyWeight: 160 readonly property real normalKeyWidth: normalKey.width readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x smallTextVisible: true KeyboardRow { Key { text: "\u624B" alternativeKeys: "\u624Bq" } Key { id: normalKey text: "\u7530" alternativeKeys: "\u7530w" } Key { text: "\u6C34" alternativeKeys: "\u6C34e" } Key { text: "\u53E3" alternativeKeys: "\u53E3r" } Key { text: "\u5EFF" alternativeKeys: "\u5EFFt" } Key { text: "\u535C" alternativeKeys: "\u535Cy" } Key { text: "\u5C71" alternativeKeys: "\u5C71u" } Key { text: "\u6208" alternativeKeys: "\u6208i" } Key { text: "\u4EBA" alternativeKeys: "\u4EBAo" } Key { text: "\u5FC3" alternativeKeys: "\u5FC3p" } } KeyboardRow { KeyboardRow { Layout.preferredWidth: functionKeyWidth Layout.fillWidth: false FillerKey { } Key { text: "\u65E5" alternativeKeys: "\u65E5a" weight: normalKeyWidth Layout.fillWidth: false } } Key { text: "\u5C38" alternativeKeys: "\u5C38s" } Key { text: "\u6728" alternativeKeys: "\u6728d" } Key { text: "\u706B" alternativeKeys: "\u706Bf" } Key { text: "\u571F" alternativeKeys: "\u571Fg" } Key { text: "\u7AF9" alternativeKeys: "\u7AF9h" } Key { text: "\u5341" alternativeKeys: "\u5341j" } Key { text: "\u5927" alternativeKeys: "\u5927k" } KeyboardRow { Layout.preferredWidth: functionKeyWidth Layout.fillWidth: false Key { text: "\u4E2D" alternativeKeys: "\u4E2Dl" weight: normalKeyWidth Layout.fillWidth: false } FillerKey { } } } KeyboardRow { ModeKey { id: simplifiedModeKey key: Qt.Key_Mode_switch displayText: "速成" weight: functionKeyWidth Layout.fillWidth: false Component.onCompleted: updateBinding() Connections { target: InputContext.inputEngine function onInputMethodChanged() { simplifiedModeKey.updateBinding() } } function updateBinding() { if (InputContext.inputEngine.inputMethod && InputContext.inputEngine.inputMethod.hasOwnProperty("simplified")) { simplifiedModeKey.mode = InputContext.inputEngine.inputMethod.simplified InputContext.inputEngine.inputMethod.simplified = Qt.binding(function() { return simplifiedModeKey.mode }) } } } Key { text: "\u91CD" alternativeKeys: "\u91CDz" } Key { text: "\u96E3" alternativeKeys: "\u96E3x" } Key { text: "\u91D1" alternativeKeys: "\u91D1c" } Key { text: "\u5973" alternativeKeys: "\u5973v" } Key { text: "\u6708" alternativeKeys: "\u6708b" } Key { text: "\u5F13" alternativeKeys: "\u5F13n" } Key { text: "\u4E00" alternativeKeys: "\u4E00m" } BackspaceKey { weight: functionKeyWidth Layout.fillWidth: false } } KeyboardRow { SymbolModeKey { weight: functionKeyWidth Layout.fillWidth: false } ChangeLanguageKey { weight: normalKeyWidth Layout.fillWidth: false } Key { key: Qt.Key_Comma weight: normalKeyWidth Layout.fillWidth: false text: "\uFF0C" smallText: "\u2699" smallTextVisible: keyboard.isFunctionPopupListAvailable() highlighted: true } InputModeKey { visible: InputContext.inputEngine.inputModes.indexOf(InputEngine.InputMode.Zhuyin) !== -1 weight: normalKeyWidth Layout.fillWidth: false } SpaceKey { } Key { key: Qt.Key_Period weight: normalKeyWidth Layout.fillWidth: false text: "\uFF0E" alternativeKeys: "\uFF1B\u3001\uFF0E\uFF1A\u3002?!" smallText: "!?" smallTextVisible: true highlighted: true } HideKeyboardKey { weight: normalKeyWidth Layout.fillWidth: false } EnterKey { weight: functionKeyWidth Layout.fillWidth: false } } } } Component { id: pageZhuyin KeyboardLayout { readonly property real normalKeyWidth: normalKey.width readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x smallTextVisible: true KeyboardRow { Layout.preferredHeight: 3 KeyboardColumn { KeyboardRow { Key { text: "\u3105" alternativeKeys: "\u31051" } Key { id: normalKey text: "\u3109" alternativeKeys: "\u31092" } Key { text: "\u02C7" alternativeKeys: "\u02C73" } Key { text: "\u02CB" alternativeKeys: "\u02CB4" displayText: "`" } Key { text: "\u3113" alternativeKeys: "\u31135" } Key { text: "\u02CA" alternativeKeys: "\u02CA6" displayText: "´" } Key { text: "\u02D9" alternativeKeys: "\u02D97" } Key { text: "\u311A" alternativeKeys: "\u311A8" } Key { text: "\u311E" alternativeKeys: "\u311E9" } Key { text: "\u3122" alternativeKeys: "\u31220" } } KeyboardRow { Key { text: "\u3106" alternativeKeys: "\u3106q" } Key { text: "\u310A" alternativeKeys: "\u310Aw" } Key { text: "\u310D" alternativeKeys: "\u310De" } Key { text: "\u3110" alternativeKeys: "\u3110r" } Key { text: "\u3114" alternativeKeys: "\u3114t" } Key { text: "\u3117" alternativeKeys: "\u3117y" } Key { text: "\u3127" alternativeKeys: "\u3127u" } Key { text: "\u311B" alternativeKeys: "\u311Bi" } Key { text: "\u311F" alternativeKeys: "\u311Fo" } Key { text: "\u3123" alternativeKeys: "\u3123p" } } KeyboardRow { Key { text: "\u3107" alternativeKeys: "\u3107a" } Key { text: "\u310B" alternativeKeys: "\u310Bs" } Key { text: "\u310E" alternativeKeys: "\u310Ed" } Key { text: "\u3111" alternativeKeys: "\u3111f" } Key { text: "\u3115" alternativeKeys: "\u3115g" } Key { text: "\u3118" alternativeKeys: "\u3118h" } Key { text: "\u3128" alternativeKeys: "\u3128j" } Key { text: "\u311C" alternativeKeys: "\u311Ck" } Key { text: "\u3120" alternativeKeys: "\u3120l" } Key { text: "\u3124" alternativeKeys: "\u3124…" } } KeyboardRow { Key { text: "\u3108" alternativeKeys: "\u3108z" } Key { text: "\u310C" alternativeKeys: "\u310Cx" } Key { text: "\u310F" alternativeKeys: "\u310Fc" } Key { text: "\u3112" alternativeKeys: "\u3112v" } Key { text: "\u3116" alternativeKeys: "\u3116b" } Key { text: "\u3119" alternativeKeys: "\u3119n" } Key { text: "\u3129" alternativeKeys: "\u3129m" } Key { text: "\u311D" alternativeKeys: "、\u311D," } Key { text: "\u3121" alternativeKeys: "。\u3121." } Key { text: "\u3125" alternativeKeys: ";:\u3125\u3126" } } } } KeyboardRow { id: bottomRow SymbolModeKey { weight: functionKeyWidth Layout.fillWidth: false } ChangeLanguageKey { weight: normalKeyWidth Layout.fillWidth: false } Key { key: Qt.Key_Comma weight: normalKeyWidth Layout.fillWidth: false text: "\uFF0C" smallText: "\u2699" smallTextVisible: keyboard.isFunctionPopupListAvailable() highlighted: true } InputModeKey { visible: InputContext.inputEngine.inputModes.indexOf(InputEngine.InputMode.Zhuyin) !== -1 weight: normalKeyWidth Layout.fillWidth: false } SpaceKey { } Key { key: Qt.Key_Period weight: normalKeyWidth Layout.fillWidth: false text: "\uFF0E" alternativeKeys: "\uFF1B\u3001\uFF0E\uFF1A\u3002?!" smallText: "!?" smallTextVisible: true highlighted: true } BackspaceKey { weight: normalKeyWidth Layout.fillWidth: false } HideKeyboardKey { weight: normalKeyWidth Layout.fillWidth: false } EnterKey { weight: functionKeyWidth Layout.fillWidth: false } } } } }