Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions BeefySysLib/platform/sdl/SdlBFApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,6 @@ static int SDLConvertKeyCode(SDL_Keycode scanCode)

switch (scanCode)
{
case SDLK_9: return '0';
case SDLK_CANCEL: return 0x03;
case SDLK_BACKSPACE: return 0x08;
case SDLK_TAB: return 0x09;
Expand All @@ -264,7 +263,8 @@ static int SDLConvertKeyCode(SDL_Keycode scanCode)
case SDLK_RSHIFT: return 0x10;
case SDLK_LCTRL: return 0x11;
case SDLK_RCTRL: return 0x11;
case SDLK_MENU: return 0x12;
case SDLK_LALT: return 0x12;
case SDLK_RALT: return 0x12;
case SDLK_PAUSE: return 0x13;
case SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LANG1): return 0x15;
case SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LANG2): return 0x15;
Expand Down Expand Up @@ -355,6 +355,8 @@ SdlBFApp::SdlBFApp()

mInstallDir += "/";

mIsControlDown = false;

if (bf_SDL_Init == NULL)
{
BF_GET_SDLPROC(SDL_Init);
Expand Down Expand Up @@ -472,7 +474,10 @@ void SdlBFApp::Run()
{
SdlBFWindow* sdlBFWindow = GetSdlWindowFromId(sdlEvent.window.windowID);
if(sdlBFWindow != NULL)
{
sdlBFWindow->mLostFocusFunc(sdlBFWindow);
mIsControlDown = false;
}
}
break;
case SDL_EVENT_MOUSE_BUTTON_UP:
Expand Down Expand Up @@ -514,11 +519,15 @@ void SdlBFApp::Run()
sdlBFWindow->mKeyCharFunc(sdlBFWindow, '\n');
break;
case SDLK_BACKSPACE:
sdlBFWindow->mKeyCharFunc(sdlBFWindow, '\b');
sdlBFWindow->mKeyCharFunc(sdlBFWindow, mIsControlDown ? '\x7F' : '\b');
break;
case SDLK_TAB:
sdlBFWindow->mKeyCharFunc(sdlBFWindow, '\t');
break;
case SDLK_LCTRL:
mIsControlDown = true;
break;

default:;
}
}
Expand All @@ -529,9 +538,9 @@ void SdlBFApp::Run()
SdlBFWindow* sdlBFWindow = GetSdlWindowFromId(sdlEvent.text.windowID);
if (sdlBFWindow != NULL)
{
wchar_t wchar;
mbstowcs(&wchar, sdlEvent.text.text, 1);
sdlBFWindow->mKeyCharFunc(sdlBFWindow, wchar);
const auto wideString = Beefy::UTF8Decode(sdlEvent.text.text);
for (int i = 0; i < wideString.length(); i++)
sdlBFWindow->mKeyCharFunc(sdlBFWindow, wideString[i]);
}
}
break;
Expand All @@ -540,6 +549,9 @@ void SdlBFApp::Run()
SdlBFWindow* sdlBFWindow = GetSdlWindowFromId(sdlEvent.key.windowID);
if (sdlBFWindow != NULL)
sdlBFWindow->mKeyUpFunc(sdlBFWindow, SDLConvertKeyCode(sdlEvent.key.key));

if (sdlEvent.key.key == SDLK_LCTRL)
mIsControlDown = false;
}
break;
case SDL_EVENT_WINDOW_MOVED:
Expand Down
2 changes: 2 additions & 0 deletions BeefySysLib/platform/sdl/SdlBFApp.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,12 @@ class SdlBFApp : public BFApp
{
public:
bool mInMsgProc;
bool mIsControlDown;
SdlWindowMap mSdlWindowMap;
SdlClipboardData* mSdlClipboardData;
SDL_GLContext mGLContext;


protected:
virtual void Draw() override;
virtual void PhysSetCursor() override;
Expand Down