1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "xt9jinputmethod_p.h"
#include "xt9jinputmethodprivate_p.h"
QT_BEGIN_NAMESPACE
namespace QtVirtualKeyboard {
/*!
\class QtVirtualKeyboard::Xt9JInputMethod
\internal
*/
Xt9JInputMethod::Xt9JInputMethod(QObject *parent) :
Xt9AwInputMethod(*new Xt9JInputMethodPrivate(this), parent)
{
}
QList<QVirtualKeyboardInputEngine::InputMode> Xt9JInputMethod::inputModes(const QString &locale)
{
QList<QVirtualKeyboardInputEngine::InputMode> result;
result.append(QVirtualKeyboardInputEngine::InputMode::Hiragana);
result.append(QVirtualKeyboardInputEngine::InputMode::Katakana);
result.append(QVirtualKeyboardInputEngine::InputMode::Romaji);
return result;
}
bool Xt9JInputMethod::setInputMode(const QString &locale, QVirtualKeyboardInputEngine::InputMode inputMode)
{
return Xt9AwInputMethod::setInputMode(locale, inputMode);
}
bool Xt9JInputMethod::keyEvent(Qt::Key key, const QString &text, Qt::KeyboardModifiers modifiers)
{
Q_D(Xt9JInputMethod);
switch (key) {
case Qt::Key_Right:
case Qt::Key_Left:
{
ET9U16 wCurrLen;
ET9STATUS eStatus = XT9_API(ET9GetSegmentationLength, &d->xt9Ime()->sWordSymbInfo, &wCurrLen);
if (eStatus == ET9STATUS_INVALID_MODE) {
if (key == Qt::Key_Right) {
} else if (!XT9_API(ET9SetSegmentationLength, &d->xt9Ime()->sWordSymbInfo, wCurrLen)) {
d->selectionListUpdate();
return true;
}
} else if (!eStatus) {
if (key == Qt::Key_Left) {
--wCurrLen;
} else {
++wCurrLen;
}
if (!XT9_API(ET9SetSegmentationLength, &d->xt9Ime()->sWordSymbInfo, wCurrLen)) {
d->selectionListUpdate();
return true;
}
}
break;
}
case 0x5C0F:
case 0x3099:
case 0x309A:
{
ET9MODIFIER eModifier;
switch (key) {
case 0x3099:
eModifier = ET9MODIFIER_JPNDAKUTEN_HANDAKUTEN;
break;
case 0x309A:
eModifier = ET9MODIFIER_JPNHANDAKUTEN;
break;
default:
eModifier = ET9MODIFIER_JPNALL;
break;
}
if (!XT9_API(ET9KDB_ModifyCurrentKey, &d->xt9Ime()->sKdbInfo, eModifier)) {
d->buildSelectionList();
d->updatePreeditText();
return true;
}
break;
}
default:
break;
}
return Xt9AwInputMethod::keyEvent(key, d->xt9Ime()->codeConverter->convertTo(text), modifiers);
}
bool Xt9JInputMethod::isModifyKeyEnabled() const
{
Q_D(const Xt9JInputMethod);
return d->isModifyKeyEnabled;
}
} // namespace QtVirtualKeyboard
QT_END_NAMESPACE
|