From e0f586866ebafa296bda849b392d09fc2e14d487 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Wed, 3 Mar 2021 11:03:47 +0200 Subject: CapsLock as a modifier key; adding a modifier mapping table IssueID #87 --- src/ui/window.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/ui/window.c') diff --git a/src/ui/window.c b/src/ui/window.c index 3518d97e..cbcca902 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -1532,6 +1532,7 @@ static iBool handleWindowEvent_Window_(iWindow *d, const SDL_WindowEvent *ev) { return iTrue; case SDL_WINDOWEVENT_FOCUS_GAINED: d->focusGainedAt = SDL_GetTicks(); + setCapsLockDown_Keys(iFalse); postCommand_App("window.focus.gained"); return iFalse; case SDL_WINDOWEVENT_FOCUS_LOST: @@ -1593,6 +1594,13 @@ iBool processEvent_Window(iWindow *d, const SDL_Event *ev) { As a workaround, ignore these events. */ return iTrue; /* won't go to bindings, either */ } + /* Apply keyboard modifier mapping. */ + if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) { + if (event.key.keysym.sym == SDLK_CAPSLOCK) { + setCapsLockDown_Keys(event.key.state == SDL_PRESSED); + } + event.key.keysym.mod = mapMods_Keys(event.key.keysym.mod & ~KMOD_CAPS); + } if (event.type == SDL_MOUSEBUTTONDOWN && d->ignoreClick) { d->ignoreClick = iFalse; return iTrue; -- cgit v1.2.3