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 {
function createInputMethod() {
return Qt.createQmlObject('import QtQuick; import QtQuick.VirtualKeyboard.Plugins; JapaneseInputMethod {}', parent, "main.qml")
}
sourceComponent: {
switch (InputContext.inputEngine.inputMode) {
case InputEngine.Katakana:
return katakana
case InputEngine.Hiragana:
return hiragana
case InputEngine.FullwidthLatin:
return fullWidthQwerty
default:
return qwerty
}
}
Component {
id: hiragana
KeyboardLayout {
keyWeight: 160
readonly property real normalKeyWidth: normalKey.width
readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x
KeyboardRow {
Layout.preferredHeight: 3
KeyboardColumn {
KeyboardRow {
smallTextVisible: true
Key {
text: "\u306C"
}
Key {
id: normalKey
text: "\u3075"
}
Key {
text: "\u3042"
alternativeKeys: "\u3042\u3041"
}
Key {
text: "\u3046"
alternativeKeys: "\u3046\u3045"
}
Key {
text: "\u3048"
alternativeKeys: "\u3048\u3047"
}
Key {
text: "\u304A"
alternativeKeys: "\u304A\u3049"
}
Key {
text: "\u3084"
alternativeKeys: "\u3084\u3083"
}
Key {
text: "\u3086"
alternativeKeys: "\u3086\u3085"
}
Key {
text: "\u3088"
alternativeKeys: "\u3088\u3087"
}
Key {
text: "\u308F"
alternativeKeys: "\u308F\u3092"
}
Key {
text: "\u307B"
}
Key {
text: "\u3078"
}
}
KeyboardRow {
smallTextVisible: true
Key {
text: "\u305F"
}
Key {
text: "\u3066"
}
Key {
text: "\u3044"
alternativeKeys: "\u3044\u3043"
}
Key {
text: "\u3059"
}
Key {
text: "\u304B"
}
Key {
text: "\u3093"
}
Key {
text: "\u306A"
}
Key {
text: "\u306B"
}
Key {
text: "\u3089"
}
Key {
text: "\u305B"
}
Key {
text: "\u3099"
}
Key {
text: "\u309A"
}
}
KeyboardRow {
Key {
text: "\u3061"
}
Key {
text: "\u3068"
}
Key {
text: "\u3057"
}
Key {
text: "\u306F"
}
Key {
text: "\u304D"
}
Key {
text: "\u304F"
}
Key {
text: "\u307E"
}
Key {
text: "\u306E"
}
Key {
text: "\u308A"
}
Key {
text: "\u308C"
}
Key {
text: "\u3051"
}
Key {
text: "\u3080"
}
}
KeyboardRow {
smallTextVisible: true
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
FillerKey {
}
Key {
text: "\u3064"
alternativeKeys: "\u3064\u3063"
weight: normalKeyWidth
Layout.fillWidth: false
}
}
Key {
text: "\u3055"
}
Key {
text: "\u305D"
}
Key {
text: "\u3072"
}
Key {
text: "\u3053"
}
Key {
text: "\u307F"
}
Key {
text: "\u3082"
}
Key {
text: "\u306D"
}
Key {
text: "\u308B"
}
Key {
text: "\u3081"
}
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
Key {
text: "\u308D"
weight: normalKeyWidth
Layout.fillWidth: false
}
FillerKey {
}
}
}
}
}
KeyboardRow {
SymbolModeKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
InputModeKey {
weight: normalKeyWidth
Layout.fillWidth: false
enabled: !(InputContext.inputMethodHints & Qt.ImhLatinOnly) && inputModeCount > 1
inputModeNameList: [
"半角", // InputEngine.InputMode.Latin
"", // InputEngine.InputMode.Numeric
"", // InputEngine.InputMode.Dialable
"", // InputEngine.InputMode.Pinyin
"", // InputEngine.InputMode.Cangjie
"", // InputEngine.InputMode.Zhuyin
"", // InputEngine.InputMode.Hangul
"あ", // InputEngine.InputMode.Hiragana
"カ", // InputEngine.InputMode.Katakana
"全角", // InputEngine.InputMode.FullwidthLatin
]
}
ChangeLanguageKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Comma
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u3001"
smallText: "\u2699"
smallTextVisible: keyboard.isFunctionPopupListAvailable()
highlighted: true
}
SpaceKey {
}
Key {
key: Qt.Key_Period
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u3002"
alternativeKeys: "\u3001\uFF01\u3002\uFF1F,.?!"
smallText: "!?"
smallTextVisible: true
highlighted: true
}
HideKeyboardKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
BackspaceKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
EnterKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
}
}
}
Component {
id: katakana
KeyboardLayout {
keyWeight: 160
readonly property real normalKeyWidth: normalKey.width
readonly property real functionKeyWidth: mapFromItem(normalKey, normalKey.width / 2, 0).x
KeyboardRow {
Layout.preferredHeight: 3
KeyboardColumn {
KeyboardRow {
smallTextVisible: true
Key {
text: "\u30CC"
}
Key {
id: normalKey
text: "\u30D5"
}
Key {
text: "\u30A2"
alternativeKeys: "\u30A2\u30A1"
}
Key {
text: "\u30A6"
alternativeKeys: "\u30A6\u30A5"
}
Key {
text: "\u30A8"
alternativeKeys: "\u30A8\u30A7"
}
Key {
text: "\u30AA"
alternativeKeys: "\u30AA\u30A9"
}
Key {
text: "\u30E4"
alternativeKeys: "\u30E4\u30E3"
}
Key {
text: "\u30E6"
alternativeKeys: "\u30E6\u30E5"
}
Key {
text: "\u30E8"
alternativeKeys: "\u30E8\u30E7"
}
Key {
text: "\u30EF"
alternativeKeys: "\u30EF\u30F2"
}
Key {
text: "\u30DB"
}
Key {
text: "\u30D8"
}
}
KeyboardRow {
smallTextVisible: true
Key {
text: "\u30BF"
}
Key {
text: "\u30C6"
}
Key {
text: "\u30A4"
alternativeKeys: "\u30A4\u30A3"
}
Key {
text: "\u30B9"
}
Key {
text: "\u30AB"
}
Key {
text: "\u30F3"
}
Key {
text: "\u30CA"
}
Key {
text: "\u30CB"
}
Key {
text: "\u30E9"
}
Key {
text: "\u30BB"
}
Key {
text: "\u3099"
}
Key {
text: "\u309A"
}
}
KeyboardRow {
Key {
text: "\u30C1"
}
Key {
text: "\u30C8"
}
Key {
text: "\u30B7"
}
Key {
text: "\u30CF"
}
Key {
text: "\u30AD"
}
Key {
text: "\u30AF"
}
Key {
text: "\u30DE"
}
Key {
text: "\u30CE"
}
Key {
text: "\u30EA"
}
Key {
text: "\u30EC"
}
Key {
text: "\u30B1"
}
Key {
text: "\u30E0"
}
}
KeyboardRow {
smallTextVisible: true
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
FillerKey {
}
Key {
text: "\u30C4"
alternativeKeys: "\u30C4\u30C3"
weight: normalKeyWidth
Layout.fillWidth: false
}
}
Key {
text: "\u30B5"
}
Key {
text: "\u30BD"
}
Key {
text: "\u30D2"
}
Key {
text: "\u30B3"
}
Key {
text: "\u30DF"
}
Key {
text: "\u30E2"
}
Key {
text: "\u30CD"
}
Key {
text: "\u30EB"
}
Key {
text: "\u30E1"
}
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
Key {
text: "\u30ED"
weight: normalKeyWidth
Layout.fillWidth: false
}
FillerKey {
}
}
}
}
}
KeyboardRow {
SymbolModeKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
InputModeKey {
weight: normalKeyWidth
Layout.fillWidth: false
enabled: !(InputContext.inputMethodHints & Qt.ImhLatinOnly) && inputModeCount > 1
inputModeNameList: [
"半角", // InputEngine.InputMode.Latin
"", // InputEngine.InputMode.Numeric
"", // InputEngine.InputMode.Dialable
"", // InputEngine.InputMode.Pinyin
"", // InputEngine.InputMode.Cangjie
"", // InputEngine.InputMode.Zhuyin
"", // InputEngine.InputMode.Hangul
"あ", // InputEngine.InputMode.Hiragana
"カ", // InputEngine.InputMode.Katakana
"全角", // InputEngine.InputMode.FullwidthLatin
]
}
ChangeLanguageKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Comma
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u3001"
smallText: "\u2699"
smallTextVisible: keyboard.isFunctionPopupListAvailable()
highlighted: true
}
SpaceKey {
}
Key {
key: Qt.Key_Period
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u3002"
alternativeKeys: "\u3001\uFF01\u3002\uFF1F,.?!"
smallText: "!?"
smallTextVisible: true
highlighted: true
}
HideKeyboardKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
BackspaceKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
EnterKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
}
}
}
Component {
id: qwerty
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_Q
text: "q"
}
Key {
id: normalKey
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"
}
}
KeyboardRow {
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
FillerKey {
}
Key {
key: Qt.Key_A
text: "a"
Layout.preferredWidth: normalKeyWidth
Layout.fillWidth: false
}
}
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"
}
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
Key {
key: Qt.Key_L
text: "l"
Layout.preferredWidth: normalKeyWidth
Layout.fillWidth: false
}
FillerKey {
}
}
}
KeyboardRow {
ShiftKey {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
}
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"
}
BackspaceKey {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
}
}
KeyboardRow {
SymbolModeKey {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
}
InputModeKey {
enabled: !(InputContext.inputMethodHints & Qt.ImhLatinOnly) && inputModeCount > 1
Layout.preferredWidth: normalKeyWidth
Layout.fillWidth: false
inputModeNameList: [
"半角", // InputEngine.InputMode.Latin
"", // InputEngine.InputMode.Numeric
"", // InputEngine.InputMode.Dialable
"", // InputEngine.InputMode.Pinyin
"", // InputEngine.InputMode.Cangjie
"", // InputEngine.InputMode.Zhuyin
"", // InputEngine.InputMode.Hangul
"あ", // InputEngine.InputMode.Hiragana
"カ", // InputEngine.InputMode.Katakana
"全角", // InputEngine.InputMode.FullwidthLatin
]
}
ChangeLanguageKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Comma
Layout.preferredWidth: normalKeyWidth
Layout.fillWidth: false
text: "\u3001"
smallText: "\u2699"
smallTextVisible: keyboard.isFunctionPopupListAvailable()
highlighted: true
}
SpaceKey {
}
Key {
key: Qt.Key_Period
Layout.preferredWidth: normalKeyWidth
Layout.fillWidth: false
text: "\u3002"
alternativeKeys: "\u3001\uFF01\u3002\uFF1F,.?!"
smallText: "!?"
smallTextVisible: true
highlighted: true
}
HideKeyboardKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
EnterKey {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
}
}
}
}
Component {
id: fullWidthQwerty
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_Q
text: "\uFF51"
}
Key {
id: normalKey
key: Qt.Key_W
text: "\uFF57"
}
Key {
key: Qt.Key_E
text: "\uFF45"
}
Key {
key: Qt.Key_R
text: "\uFF52"
}
Key {
key: Qt.Key_T
text: "\uFF54"
}
Key {
key: Qt.Key_Y
text: "\uFF59"
}
Key {
key: Qt.Key_U
text: "\uFF55"
}
Key {
key: Qt.Key_I
text: "\uFF49"
}
Key {
key: Qt.Key_O
text: "\uFF4F"
}
Key {
key: Qt.Key_P
text: "\uFF50"
}
}
KeyboardRow {
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
FillerKey {
}
Key {
key: Qt.Key_A
text: "\uFF41"
weight: normalKeyWidth
Layout.fillWidth: false
}
}
Key {
key: Qt.Key_S
text: "\uFF53"
}
Key {
key: Qt.Key_D
text: "\uFF44"
}
Key {
key: Qt.Key_F
text: "\uFF46"
}
Key {
key: Qt.Key_G
text: "\uFF47"
}
Key {
key: Qt.Key_H
text: "\uFF48"
}
Key {
key: Qt.Key_J
text: "\uFF4A"
}
Key {
key: Qt.Key_K
text: "\uFF4B"
}
KeyboardRow {
Layout.preferredWidth: functionKeyWidth
Layout.fillWidth: false
Key {
key: Qt.Key_L
text: "\uFF4C"
weight: normalKeyWidth
Layout.fillWidth: false
}
FillerKey {
}
}
}
KeyboardRow {
ShiftKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Z
text: "\uFF5A"
}
Key {
key: Qt.Key_X
text: "\uFF58"
}
Key {
key: Qt.Key_C
text: "\uFF43"
}
Key {
key: Qt.Key_V
text: "\uFF56"
}
Key {
key: Qt.Key_B
text: "\uFF42"
}
Key {
key: Qt.Key_N
text: "\uFF4E"
}
Key {
key: Qt.Key_M
text: "\uFF4D"
}
BackspaceKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
}
KeyboardRow {
SymbolModeKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
InputModeKey {
enabled: !(InputContext.inputMethodHints & Qt.ImhLatinOnly) && inputModeCount > 1
weight: normalKeyWidth
Layout.fillWidth: false
inputModeNameList: [
"半角", // InputEngine.InputMode.Latin
"", // InputEngine.InputMode.Numeric
"", // InputEngine.InputMode.Dialable
"", // InputEngine.InputMode.Pinyin
"", // InputEngine.InputMode.Cangjie
"", // InputEngine.InputMode.Zhuyin
"", // InputEngine.InputMode.Hangul
"あ", // InputEngine.InputMode.Hiragana
"カ", // InputEngine.InputMode.Katakana
"全角", // InputEngine.InputMode.FullwidthLatin
]
}
ChangeLanguageKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
Key {
key: Qt.Key_Comma
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u3001"
smallText: "\u2699"
smallTextVisible: keyboard.isFunctionPopupListAvailable()
highlighted: true
}
SpaceKey {
}
Key {
key: Qt.Key_Period
weight: normalKeyWidth
Layout.fillWidth: false
text: "\u3002"
alternativeKeys: "\u3001\uFF01\u3002\uFF1F,.?!"
smallText: "!?"
smallTextVisible: true
highlighted: true
}
HideKeyboardKey {
weight: normalKeyWidth
Layout.fillWidth: false
}
EnterKey {
weight: functionKeyWidth
Layout.fillWidth: false
}
}
}
}
}