Skip to content

Commit e56de93

Browse files
committed
Update convert_to_virtual_key
1 parent a46efbe commit e56de93

File tree

1 file changed

+148
-154
lines changed

1 file changed

+148
-154
lines changed

src/xtd.forms.native.wxwidgets/include/xtd/forms/native/wxwidgets/control_wrapper.hpp

Lines changed: 148 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -152,166 +152,160 @@ namespace xtd::forms::native {
152152

153153
template<typename control_t>
154154
inline intptr control_wrapper<control_t>::convert_to_virtual_key(const wxKeyEvent& key_event) {
155-
intptr key_data = VK_NONE;
156-
if (key_event.GetUnicodeKey() != WXK_NONE && key_event.GetUnicodeKey() != WXK_DELETE)
157-
key_data = static_cast<intptr>(key_event.GetUnicodeKey());
158-
else {
159-
switch (key_event.GetKeyCode()) {
160-
case WXK_NONE:
155+
if (key_event.GetUnicodeKey() != WXK_NONE && key_event.GetUnicodeKey() != WXK_DELETE) return static_cast<intptr>(key_event.GetUnicodeKey());
161156
#if defined(__WXOSX__)
162-
if (key_event.GetRawKeyCode() == kVK_Function) key_data = VK_FUNCTION;
157+
if (key_event.GetKeyCode() == WXK_NONE && key_event.GetRawKeyCode() == kVK_Function) return VK_FUNCTION;
163158
#endif
164-
break;
165-
case WXK_BACK: key_data = VK_BACK; break;
166-
case WXK_TAB: key_data = VK_TAB; break;
167-
case WXK_RETURN: key_data = VK_RETURN; break;
168-
case WXK_ESCAPE: key_data = VK_ESCAPE; break;
169-
case WXK_SPACE: key_data = VK_SPACE; break;
170-
case WXK_DELETE: key_data = VK_DELETE; break;
171-
case WXK_START: key_data = VK_LAUNCH_APP1; break;
172-
case WXK_LBUTTON: key_data = VK_LBUTTON; break;
173-
case WXK_RBUTTON: key_data = VK_RBUTTON; break;
174-
case WXK_CANCEL: key_data = VK_CANCEL; break;
175-
case WXK_MBUTTON: key_data = VK_MBUTTON; break;
176-
case WXK_CLEAR: key_data = VK_CLEAR; break;
177-
case WXK_SHIFT: key_data = VK_SHIFT; break;
178-
case WXK_ALT: key_data = VK_MENU; break;
159+
160+
switch (key_event.GetKeyCode()) {
161+
case WXK_NONE: return VK_NONE;
162+
case WXK_BACK: return VK_BACK;
163+
case WXK_TAB: return VK_TAB;
164+
case WXK_RETURN: return VK_RETURN;
165+
case WXK_ESCAPE: return VK_ESCAPE;
166+
case WXK_SPACE: return VK_SPACE;
167+
case WXK_DELETE: return VK_DELETE;
168+
case WXK_START: return VK_LAUNCH_APP1;
169+
case WXK_LBUTTON: return VK_LBUTTON;
170+
case WXK_RBUTTON: return VK_RBUTTON;
171+
case WXK_CANCEL: return VK_CANCEL;
172+
case WXK_MBUTTON: return VK_MBUTTON;
173+
case WXK_CLEAR: return VK_CLEAR;
174+
case WXK_SHIFT: return VK_SHIFT;
175+
case WXK_ALT: return VK_MENU;
179176
#if defined(__WXOSX__)
180-
case WXK_RAW_CONTROL: key_data = key_event.GetRawKeyCode() == kVK_Control ? VK_LWIN : VK_RWIN; break;
181-
case WXK_COMMAND: key_data = VK_CONTROL; break;
177+
case WXK_RAW_CONTROL: return key_event.GetRawKeyCode() == kVK_Control ? VK_LWIN : VK_RWIN;
178+
case WXK_COMMAND: return VK_CONTROL;
182179
#else
183-
case WXK_CONTROL: key_data = VK_CONTROL; break;
180+
case WXK_CONTROL: return VK_CONTROL;
184181
#endif
185-
case WXK_MENU: key_data = VK_MENU; break;
186-
case WXK_PAUSE: key_data = VK_PAUSE; break;
187-
case WXK_CAPITAL: key_data = VK_CAPITAL; break;
188-
case WXK_END: key_data = VK_END; break;
189-
case WXK_HOME: key_data = VK_HOME; break;
190-
case WXK_LEFT: key_data = VK_LEFT; break;
191-
case WXK_UP: key_data = VK_UP; break;
192-
case WXK_RIGHT: key_data = VK_RIGHT; break;
193-
case WXK_DOWN: key_data = VK_DOWN; break;
194-
case WXK_SELECT: key_data = VK_SELECT; break;
195-
case WXK_PRINT: key_data = VK_PRINT; break;
196-
case WXK_EXECUTE: key_data = VK_EXECUTE; break;
197-
case WXK_SNAPSHOT: key_data = VK_SNAPSHOT; break;
198-
case WXK_INSERT: key_data = VK_INSERT; break;
199-
case WXK_HELP: key_data = VK_HELP; break;
200-
case WXK_NUMPAD0: key_data = VK_NUMPAD0; break;
201-
case WXK_NUMPAD1: key_data = VK_NUMPAD1; break;
202-
case WXK_NUMPAD2: key_data = VK_NUMPAD2; break;
203-
case WXK_NUMPAD3: key_data = VK_NUMPAD3; break;
204-
case WXK_NUMPAD4: key_data = VK_NUMPAD4; break;
205-
case WXK_NUMPAD5: key_data = VK_NUMPAD5; break;
206-
case WXK_NUMPAD6: key_data = VK_NUMPAD6; break;
207-
case WXK_NUMPAD7: key_data = VK_NUMPAD7; break;
208-
case WXK_NUMPAD8: key_data = VK_NUMPAD8; break;
209-
case WXK_NUMPAD9: key_data = VK_NUMPAD9; break;
210-
case WXK_MULTIPLY: key_data = VK_MULTIPLY; break;
211-
case WXK_ADD: key_data = VK_ADD; break;
212-
case WXK_SEPARATOR: key_data = VK_SEPARATOR; break;
213-
case WXK_DIVIDE: key_data = VK_DIVIDE; break;
214-
case WXK_F1: key_data = VK_F1; break;
215-
case WXK_F2: key_data = VK_F2; break;
216-
case WXK_F3: key_data = VK_F3; break;
217-
case WXK_F4: key_data = VK_F4; break;
218-
case WXK_F5: key_data = VK_F5; break;
219-
case WXK_F6: key_data = VK_F6; break;
220-
case WXK_F7: key_data = VK_F7; break;
221-
case WXK_F8: key_data = VK_F8; break;
222-
case WXK_F9: key_data = VK_F9; break;
223-
case WXK_F10: key_data = VK_F10; break;
224-
case WXK_F11: key_data = VK_F11; break;
225-
case WXK_F12: key_data = VK_F12; break;
226-
case WXK_F13: key_data = VK_F13; break;
227-
case WXK_F14: key_data = VK_F14; break;
228-
case WXK_F15: key_data = VK_F15; break;
229-
case WXK_F16: key_data = VK_F16; break;
230-
case WXK_F17: key_data = VK_F17; break;
231-
case WXK_F18: key_data = VK_F18; break;
232-
case WXK_F19: key_data = VK_F19; break;
233-
case WXK_F20: key_data = VK_F20; break;
234-
case WXK_F21: key_data = VK_F21; break;
235-
case WXK_F22: key_data = VK_F22; break;
236-
case WXK_F23: key_data = VK_F23; break;
237-
case WXK_F24: key_data = VK_F24; break;
238-
case WXK_NUMLOCK: key_data = VK_NUMLOCK; break;
239-
case WXK_SCROLL: key_data = VK_SCROLL; break;
240-
case WXK_PAGEUP: key_data = VK_PAGEUP; break;
241-
case WXK_PAGEDOWN: key_data = VK_PAGEDOWN; break;
242-
/// --> num pad special keys
243-
case WXK_NUMPAD_SPACE: key_data = VK_SPACE; break;
244-
case WXK_NUMPAD_TAB: key_data = VK_TAB; break;
245-
case WXK_NUMPAD_ENTER: key_data = VK_RETURN; break;
246-
case WXK_NUMPAD_F1: key_data = VK_F1; break;
247-
case WXK_NUMPAD_F2: key_data = VK_F2; break;
248-
case WXK_NUMPAD_F3: key_data = VK_F3; break;
249-
case WXK_NUMPAD_F4: key_data = VK_F4; break;
250-
case WXK_NUMPAD_HOME: key_data = VK_HOME; break;
251-
case WXK_NUMPAD_LEFT: key_data = VK_LEFT; break;
252-
case WXK_NUMPAD_UP: key_data = VK_UP; break;
253-
case WXK_NUMPAD_RIGHT: key_data = VK_RIGHT; break;
254-
case WXK_NUMPAD_DOWN: key_data = VK_DOWN; break;
255-
case WXK_NUMPAD_PAGEUP: key_data = VK_PAGEUP; break;
256-
case WXK_NUMPAD_PAGEDOWN: key_data = VK_PAGEDOWN; break;
257-
case WXK_NUMPAD_END: key_data = VK_END; break;
258-
case WXK_NUMPAD_BEGIN: key_data = VK_HOME; break; // ???
259-
case WXK_NUMPAD_INSERT: key_data = VK_INSERT; break;
260-
case WXK_NUMPAD_DELETE: key_data = VK_DELETE; break;
261-
case WXK_NUMPAD_EQUAL: key_data = '='; break;
262-
/// <-- num pad special keys
263-
case WXK_NUMPAD_MULTIPLY: key_data = VK_MULTIPLY; break;
264-
case WXK_NUMPAD_ADD: key_data = VK_ADD; break;
265-
case WXK_NUMPAD_SEPARATOR: key_data = VK_SEPARATOR; break;
266-
case WXK_NUMPAD_SUBTRACT: key_data = VK_SUBTRACT; break;
267-
case WXK_NUMPAD_DECIMAL: key_data = VK_DECIMAL; break;
268-
case WXK_NUMPAD_DIVIDE: key_data = VK_DIVIDE; break;
269-
case WXK_WINDOWS_LEFT: key_data = xtd::environment::os_version().is_macos() ? VK_CONTROL : VK_LWIN; break;
270-
case WXK_WINDOWS_RIGHT: key_data = xtd::environment::os_version().is_macos() ? VK_CONTROL : VK_RWIN; break;
271-
case WXK_WINDOWS_MENU: key_data = VK_APPS; break;
272-
//case WXK_RAW_CONTROL: key_data = xtd::forms::keys::control_key; break;
273-
case WXK_SPECIAL1: key_data = VK_OEM_1; break;
274-
case WXK_SPECIAL2: key_data = VK_OEM_2; break;
275-
case WXK_SPECIAL3: key_data = VK_OEM_3; break;
276-
case WXK_SPECIAL4: key_data = VK_OEM_4; break;
277-
case WXK_SPECIAL5: key_data = VK_OEM_5; break;
278-
case WXK_SPECIAL6: key_data = VK_OEM_6; break;
279-
case WXK_SPECIAL7: key_data = VK_OEM_7; break;
280-
case WXK_SPECIAL8: key_data = VK_OEM_8; break;
281-
case WXK_SPECIAL9: key_data = VK_OEM_AX; break;
282-
case WXK_SPECIAL10: key_data = VK_OEM_102; break;
283-
case WXK_SPECIAL11: key_data = VK_OEM_RESET; break;
284-
case WXK_SPECIAL12: key_data = VK_OEM_JUMP; break;
285-
case WXK_SPECIAL13: key_data = VK_OEM_PA1; break;
286-
case WXK_SPECIAL14: key_data = VK_OEM_PA2; break;
287-
case WXK_SPECIAL15: key_data = VK_OEM_PA3; break;
288-
case WXK_SPECIAL16: key_data = VK_OEM_WSCTRL; break;
289-
case WXK_SPECIAL17: key_data = VK_OEM_CUSEL; break;
290-
case WXK_SPECIAL18: key_data = VK_OEM_ATTN; break;
291-
case WXK_SPECIAL19: key_data = VK_OEM_FINISH; break;
292-
case WXK_SPECIAL20: key_data = VK_OEM_COPY; break;
293-
case WXK_BROWSER_BACK: key_data = VK_BROWSER_BACK; break;
294-
case WXK_BROWSER_FORWARD: key_data = VK_BROWSER_FORWARD; break;
295-
case WXK_BROWSER_REFRESH: key_data = VK_BROWSER_REFRESH; break;
296-
case WXK_BROWSER_STOP: key_data = VK_BROWSER_STOP; break;
297-
case WXK_BROWSER_SEARCH: key_data = VK_BROWSER_SEARCH; break;
298-
case WXK_BROWSER_FAVORITES: key_data = VK_BROWSER_FAVORITES; break;
299-
case WXK_BROWSER_HOME: key_data = VK_BROWSER_HOME; break;
300-
case WXK_VOLUME_MUTE: key_data = VK_VOLUME_MUTE; break;
301-
case WXK_VOLUME_DOWN: key_data = VK_VOLUME_DOWN; break;
302-
case WXK_VOLUME_UP: key_data = VK_VOLUME_UP; break;
303-
case WXK_MEDIA_NEXT_TRACK: key_data = VK_MEDIA_NEXT_TRACK; break;
304-
case WXK_MEDIA_PREV_TRACK: key_data = VK_MEDIA_PREV_TRACK; break;
305-
case WXK_MEDIA_STOP: key_data = VK_MEDIA_STOP; break;
306-
case WXK_MEDIA_PLAY_PAUSE: key_data = VK_MEDIA_PLAY_PAUSE; break;
307-
case WXK_LAUNCH_MAIL: key_data = VK_LAUNCH_MAIL; break;
308-
case WXK_LAUNCH_APP1: key_data = VK_LAUNCH_APP1; break;
309-
case WXK_LAUNCH_APP2: key_data = VK_LAUNCH_APP2; break;
310-
default: break;
311-
}
182+
case WXK_MENU: return VK_MENU;
183+
case WXK_PAUSE: return VK_PAUSE;
184+
case WXK_CAPITAL: return VK_CAPITAL;
185+
case WXK_END: return VK_END;
186+
case WXK_HOME: return VK_HOME;
187+
case WXK_LEFT: return VK_LEFT;
188+
case WXK_UP: return VK_UP;
189+
case WXK_RIGHT: return VK_RIGHT;
190+
case WXK_DOWN: return VK_DOWN;
191+
case WXK_SELECT: return VK_SELECT;
192+
case WXK_PRINT: return VK_PRINT;
193+
case WXK_EXECUTE: return VK_EXECUTE;
194+
case WXK_SNAPSHOT: return VK_SNAPSHOT;
195+
case WXK_INSERT: return VK_INSERT;
196+
case WXK_HELP: return VK_HELP;
197+
case WXK_NUMPAD0: return VK_NUMPAD0;
198+
case WXK_NUMPAD1: return VK_NUMPAD1;
199+
case WXK_NUMPAD2: return VK_NUMPAD2;
200+
case WXK_NUMPAD3: return VK_NUMPAD3;
201+
case WXK_NUMPAD4: return VK_NUMPAD4;
202+
case WXK_NUMPAD5: return VK_NUMPAD5;
203+
case WXK_NUMPAD6: return VK_NUMPAD6;
204+
case WXK_NUMPAD7: return VK_NUMPAD7;
205+
case WXK_NUMPAD8: return VK_NUMPAD8;
206+
case WXK_NUMPAD9: return VK_NUMPAD9;
207+
case WXK_MULTIPLY: return VK_MULTIPLY;
208+
case WXK_ADD: return VK_ADD;
209+
case WXK_SEPARATOR: return VK_SEPARATOR;
210+
case WXK_DIVIDE: return VK_DIVIDE;
211+
case WXK_F1: return VK_F1;
212+
case WXK_F2: return VK_F2;
213+
case WXK_F3: return VK_F3;
214+
case WXK_F4: return VK_F4;
215+
case WXK_F5: return VK_F5;
216+
case WXK_F6: return VK_F6;
217+
case WXK_F7: return VK_F7;
218+
case WXK_F8: return VK_F8;
219+
case WXK_F9: return VK_F9;
220+
case WXK_F10: return VK_F10;
221+
case WXK_F11: return VK_F11;
222+
case WXK_F12: return VK_F12;
223+
case WXK_F13: return VK_F13;
224+
case WXK_F14: return VK_F14;
225+
case WXK_F15: return VK_F15;
226+
case WXK_F16: return VK_F16;
227+
case WXK_F17: return VK_F17;
228+
case WXK_F18: return VK_F18;
229+
case WXK_F19: return VK_F19;
230+
case WXK_F20: return VK_F20;
231+
case WXK_F21: return VK_F21;
232+
case WXK_F22: return VK_F22;
233+
case WXK_F23: return VK_F23;
234+
case WXK_F24: return VK_F24;
235+
case WXK_NUMLOCK: return VK_NUMLOCK;
236+
case WXK_SCROLL: return VK_SCROLL;
237+
case WXK_PAGEUP: return VK_PAGEUP;
238+
case WXK_PAGEDOWN: return VK_PAGEDOWN;
239+
/// --> num pad special keys
240+
case WXK_NUMPAD_SPACE: return VK_SPACE;
241+
case WXK_NUMPAD_TAB: return VK_TAB;
242+
case WXK_NUMPAD_ENTER: return VK_RETURN;
243+
case WXK_NUMPAD_F1: return VK_F1;
244+
case WXK_NUMPAD_F2: return VK_F2;
245+
case WXK_NUMPAD_F3: return VK_F3;
246+
case WXK_NUMPAD_F4: return VK_F4;
247+
case WXK_NUMPAD_HOME: return VK_HOME;
248+
case WXK_NUMPAD_LEFT: return VK_LEFT;
249+
case WXK_NUMPAD_UP: return VK_UP;
250+
case WXK_NUMPAD_RIGHT: return VK_RIGHT;
251+
case WXK_NUMPAD_DOWN: return VK_DOWN;
252+
case WXK_NUMPAD_PAGEUP: return VK_PAGEUP;
253+
case WXK_NUMPAD_PAGEDOWN: return VK_PAGEDOWN;
254+
case WXK_NUMPAD_END: return VK_END;
255+
case WXK_NUMPAD_BEGIN: return VK_HOME; // ???
256+
case WXK_NUMPAD_INSERT: return VK_INSERT;
257+
case WXK_NUMPAD_DELETE: return VK_DELETE;
258+
case WXK_NUMPAD_EQUAL: return '=';
259+
/// <-- num pad special keys
260+
case WXK_NUMPAD_MULTIPLY: return VK_MULTIPLY;
261+
case WXK_NUMPAD_ADD: return VK_ADD;
262+
case WXK_NUMPAD_SEPARATOR: return VK_SEPARATOR;
263+
case WXK_NUMPAD_SUBTRACT: return VK_SUBTRACT;
264+
case WXK_NUMPAD_DECIMAL: return VK_DECIMAL;
265+
case WXK_NUMPAD_DIVIDE: return VK_DIVIDE;
266+
case WXK_WINDOWS_LEFT: return xtd::environment::os_version().is_macos() ? VK_CONTROL : VK_LWIN;
267+
case WXK_WINDOWS_RIGHT: return xtd::environment::os_version().is_macos() ? VK_CONTROL : VK_RWIN;
268+
case WXK_WINDOWS_MENU: return VK_APPS;
269+
//case WXK_RAW_CONTROL: return xtd::forms::keys::control_key;
270+
case WXK_SPECIAL1: return VK_OEM_1;
271+
case WXK_SPECIAL2: return VK_OEM_2;
272+
case WXK_SPECIAL3: return VK_OEM_3;
273+
case WXK_SPECIAL4: return VK_OEM_4;
274+
case WXK_SPECIAL5: return VK_OEM_5;
275+
case WXK_SPECIAL6: return VK_OEM_6;
276+
case WXK_SPECIAL7: return VK_OEM_7;
277+
case WXK_SPECIAL8: return VK_OEM_8;
278+
case WXK_SPECIAL9: return VK_OEM_AX;
279+
case WXK_SPECIAL10: return VK_OEM_102;
280+
case WXK_SPECIAL11: return VK_OEM_RESET;
281+
case WXK_SPECIAL12: return VK_OEM_JUMP;
282+
case WXK_SPECIAL13: return VK_OEM_PA1;
283+
case WXK_SPECIAL14: return VK_OEM_PA2;
284+
case WXK_SPECIAL15: return VK_OEM_PA3;
285+
case WXK_SPECIAL16: return VK_OEM_WSCTRL;
286+
case WXK_SPECIAL17: return VK_OEM_CUSEL;
287+
case WXK_SPECIAL18: return VK_OEM_ATTN;
288+
case WXK_SPECIAL19: return VK_OEM_FINISH;
289+
case WXK_SPECIAL20: return VK_OEM_COPY;
290+
case WXK_BROWSER_BACK: return VK_BROWSER_BACK;
291+
case WXK_BROWSER_FORWARD: return VK_BROWSER_FORWARD;
292+
case WXK_BROWSER_REFRESH: return VK_BROWSER_REFRESH;
293+
case WXK_BROWSER_STOP: return VK_BROWSER_STOP;
294+
case WXK_BROWSER_SEARCH: return VK_BROWSER_SEARCH;
295+
case WXK_BROWSER_FAVORITES: return VK_BROWSER_FAVORITES;
296+
case WXK_BROWSER_HOME: return VK_BROWSER_HOME;
297+
case WXK_VOLUME_MUTE: return VK_VOLUME_MUTE;
298+
case WXK_VOLUME_DOWN: return VK_VOLUME_DOWN;
299+
case WXK_VOLUME_UP: return VK_VOLUME_UP;
300+
case WXK_MEDIA_NEXT_TRACK: return VK_MEDIA_NEXT_TRACK;
301+
case WXK_MEDIA_PREV_TRACK: return VK_MEDIA_PREV_TRACK;
302+
case WXK_MEDIA_STOP: return VK_MEDIA_STOP;
303+
case WXK_MEDIA_PLAY_PAUSE: return VK_MEDIA_PLAY_PAUSE;
304+
case WXK_LAUNCH_MAIL: return VK_LAUNCH_MAIL;
305+
case WXK_LAUNCH_APP1: return VK_LAUNCH_APP1;
306+
case WXK_LAUNCH_APP2: return VK_LAUNCH_APP2;
307+
default: return VK_NONE;
312308
}
313-
314-
return key_data;
315309
}
316310

317311
template<typename control_t>

0 commit comments

Comments
 (0)