Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
cocoa: Set keyboard mod state correctly when turning off capslock.
- Loading branch information
Showing
with
11 additions
and
1 deletion.
-
+11
−1
src/video/cocoa/SDL_cocoawindow.m
|
@@ -866,7 +866,17 @@ - (void)flagsChanged:(NSEvent *)theEvent |
|
|
10.15 beta, capslock comes through here as keycode 255, but it's safe |
|
|
to send duplicate key events; SDL filters them out quickly in |
|
|
SDL_SendKeyboardKey(). */ |
|
|
SDL_SendKeyboardKey(([theEvent modifierFlags] & NSEventModifierFlagCapsLock) ? SDL_PRESSED : SDL_RELEASED, SDL_SCANCODE_CAPSLOCK); |
|
|
|
|
|
/* Also note that SDL_SendKeyboardKey expects all capslock events to be |
|
|
keypresses; it won't toggle the mod state if you send a keyrelease. */ |
|
|
const SDL_bool osenabled = ([theEvent modifierFlags] & NSEventModifierFlagCapsLock) ? SDL_TRUE : SDL_FALSE; |
|
|
const SDL_bool sdlenabled = (SDL_GetModState() & KMOD_CAPS) ? SDL_TRUE : SDL_FALSE; |
|
|
if (!osenabled && sdlenabled) { |
|
|
SDL_ToggleModState(KMOD_CAPS, SDL_FALSE); |
|
|
SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_CAPSLOCK); |
|
|
} else if (osenabled && !sdlenabled) { |
|
|
SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_CAPSLOCK); |
|
|
} |
|
|
} |
|
|
- (void)keyDown:(NSEvent *)theEvent |
|
|
{ |
|
|