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