exposing control key combinations as before, fixing unicodekey casing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68868 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -137,7 +137,7 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const
|
||||
- (void)setImagePosition:(NSCellImagePosition)aPosition;
|
||||
@end
|
||||
|
||||
long wxOSXTranslateCocoaKey( NSEvent* event )
|
||||
long wxOSXTranslateCocoaKey( NSEvent* event, int eventType )
|
||||
{
|
||||
long retval = 0;
|
||||
|
||||
@@ -147,54 +147,61 @@ long wxOSXTranslateCocoaKey( NSEvent* event )
|
||||
// backspace char reports as delete w/modifiers for some reason
|
||||
if ([s length] == 1)
|
||||
{
|
||||
switch ( [s characterAtIndex:0] )
|
||||
if ( eventType == wxEVT_CHAR && ([event modifierFlags] & NSControlKeyMask) && ( [s characterAtIndex:0] >= 'a' && [s characterAtIndex:0] <= 'z' ) )
|
||||
{
|
||||
// backspace key
|
||||
case 0x7F :
|
||||
case 8 :
|
||||
retval = WXK_BACK;
|
||||
break;
|
||||
case NSUpArrowFunctionKey :
|
||||
retval = WXK_UP;
|
||||
break;
|
||||
case NSDownArrowFunctionKey :
|
||||
retval = WXK_DOWN;
|
||||
break;
|
||||
case NSLeftArrowFunctionKey :
|
||||
retval = WXK_LEFT;
|
||||
break;
|
||||
case NSRightArrowFunctionKey :
|
||||
retval = WXK_RIGHT;
|
||||
break;
|
||||
case NSInsertFunctionKey :
|
||||
retval = WXK_INSERT;
|
||||
break;
|
||||
case NSDeleteFunctionKey :
|
||||
retval = WXK_DELETE;
|
||||
break;
|
||||
case NSHomeFunctionKey :
|
||||
retval = WXK_HOME;
|
||||
break;
|
||||
// case NSBeginFunctionKey :
|
||||
// retval = WXK_BEGIN;
|
||||
// break;
|
||||
case NSEndFunctionKey :
|
||||
retval = WXK_END;
|
||||
break;
|
||||
case NSPageUpFunctionKey :
|
||||
retval = WXK_PAGEUP;
|
||||
break;
|
||||
case NSPageDownFunctionKey :
|
||||
retval = WXK_PAGEDOWN;
|
||||
break;
|
||||
case NSHelpFunctionKey :
|
||||
retval = WXK_HELP;
|
||||
break;
|
||||
default:
|
||||
int intchar = [s characterAtIndex: 0];
|
||||
if ( intchar >= NSF1FunctionKey && intchar <= NSF24FunctionKey )
|
||||
retval = WXK_F1 + (intchar - NSF1FunctionKey );
|
||||
break;
|
||||
retval = WXK_CONTROL_A + ([s characterAtIndex:0] - 'a');
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( [s characterAtIndex:0] )
|
||||
{
|
||||
// backspace key
|
||||
case 0x7F :
|
||||
case 8 :
|
||||
retval = WXK_BACK;
|
||||
break;
|
||||
case NSUpArrowFunctionKey :
|
||||
retval = WXK_UP;
|
||||
break;
|
||||
case NSDownArrowFunctionKey :
|
||||
retval = WXK_DOWN;
|
||||
break;
|
||||
case NSLeftArrowFunctionKey :
|
||||
retval = WXK_LEFT;
|
||||
break;
|
||||
case NSRightArrowFunctionKey :
|
||||
retval = WXK_RIGHT;
|
||||
break;
|
||||
case NSInsertFunctionKey :
|
||||
retval = WXK_INSERT;
|
||||
break;
|
||||
case NSDeleteFunctionKey :
|
||||
retval = WXK_DELETE;
|
||||
break;
|
||||
case NSHomeFunctionKey :
|
||||
retval = WXK_HOME;
|
||||
break;
|
||||
// case NSBeginFunctionKey :
|
||||
// retval = WXK_BEGIN;
|
||||
// break;
|
||||
case NSEndFunctionKey :
|
||||
retval = WXK_END;
|
||||
break;
|
||||
case NSPageUpFunctionKey :
|
||||
retval = WXK_PAGEUP;
|
||||
break;
|
||||
case NSPageDownFunctionKey :
|
||||
retval = WXK_PAGEDOWN;
|
||||
break;
|
||||
case NSHelpFunctionKey :
|
||||
retval = WXK_HELP;
|
||||
break;
|
||||
default:
|
||||
int intchar = [s characterAtIndex: 0];
|
||||
if ( intchar >= NSF1FunctionKey && intchar <= NSF24FunctionKey )
|
||||
retval = WXK_F1 + (intchar - NSF1FunctionKey );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -310,7 +317,7 @@ void wxWidgetCocoaImpl::SetupKeyEvent(wxKeyEvent &wxevent , NSEvent * nsEvent, N
|
||||
wxString chars;
|
||||
if ( eventType != NSFlagsChanged )
|
||||
{
|
||||
NSString* nschars = [nsEvent charactersIgnoringModifiers];
|
||||
NSString* nschars = [[nsEvent charactersIgnoringModifiers] uppercaseString];
|
||||
if ( charString )
|
||||
{
|
||||
// if charString is set, it did not come from key up / key down
|
||||
@@ -328,7 +335,7 @@ void wxWidgetCocoaImpl::SetupKeyEvent(wxKeyEvent &wxevent , NSEvent * nsEvent, N
|
||||
|
||||
if (wxevent.GetEventType() != wxEVT_CHAR)
|
||||
{
|
||||
keyval = wxOSXTranslateCocoaKey(nsEvent) ;
|
||||
keyval = wxOSXTranslateCocoaKey(nsEvent, wxevent.GetEventType()) ;
|
||||
switch (eventType)
|
||||
{
|
||||
case NSKeyDown :
|
||||
@@ -349,8 +356,8 @@ void wxWidgetCocoaImpl::SetupKeyEvent(wxKeyEvent &wxevent , NSEvent * nsEvent, N
|
||||
case WXK_ALT:
|
||||
wxevent.SetEventType( wxevent.m_altDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||
break;
|
||||
case WXK_COMMAND:
|
||||
wxevent.SetEventType( wxevent.m_metaDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||
case WXK_RAW_CONTROL:
|
||||
wxevent.SetEventType( wxevent.m_rawControlDown ? wxEVT_KEY_DOWN : wxEVT_KEY_UP);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -2128,11 +2135,13 @@ bool wxWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event)
|
||||
{
|
||||
if ( IsUserPane() && [event type] == NSKeyDown)
|
||||
{
|
||||
if ( wxevent.GetKeyCode() < WXK_SPACE || wxevent.GetKeyCode() == WXK_DELETE || wxevent.GetKeyCode() >= WXK_START )
|
||||
long keycode = wxOSXTranslateCocoaKey( event, wxEVT_CHAR );
|
||||
|
||||
if ( (keycode > 0 && keycode < WXK_SPACE) || keycode == WXK_DELETE || keycode >= WXK_START )
|
||||
{
|
||||
// eventually we could setup a doCommandBySelector catcher and retransform this into the wx key chars
|
||||
wxKeyEvent wxevent2(wxevent) ;
|
||||
wxevent2.SetEventType(wxEVT_CHAR);
|
||||
wxevent2.m_keyCode = keycode;
|
||||
result = GetWXPeer()->OSXHandleKeyEvent(wxevent2);
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user