Applied patch for bug [ 1205691 ] Modified Fn keys don't work
(Paul Konig) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* the raw keyboard codes are generated under wxGTK and wxMSW only */
|
/* the raw keyboard codes are generated under wxGTK and wxMSW only */
|
||||||
#if defined(__WXGTK__) || defined(__WXMSW__)
|
#if defined(__WXGTK__) || defined(__WXMSW__) || defined(__WXMAC__)
|
||||||
#define wxHAS_RAW_KEY_CODES
|
#define wxHAS_RAW_KEY_CODES
|
||||||
#else
|
#else
|
||||||
#undef wxHAS_RAW_KEY_CODES
|
#undef wxHAS_RAW_KEY_CODES
|
||||||
|
@@ -1250,7 +1250,6 @@ bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifi
|
|||||||
UInt32 state = 0;
|
UInt32 state = 0;
|
||||||
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey|shiftKey|optionKey))) | keycode, &state);
|
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey|shiftKey|optionKey))) | keycode, &state);
|
||||||
keychar = short(keyInfo & charCodeMask);
|
keychar = short(keyInfo & charCodeMask);
|
||||||
keycode = short(keyInfo & keyCodeMask) >> 8 ;
|
|
||||||
}
|
}
|
||||||
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
||||||
long realkeyval = keyval ;
|
long realkeyval = keyval ;
|
||||||
@@ -1261,6 +1260,39 @@ bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifi
|
|||||||
keyval = wxToupper( keyval ) ;
|
keyval = wxToupper( keyval ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for NUMPAD keys
|
||||||
|
if (keyval >= '0' && keyval <= '9' && keycode >= 82 && keycode <= 92)
|
||||||
|
{
|
||||||
|
keyval = keyval - '0' + WXK_NUMPAD0;
|
||||||
|
}
|
||||||
|
else if (keycode >= 67 && keycode <= 81)
|
||||||
|
{
|
||||||
|
switch (keycode)
|
||||||
|
{
|
||||||
|
case 76 :
|
||||||
|
keyval = WXK_NUMPAD_ENTER;
|
||||||
|
break;
|
||||||
|
case 81:
|
||||||
|
keyval = WXK_NUMPAD_EQUAL;
|
||||||
|
break;
|
||||||
|
case 67:
|
||||||
|
keyval = WXK_NUMPAD_MULTIPLY;
|
||||||
|
break;
|
||||||
|
case 75:
|
||||||
|
keyval = WXK_NUMPAD_DIVIDE;
|
||||||
|
break;
|
||||||
|
case 78:
|
||||||
|
keyval = WXK_NUMPAD_SUBTRACT;
|
||||||
|
break;
|
||||||
|
case 69:
|
||||||
|
keyval = WXK_NUMPAD_ADD;
|
||||||
|
break;
|
||||||
|
case 65:
|
||||||
|
keyval = WXK_NUMPAD_DECIMAL;
|
||||||
|
break;
|
||||||
|
} // end switch
|
||||||
|
}
|
||||||
|
|
||||||
wxKeyEvent event(wxEVT_KEY_DOWN);
|
wxKeyEvent event(wxEVT_KEY_DOWN);
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
event.m_shiftDown = modifiers & shiftKey;
|
event.m_shiftDown = modifiers & shiftKey;
|
||||||
@@ -1271,7 +1303,8 @@ bool wxApp::MacSendKeyDownEvent( wxWindow* focus , long keymessage , long modifi
|
|||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
event.m_uniChar = uniChar ;
|
event.m_uniChar = uniChar ;
|
||||||
#endif
|
#endif
|
||||||
|
event.m_rawCode = keymessage;
|
||||||
|
event.m_rawFlags = modifiers;
|
||||||
event.m_x = wherex;
|
event.m_x = wherex;
|
||||||
event.m_y = wherey;
|
event.m_y = wherey;
|
||||||
event.SetTimestamp(when);
|
event.SetTimestamp(when);
|
||||||
@@ -1397,7 +1430,6 @@ bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifier
|
|||||||
UInt32 state = 0;
|
UInt32 state = 0;
|
||||||
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey|shiftKey|optionKey))) | keycode, &state);
|
UInt32 keyInfo = KeyTranslate((Ptr)GetScriptManagerVariable(smKCHRCache), ( modifiers & (~(controlKey|shiftKey|optionKey))) | keycode, &state);
|
||||||
keychar = short(keyInfo & charCodeMask);
|
keychar = short(keyInfo & charCodeMask);
|
||||||
keycode = short(keyInfo & keyCodeMask) >> 8 ;
|
|
||||||
}
|
}
|
||||||
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
long keyval = wxMacTranslateKey(keychar, keycode) ;
|
||||||
|
|
||||||
@@ -1405,6 +1437,40 @@ bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifier
|
|||||||
{
|
{
|
||||||
keyval = wxToupper( keyval ) ;
|
keyval = wxToupper( keyval ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for NUMPAD keys
|
||||||
|
if (keyval >= '0' && keyval <= '9' && keycode >= 82 && keycode <= 92)
|
||||||
|
{
|
||||||
|
keyval = keyval - '0' + WXK_NUMPAD0;
|
||||||
|
}
|
||||||
|
else if (keycode >= 67 && keycode <= 81)
|
||||||
|
{
|
||||||
|
switch (keycode)
|
||||||
|
{
|
||||||
|
case 76 :
|
||||||
|
keyval = WXK_NUMPAD_ENTER;
|
||||||
|
break;
|
||||||
|
case 81:
|
||||||
|
keyval = WXK_NUMPAD_EQUAL;
|
||||||
|
break;
|
||||||
|
case 67:
|
||||||
|
keyval = WXK_NUMPAD_MULTIPLY;
|
||||||
|
break;
|
||||||
|
case 75:
|
||||||
|
keyval = WXK_NUMPAD_DIVIDE;
|
||||||
|
break;
|
||||||
|
case 78:
|
||||||
|
keyval = WXK_NUMPAD_SUBTRACT;
|
||||||
|
break;
|
||||||
|
case 69:
|
||||||
|
keyval = WXK_NUMPAD_ADD;
|
||||||
|
break;
|
||||||
|
case 65:
|
||||||
|
keyval = WXK_NUMPAD_DECIMAL;
|
||||||
|
break;
|
||||||
|
} // end switch
|
||||||
|
}
|
||||||
|
|
||||||
bool handled = false ;
|
bool handled = false ;
|
||||||
|
|
||||||
wxKeyEvent event(wxEVT_KEY_UP);
|
wxKeyEvent event(wxEVT_KEY_UP);
|
||||||
@@ -1417,6 +1483,8 @@ bool wxApp::MacSendKeyUpEvent( wxWindow* focus , long keymessage , long modifier
|
|||||||
event.m_uniChar = uniChar ;
|
event.m_uniChar = uniChar ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
event.m_rawCode = keymessage;
|
||||||
|
event.m_rawFlags = modifiers;
|
||||||
event.m_x = wherex;
|
event.m_x = wherex;
|
||||||
event.m_y = wherey;
|
event.m_y = wherey;
|
||||||
event.SetTimestamp(when);
|
event.SetTimestamp(when);
|
||||||
|
Reference in New Issue
Block a user