Skip to content

Commit

Permalink
Fix mac key modifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
TheROPFather committed Jun 24, 2018
1 parent f42e255 commit 9baf024
Show file tree
Hide file tree
Showing 5 changed files with 1,004 additions and 997 deletions.
86 changes: 46 additions & 40 deletions src/arch/InputHandler/InputHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,51 @@ void InputHandler::ButtonPressed( DeviceInput di )
}
}


wchar_t InputHandler::ApplyKeyModifiers(wchar_t c)
{
bool bHoldingShift =
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT));

bool bHoldingCtrl =
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL));

// todo: handle Caps Lock -freem
if( bHoldingShift && !bHoldingCtrl )
{
MakeUpper( &c, 1 );

switch( c )
{
case L'`': c = L'~'; break;
case L'1': c = L'!'; break;
case L'2': c = L'@'; break;
case L'§': c = L'±'; break;
case L'3': c = L'#'; break;
case L'4': c = L'$'; break;
case L'5': c = L'%'; break;
case L'6': c = L'^'; break;
case L'7': c = L'&'; break;
case L'8': c = L'*'; break;
case L'9': c = L'('; break;
case L'0': c = L')'; break;
case L'-': c = L'_'; break;
case L'=': c = L'+'; break;
case L'[': c = L'{'; break;
case L']': c = L'}'; break;
case L'\'': c = L'"'; break;
case L'\\': c = L'|'; break;
case L';': c = L':'; break;
case L',': c = L'<'; break;
case L'.': c = L'>'; break;
case L'/': c = L'?'; break;
}
}

return c;
}
wchar_t InputHandler::DeviceButtonToChar( DeviceButton button, bool bUseCurrentKeyModifiers )
{
wchar_t c = L'\0';
Expand All @@ -61,46 +106,7 @@ wchar_t InputHandler::DeviceButtonToChar( DeviceButton button, bool bUseCurrentK
// don't implement DeviceButtonToChar.
if( bUseCurrentKeyModifiers )
{
bool bHoldingShift =
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT));

bool bHoldingCtrl =
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL)) ||
INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL));

// todo: handle Caps Lock -freem

if( bHoldingShift && !bHoldingCtrl )
{
MakeUpper( &c, 1 );

switch( c )
{
case L'`': c = L'~'; break;
case L'1': c = L'!'; break;
case L'2': c = L'@'; break;
case L'3': c = L'#'; break;
case L'4': c = L'$'; break;
case L'5': c = L'%'; break;
case L'6': c = L'^'; break;
case L'7': c = L'&'; break;
case L'8': c = L'*'; break;
case L'9': c = L'('; break;
case L'0': c = L')'; break;
case L'-': c = L'_'; break;
case L'=': c = L'+'; break;
case L'[': c = L'{'; break;
case L']': c = L'}'; break;
case L'\'': c = L'"'; break;
case L'\\': c = L'|'; break;
case L';': c = L':'; break;
case L',': c = L'<'; break;
case L'.': c = L'>'; break;
case L'/': c = L'?'; break;
}
}

c = ApplyKeyModifiers(c);
}

return c;
Expand Down
1 change: 1 addition & 0 deletions src/arch/InputHandler/InputHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class InputHandler: public RageDriver

// Override to return a pretty string that's specific to the controller type.
virtual RString GetDeviceSpecificInputString( const DeviceInput &di );
static wchar_t ApplyKeyModifiers(wchar_t c);
virtual RString GetLocalizedInputString( const DeviceInput &di );
virtual wchar_t DeviceButtonToChar( DeviceButton button, bool bUseCurrentKeyModifiers );

Expand Down
Loading

0 comments on commit 9baf024

Please sign in to comment.