Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qohosnativenodekeyevent.cpp
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <qohosnativenodekeyevent.h>
5
6#include <QtCore/qmap.h>
7#include <optional>
8
10
11namespace
12{
13
15 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_0, Qt::Key_Insert},
16 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_1, Qt::Key_End},
17 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_2, Qt::Key_Down},
18 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_3, Qt::Key_PageDown},
19 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_4, Qt::Key_Left},
20 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_5, Qt::Key_Clear},
21 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_6, Qt::Key_Right},
22 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_7, Qt::Key_Home},
23 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_8, Qt::Key_Up},
24 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_9, Qt::Key_PageUp},
25 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_COMMA, Qt::Key_Delete},
26 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_DOT, Qt::Key_Delete},
27};
28
30 {::ArkUI_KeyCode::ARKUI_KEYCODE_UNKNOWN, Qt::Key_unknown},
31 {::ArkUI_KeyCode::ARKUI_KEYCODE_VOLUME_UP, Qt::Key_VolumeUp},
32 {::ArkUI_KeyCode::ARKUI_KEYCODE_VOLUME_DOWN, Qt::Key_VolumeDown},
33 {::ArkUI_KeyCode::ARKUI_KEYCODE_POWER, Qt::Key_PowerDown},
34 {::ArkUI_KeyCode::ARKUI_KEYCODE_CAMERA, Qt::Key_Camera},
35 {::ArkUI_KeyCode::ARKUI_KEYCODE_VOLUME_MUTE, Qt::Key_VolumeMute},
36 {::ArkUI_KeyCode::ARKUI_KEYCODE_MUTE, Qt::Key_VolumeMute},
37 {::ArkUI_KeyCode::ARKUI_KEYCODE_BRIGHTNESS_UP, Qt::Key_MonBrightnessUp},
38 {::ArkUI_KeyCode::ARKUI_KEYCODE_BRIGHTNESS_DOWN, Qt::Key_MonBrightnessDown},
39 {::ArkUI_KeyCode::ARKUI_KEYCODE_0, Qt::Key_0},
40 {::ArkUI_KeyCode::ARKUI_KEYCODE_1, Qt::Key_1},
41 {::ArkUI_KeyCode::ARKUI_KEYCODE_2, Qt::Key_2},
42 {::ArkUI_KeyCode::ARKUI_KEYCODE_3, Qt::Key_3},
43 {::ArkUI_KeyCode::ARKUI_KEYCODE_4, Qt::Key_4},
44 {::ArkUI_KeyCode::ARKUI_KEYCODE_5, Qt::Key_5},
45 {::ArkUI_KeyCode::ARKUI_KEYCODE_6, Qt::Key_6},
46 {::ArkUI_KeyCode::ARKUI_KEYCODE_7, Qt::Key_7},
47 {::ArkUI_KeyCode::ARKUI_KEYCODE_8, Qt::Key_8},
48 {::ArkUI_KeyCode::ARKUI_KEYCODE_9, Qt::Key_9},
49 {::ArkUI_KeyCode::ARKUI_KEYCODE_STAR, Qt::Key_Asterisk},
50 {::ArkUI_KeyCode::ARKUI_KEYCODE_POUND, Qt::Key_NumberSign},
51 {::ArkUI_KeyCode::ARKUI_KEYCODE_DPAD_UP, Qt::Key_Up},
52 {::ArkUI_KeyCode::ARKUI_KEYCODE_DPAD_DOWN, Qt::Key_Down},
53 {::ArkUI_KeyCode::ARKUI_KEYCODE_DPAD_LEFT, Qt::Key_Left},
54 {::ArkUI_KeyCode::ARKUI_KEYCODE_DPAD_RIGHT, Qt::Key_Right},
55 {::ArkUI_KeyCode::ARKUI_KEYCODE_DPAD_CENTER, Qt::Key_Enter},
56 {::ArkUI_KeyCode::ARKUI_KEYCODE_A, Qt::Key_A},
57 {::ArkUI_KeyCode::ARKUI_KEYCODE_B, Qt::Key_B},
58 {::ArkUI_KeyCode::ARKUI_KEYCODE_C, Qt::Key_C},
59 {::ArkUI_KeyCode::ARKUI_KEYCODE_D, Qt::Key_D},
60 {::ArkUI_KeyCode::ARKUI_KEYCODE_E, Qt::Key_E},
61 {::ArkUI_KeyCode::ARKUI_KEYCODE_F, Qt::Key_F},
62 {::ArkUI_KeyCode::ARKUI_KEYCODE_G, Qt::Key_G},
63 {::ArkUI_KeyCode::ARKUI_KEYCODE_H, Qt::Key_H},
64 {::ArkUI_KeyCode::ARKUI_KEYCODE_I, Qt::Key_I},
65 {::ArkUI_KeyCode::ARKUI_KEYCODE_J, Qt::Key_J},
66 {::ArkUI_KeyCode::ARKUI_KEYCODE_K, Qt::Key_K},
67 {::ArkUI_KeyCode::ARKUI_KEYCODE_L, Qt::Key_L},
68 {::ArkUI_KeyCode::ARKUI_KEYCODE_M, Qt::Key_M},
69 {::ArkUI_KeyCode::ARKUI_KEYCODE_N, Qt::Key_N},
70 {::ArkUI_KeyCode::ARKUI_KEYCODE_O, Qt::Key_O},
71 {::ArkUI_KeyCode::ARKUI_KEYCODE_P, Qt::Key_P},
72 {::ArkUI_KeyCode::ARKUI_KEYCODE_Q, Qt::Key_Q},
73 {::ArkUI_KeyCode::ARKUI_KEYCODE_R, Qt::Key_R},
74 {::ArkUI_KeyCode::ARKUI_KEYCODE_S, Qt::Key_S},
75 {::ArkUI_KeyCode::ARKUI_KEYCODE_T, Qt::Key_T},
76 {::ArkUI_KeyCode::ARKUI_KEYCODE_U, Qt::Key_U},
77 {::ArkUI_KeyCode::ARKUI_KEYCODE_V, Qt::Key_V},
78 {::ArkUI_KeyCode::ARKUI_KEYCODE_W, Qt::Key_W},
79 {::ArkUI_KeyCode::ARKUI_KEYCODE_X, Qt::Key_X},
80 {::ArkUI_KeyCode::ARKUI_KEYCODE_Y, Qt::Key_Y},
81 {::ArkUI_KeyCode::ARKUI_KEYCODE_Z, Qt::Key_Z},
82 {::ArkUI_KeyCode::ARKUI_KEYCODE_COMMA, Qt::Key_Comma},
83 {::ArkUI_KeyCode::ARKUI_KEYCODE_PERIOD, Qt::Key_Period},
84 {::ArkUI_KeyCode::ARKUI_KEYCODE_ALT_LEFT, Qt::Key_Alt},
85 {::ArkUI_KeyCode::ARKUI_KEYCODE_ALT_RIGHT, Qt::Key_AltGr},
86 {::ArkUI_KeyCode::ARKUI_KEYCODE_SHIFT_LEFT, Qt::Key_Shift},
87 {::ArkUI_KeyCode::ARKUI_KEYCODE_SHIFT_RIGHT, Qt::Key_Shift},
88 {::ArkUI_KeyCode::ARKUI_KEYCODE_TAB, Qt::Key_Tab},
89 {::ArkUI_KeyCode::ARKUI_KEYCODE_SPACE, Qt::Key_Space},
90 {::ArkUI_KeyCode::ARKUI_KEYCODE_EXPLORER, Qt::Key_Explorer},
91 {::ArkUI_KeyCode::ARKUI_KEYCODE_ENVELOPE, Qt::Key_LaunchMail},
92 {::ArkUI_KeyCode::ARKUI_KEYCODE_ENTER, Qt::Key_Return},
93 {::ArkUI_KeyCode::ARKUI_KEYCODE_DEL, Qt::Key_Backspace},
94 {::ArkUI_KeyCode::ARKUI_KEYCODE_GRAVE, Qt::Key_QuoteLeft},
95 {::ArkUI_KeyCode::ARKUI_KEYCODE_MINUS, Qt::Key_Minus},
96 {::ArkUI_KeyCode::ARKUI_KEYCODE_EQUALS, Qt::Key_Equal},
97 {::ArkUI_KeyCode::ARKUI_KEYCODE_LEFT_BRACKET, Qt::Key_BracketLeft},
98 {::ArkUI_KeyCode::ARKUI_KEYCODE_RIGHT_BRACKET, Qt::Key_BracketRight},
99 {::ArkUI_KeyCode::ARKUI_KEYCODE_BACKSLASH, Qt::Key_Backslash},
100 {::ArkUI_KeyCode::ARKUI_KEYCODE_SEMICOLON, Qt::Key_Semicolon},
101 {::ArkUI_KeyCode::ARKUI_KEYCODE_APOSTROPHE, Qt::Key_Apostrophe},
102 {::ArkUI_KeyCode::ARKUI_KEYCODE_SLASH, Qt::Key_Slash},
103 {::ArkUI_KeyCode::ARKUI_KEYCODE_MENU, Qt::Key_Menu},
104 {::ArkUI_KeyCode::ARKUI_KEYCODE_PAGE_UP, Qt::Key_PageUp},
105 {::ArkUI_KeyCode::ARKUI_KEYCODE_PAGE_DOWN, Qt::Key_PageDown},
106 {::ArkUI_KeyCode::ARKUI_KEYCODE_ESCAPE, Qt::Key_Escape},
107 {::ArkUI_KeyCode::ARKUI_KEYCODE_FORWARD_DEL, Qt::Key_Delete},
108 {::ArkUI_KeyCode::ARKUI_KEYCODE_CTRL_LEFT, Qt::Key_Control},
109 {::ArkUI_KeyCode::ARKUI_KEYCODE_CTRL_RIGHT, Qt::Key_Control},
110 {::ArkUI_KeyCode::ARKUI_KEYCODE_CAPS_LOCK, Qt::Key_CapsLock},
111 {::ArkUI_KeyCode::ARKUI_KEYCODE_SCROLL_LOCK, Qt::Key_ScrollLock},
112 {::ArkUI_KeyCode::ARKUI_KEYCODE_META_LEFT, Qt::Key_Meta},
113 {::ArkUI_KeyCode::ARKUI_KEYCODE_META_RIGHT, Qt::Key_Meta},
114 {::ArkUI_KeyCode::ARKUI_KEYCODE_SYSRQ, Qt::Key_SysReq},
115 {::ArkUI_KeyCode::ARKUI_KEYCODE_MOVE_HOME, Qt::Key_Home},
116 {::ArkUI_KeyCode::ARKUI_KEYCODE_MOVE_END, Qt::Key_End},
117 {::ArkUI_KeyCode::ARKUI_KEYCODE_INSERT, Qt::Key_Insert},
118 {::ArkUI_KeyCode::ARKUI_KEYCODE_FORWARD, Qt::Key_Forward},
119 {::ArkUI_KeyCode::ARKUI_KEYCODE_MEDIA_PLAY, Qt::Key_MediaPlay},
120 {::ArkUI_KeyCode::ARKUI_KEYCODE_MEDIA_PAUSE, Qt::Key_MediaPause},
121 {::ArkUI_KeyCode::ARKUI_KEYCODE_MEDIA_CLOSE, Qt::Key_MediaStop},
122 {::ArkUI_KeyCode::ARKUI_KEYCODE_MEDIA_EJECT, Qt::Key_Eject},
123 {::ArkUI_KeyCode::ARKUI_KEYCODE_MEDIA_RECORD, Qt::Key_MediaRecord},
124 {::ArkUI_KeyCode::ARKUI_KEYCODE_F1, Qt::Key_F1},
125 {::ArkUI_KeyCode::ARKUI_KEYCODE_F2, Qt::Key_F2},
126 {::ArkUI_KeyCode::ARKUI_KEYCODE_F3, Qt::Key_F3},
127 {::ArkUI_KeyCode::ARKUI_KEYCODE_F4, Qt::Key_F4},
128 {::ArkUI_KeyCode::ARKUI_KEYCODE_F5, Qt::Key_F5},
129 {::ArkUI_KeyCode::ARKUI_KEYCODE_F6, Qt::Key_F6},
130 {::ArkUI_KeyCode::ARKUI_KEYCODE_F7, Qt::Key_F7},
131 {::ArkUI_KeyCode::ARKUI_KEYCODE_F8, Qt::Key_F8},
132 {::ArkUI_KeyCode::ARKUI_KEYCODE_F9, Qt::Key_F9},
133 {::ArkUI_KeyCode::ARKUI_KEYCODE_F10, Qt::Key_F10},
134 {::ArkUI_KeyCode::ARKUI_KEYCODE_F11, Qt::Key_F11},
135 {::ArkUI_KeyCode::ARKUI_KEYCODE_F12, Qt::Key_F12},
136 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUM_LOCK, Qt::Key_NumLock},
137 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_0, Qt::Key_0},
138 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_1, Qt::Key_1},
139 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_2, Qt::Key_2},
140 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_3, Qt::Key_3},
141 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_4, Qt::Key_4},
142 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_5, Qt::Key_5},
143 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_6, Qt::Key_6},
144 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_7, Qt::Key_7},
145 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_8, Qt::Key_8},
146 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_9, Qt::Key_9},
147 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_DIVIDE, Qt::Key_Slash},
148 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_MULTIPLY, Qt::Key_Asterisk},
149 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_SUBTRACT, Qt::Key_Minus},
150 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_ADD, Qt::Key_Plus},
151 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_DOT, Qt::Key_Period},
152 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_COMMA, Qt::Key_Comma},
153 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_ENTER, Qt::Key_Enter},
154 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_EQUALS, Qt::Key_Equal},
155 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_LEFT_PAREN, Qt::Key_ParenLeft},
156 {::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_RIGHT_PAREN, Qt::Key_ParenRight},
157};
158
160 {::ArkUI_KeyCode::ARKUI_KEYCODE_0, Qt::Key_ParenRight},
161 {::ArkUI_KeyCode::ARKUI_KEYCODE_1, Qt::Key_Exclam},
162 {::ArkUI_KeyCode::ARKUI_KEYCODE_2, Qt::Key_At},
163 {::ArkUI_KeyCode::ARKUI_KEYCODE_3, Qt::Key_NumberSign},
164 {::ArkUI_KeyCode::ARKUI_KEYCODE_4, Qt::Key_Dollar},
165 {::ArkUI_KeyCode::ARKUI_KEYCODE_5, Qt::Key_Percent},
166 {::ArkUI_KeyCode::ARKUI_KEYCODE_6, Qt::Key_AsciiCircum},
167 {::ArkUI_KeyCode::ARKUI_KEYCODE_7, Qt::Key_Ampersand},
168 {::ArkUI_KeyCode::ARKUI_KEYCODE_8, Qt::Key_Asterisk},
169 {::ArkUI_KeyCode::ARKUI_KEYCODE_9, Qt::Key_ParenLeft},
170 {::ArkUI_KeyCode::ARKUI_KEYCODE_LEFT_BRACKET, Qt::Key_BraceLeft},
171 {::ArkUI_KeyCode::ARKUI_KEYCODE_RIGHT_BRACKET, Qt::Key_BraceRight},
172 {::ArkUI_KeyCode::ARKUI_KEYCODE_BACKSLASH, Qt::Key_Bar},
173 {::ArkUI_KeyCode::ARKUI_KEYCODE_SEMICOLON, Qt::Key_Colon},
174 {::ArkUI_KeyCode::ARKUI_KEYCODE_APOSTROPHE, Qt::Key_QuoteDbl},
175 {::ArkUI_KeyCode::ARKUI_KEYCODE_SLASH, Qt::Key_Question},
176 {::ArkUI_KeyCode::ARKUI_KEYCODE_COMMA, Qt::Key_Less},
177 {::ArkUI_KeyCode::ARKUI_KEYCODE_PERIOD, Qt::Key_Greater},
178 {::ArkUI_KeyCode::ARKUI_KEYCODE_MINUS, Qt::Key_Underscore},
179 {::ArkUI_KeyCode::ARKUI_KEYCODE_EQUALS, Qt::Key_Plus},
180 {::ArkUI_KeyCode::ARKUI_KEYCODE_GRAVE, Qt::Key_AsciiTilde},
181};
182
183class QOhosNativeNodeKeyEvent final : public QOhosKeyEvent
184{
185public:
187 ::ArkUI_KeyEventType keyEventType,
188 ::ArkUI_KeyCode keyCode,
189 QFlags<OhosKeyboardModifier> keysFlags);
191
192 std::optional<QOhosQtKeyEvent> tryConvertToQOhosQtKeyEvent() const override;
193 bool equals(const QOhosKeyEvent &other) const override;
194
195private:
196 QEvent::Type convertKeyEventType() const;
197 bool isKeyFromNumPad() const;
198 Qt::Key convertKeyCode(Qt::KeyboardModifiers qtModifiers) const;
199
200 ::ArkUI_KeyEventType m_keyEventType;
201 ::ArkUI_KeyCode m_keyCode;
202 QFlags<OhosKeyboardModifier> m_keysFlags;
203};
204
205QOhosNativeNodeKeyEvent::QOhosNativeNodeKeyEvent(
206 ::ArkUI_KeyEventType keyEventType,
207 ::ArkUI_KeyCode keyCode,
208 QFlags<OhosKeyboardModifier> keysFlags)
210{
211}
212
213QOhosNativeNodeKeyEvent::~QOhosNativeNodeKeyEvent() = default;
214
215std::optional<QOhosQtKeyEvent> QOhosNativeNodeKeyEvent::tryConvertToQOhosQtKeyEvent() const
216{
217 if (m_keyEventType == ::ArkUI_KeyEventType::ARKUI_KEY_EVENT_UNKNOWN) {
218 qOhosWarning(QtForOhos) << "Cannot convert to QOhosQtKeyEvent - key action unknown";
219 return {};
220 }
221
222 const auto qtModifiers = QtKeyEventHelpers::convertOhosToQtKeyboardModifiersWithNumpad(
223 m_keysFlags, isKeyFromNumPad());
224 const auto qtKeyAction = convertKeyEventType();
225 const auto qtKeyCode = convertKeyCode(qtModifiers);
226 const auto qGuiApplicationKeyboardModifiers = QtKeyEventHelpers::convertCurrentOhosKeyModifiersForQGuiApplication(
227 qtModifiers, m_keysFlags, qtKeyCode);
228 const auto qtKeyText = QtKeyEventHelpers::tryConvertQtKeyCodeToKeyText(qtKeyCode, qtModifiers, m_keysFlags);
229
230 return QOhosQtKeyEvent{
231 qtKeyAction, qtKeyCode, qtKeyText, qtModifiers, qGuiApplicationKeyboardModifiers,
232 static_cast<quint32>(m_keyCode)};
233}
234
235bool QOhosNativeNodeKeyEvent::equals(const QOhosKeyEvent &other) const
236{
237 if (typeid(other) != typeid(QOhosNativeNodeKeyEvent))
238 return false;
239
240 const auto &otherNativeNodeKeyEvent = static_cast<const QOhosNativeNodeKeyEvent &>(other);
241
242 return m_keyEventType == otherNativeNodeKeyEvent.m_keyEventType
243 && m_keyCode == otherNativeNodeKeyEvent.m_keyCode
244 && m_keysFlags == otherNativeNodeKeyEvent.m_keysFlags;
245}
246
247QEvent::Type QOhosNativeNodeKeyEvent::convertKeyEventType() const
248{
249 return m_keyEventType == ::ArkUI_KeyEventType::ARKUI_KEY_EVENT_DOWN
250 ? QEvent::KeyPress
251 : m_keyEventType == ::ArkUI_KeyEventType::ARKUI_KEY_EVENT_UP
252 ? QEvent::KeyRelease
253 : QEvent::None;
254}
255
256bool QOhosNativeNodeKeyEvent::isKeyFromNumPad() const
257{
258 switch (m_keyCode) {
259 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_0:
260 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_1:
261 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_2:
262 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_3:
263 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_4:
264 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_5:
265 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_6:
266 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_7:
267 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_8:
268 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_9:
269 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_DIVIDE:
270 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_MULTIPLY:
271 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_SUBTRACT:
272 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_ADD:
273 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_DOT:
274 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_COMMA:
275 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_ENTER:
276 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_EQUALS:
277 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_LEFT_PAREN:
278 case ::ArkUI_KeyCode::ARKUI_KEYCODE_NUMPAD_RIGHT_PAREN:
279 return true;
280 default:
281 return false;
282 }
283}
284
285Qt::Key QOhosNativeNodeKeyEvent::convertKeyCode(Qt::KeyboardModifiers qtModifiers) const
286{
288 && ohosNativeNodeQtKeyShiftPressedMap.contains(m_keyCode)) {
289 return ohosNativeNodeQtKeyShiftPressedMap.value(m_keyCode);
290 }
291
292 const bool keyNumLockFlagOn = m_keysFlags.testFlag(OhosKeyboardModifier::NUM_LOCK);
293 if ((!keyNumLockFlagOn || QtKeyEventHelpers::isOnlyShiftModificatorPressed(qtModifiers))
294 && ohosNativeNodeNumpadSpecialQtKeyMap.contains(m_keyCode)) {
295 return ohosNativeNodeNumpadSpecialQtKeyMap.value(m_keyCode);
296 }
297
298 if (ohosNativeNodeQtKeyMap.contains(m_keyCode))
299 return ohosNativeNodeQtKeyMap.value(m_keyCode);
300
301 qOhosWarning(QtForOhos) << "Cannot find mapping for ::ArkUI_KeyCode =" << m_keyCode;
302 return Qt::Key_unknown;
303}
304
305}
306
308 ::ArkUI_KeyEventType keyEventType, ::ArkUI_KeyCode keyCode, QFlags<OhosKeyboardModifier> keysFlags)
309{
310 return std::make_shared<QOhosNativeNodeKeyEvent>(keyEventType, keyCode, keysFlags);
311}
312
314{
315 return makeQOhosNativeNodeKeyEvent(
316 ::ArkUI_KeyEventType::ARKUI_KEY_EVENT_UNKNOWN, ::ArkUI_KeyCode::ARKUI_KEYCODE_UNKNOWN, {});
317}
318
319QT_END_NAMESPACE
QOhosNativeNodeKeyEvent(::ArkUI_KeyEventType keyEventType, ::ArkUI_KeyCode keyCode, QFlags< OhosKeyboardModifier > keysFlags)
bool equals(const QOhosKeyEvent &other) const override
std::optional< QOhosQtKeyEvent > tryConvertToQOhosQtKeyEvent() const override
Combined button and popup list for selecting options.
const QMap<::ArkUI_KeyCode, Qt::Key > ohosNativeNodeNumpadSpecialQtKeyMap
const QMap<::ArkUI_KeyCode, Qt::Key > ohosNativeNodeQtKeyShiftPressedMap
QMap<::ArkUI_KeyCode, Qt::Key > ohosNativeNodeQtKeyMap
bool isOnlyShiftModificatorPressed(Qt::KeyboardModifiers keyboardModifiers)
std::shared_ptr< QOhosKeyEvent > makeEmptyQOhosNativeNodeKeyEvent()
std::shared_ptr< QOhosKeyEvent > makeQOhosNativeNodeKeyEvent(::ArkUI_KeyEventType keyEventType, ::ArkUI_KeyCode keyCode, QFlags< OhosKeyboardModifier > keysFlags)