8
8
#if defined(__WXOSX__)
9
9
#include < Carbon/Carbon.h>
10
10
#endif
11
+ #if defined(__WXGTK__)
12
+ #include < gdk/gdkkeysyms.h>
13
+ #endif
11
14
12
15
namespace xtd ::forms::native {
13
16
template <typename control_t >
@@ -571,7 +574,15 @@ namespace xtd::forms::native {
571
574
572
575
template <typename control_t >
573
576
inline void control_wrapper<control_t >::wx_evt_key_down(wxEvent& event) {
574
- #if defined(__WXOSX__)
577
+ #if defined (__WXMSW__)
578
+ if (static_cast <wxKeyEvent&>(event).GetKeyCode () == WXK_WINDOWS_LEFT || static_cast <wxKeyEvent&>(event).GetKeyCode () == WXK_WINDOWS_RIGHT) return ;
579
+ #elif defined(__WXGTK__)
580
+ if (static_cast <wxKeyEvent&>(event).GetKeyCode () == WXK_NONE && static_cast <wxKeyEvent&>(event).GetRawKeyCode () == GDK_KEY_ISO_Level3_Shift) {
581
+ static_cast <wxKeyEvent&>(event).m_keyCode = WXK_ALT;
582
+ event_handler_->send_message (reinterpret_cast <intptr>(event_handler_), WM_KEYDOWN, convert_to_virtual_key (static_cast <wxKeyEvent&>(event)), 0 , reinterpret_cast <intptr>(&event));
583
+ return ;
584
+ }
585
+ #elif defined(__WXOSX__)
575
586
static auto functionKeyModifierIsDown = false ;
576
587
if (static_cast <wxKeyEvent&>(event).GetKeyCode () != WXK_NONE || static_cast <wxKeyEvent&>(event).GetRawKeyCode () != kVK_Function ) functionKeyModifierIsDown = false ;
577
588
else {
@@ -582,14 +593,19 @@ namespace xtd::forms::native {
582
593
return ;
583
594
}
584
595
}
585
- #elif defined (__WXMSW__)
586
- if (static_cast <wxKeyEvent&>(event).GetKeyCode () == WXK_WINDOWS_LEFT || static_cast <wxKeyEvent&>(event).GetKeyCode () == WXK_WINDOWS_RIGHT) return ;
587
596
#endif
588
597
event_handler_->send_message (reinterpret_cast <intptr>(event_handler_), WM_KEYDOWN, convert_to_virtual_key (static_cast <wxKeyEvent&>(event)), 0 , reinterpret_cast <intptr>(&event));
589
598
}
590
599
591
600
template <typename control_t >
592
601
inline void control_wrapper<control_t >::wx_evt_key_up(wxEvent& event) {
602
+ #if defined(__WXGTK__)
603
+ if (static_cast <wxKeyEvent&>(event).GetKeyCode () == WXK_NONE && static_cast <wxKeyEvent&>(event).GetRawKeyCode () == GDK_KEY_ISO_Level3_Shift) {
604
+ static_cast <wxKeyEvent&>(event).m_keyCode = WXK_ALT;
605
+ event_handler_->send_message (reinterpret_cast <intptr>(event_handler_), WM_KEYUP, convert_to_virtual_key (static_cast <wxKeyEvent&>(event)), 0 , reinterpret_cast <intptr>(&event));
606
+ return ;
607
+ }
608
+ #endif
593
609
event.Skip (!event_handler_->send_message (reinterpret_cast <intptr>(event_handler_), WM_KEYUP, convert_to_virtual_key (static_cast <wxKeyEvent&>(event)), 0 , reinterpret_cast <intptr>(&event)));
594
610
}
595
611
0 commit comments