summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2019-06-04 19:45:49 +0300
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2019-06-04 19:50:50 +0300
commit360fb3af50cdbd8fd4c0af9913ac700add3ef256 (patch)
tree8fcba665470e4b833268502ea5fd015a75925b62 /platform
parentd0dc42f80c4b3351e86b998b9be139691d1777a1 (diff)
[macOS] Fixes hotkeys on "Dvorak - QWERTY ⌘" keyboard layout.
Diffstat (limited to 'platform')
-rw-r--r--platform/osx/os_osx.mm18
1 files changed, 9 insertions, 9 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 567d24de3e..2a11d6de37 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -1002,7 +1002,7 @@ static const _KeyCodeMap _keycodes[55] = {
{ '/', KEY_SLASH }
};
-static int remapKey(unsigned int key) {
+static int remapKey(unsigned int key, unsigned int state) {
if (isNumpadKey(key))
return translateKey(key);
@@ -1024,7 +1024,7 @@ static int remapKey(unsigned int key) {
OSStatus err = UCKeyTranslate(keyboardLayout,
key,
kUCKeyActionDisplay,
- 0,
+ (state >> 8) & 0xFF,
LMGetKbdType(),
kUCKeyTranslateNoDeadKeysBit,
&keysDown,
@@ -1051,7 +1051,7 @@ static int remapKey(unsigned int key) {
NSString *characters = [event characters];
NSUInteger length = [characters length];
- if (!OS_OSX::singleton->im_active && length > 0 && keycode_has_unicode(remapKey([event keyCode]))) {
+ if (!OS_OSX::singleton->im_active && length > 0 && keycode_has_unicode(remapKey([event keyCode], [event modifierFlags]))) {
// Fallback unicode character handler used if IME is not active
for (NSUInteger i = 0; i < length; i++) {
OS_OSX::KeyEvent ke;
@@ -1059,7 +1059,7 @@ static int remapKey(unsigned int key) {
ke.osx_state = [event modifierFlags];
ke.pressed = true;
ke.echo = [event isARepeat];
- ke.scancode = remapKey([event keyCode]);
+ ke.scancode = remapKey([event keyCode], [event modifierFlags]);
ke.raw = true;
ke.unicode = [characters characterAtIndex:i];
@@ -1071,7 +1071,7 @@ static int remapKey(unsigned int key) {
ke.osx_state = [event modifierFlags];
ke.pressed = true;
ke.echo = [event isARepeat];
- ke.scancode = remapKey([event keyCode]);
+ ke.scancode = remapKey([event keyCode], [event modifierFlags]);
ke.raw = false;
ke.unicode = 0;
@@ -1129,7 +1129,7 @@ static int remapKey(unsigned int key) {
}
ke.osx_state = mod;
- ke.scancode = remapKey(key);
+ ke.scancode = remapKey(key, mod);
ke.unicode = 0;
push_to_key_event_buffer(ke);
@@ -1144,14 +1144,14 @@ static int remapKey(unsigned int key) {
NSUInteger length = [characters length];
// Fallback unicode character handler used if IME is not active
- if (!OS_OSX::singleton->im_active && length > 0 && keycode_has_unicode(remapKey([event keyCode]))) {
+ if (!OS_OSX::singleton->im_active && length > 0 && keycode_has_unicode(remapKey([event keyCode], [event modifierFlags]))) {
for (NSUInteger i = 0; i < length; i++) {
OS_OSX::KeyEvent ke;
ke.osx_state = [event modifierFlags];
ke.pressed = false;
ke.echo = [event isARepeat];
- ke.scancode = remapKey([event keyCode]);
+ ke.scancode = remapKey([event keyCode], [event modifierFlags]);
ke.raw = true;
ke.unicode = [characters characterAtIndex:i];
@@ -1163,7 +1163,7 @@ static int remapKey(unsigned int key) {
ke.osx_state = [event modifierFlags];
ke.pressed = false;
ke.echo = [event isARepeat];
- ke.scancode = remapKey([event keyCode]);
+ ke.scancode = remapKey([event keyCode], [event modifierFlags]);
ke.raw = true;
ke.unicode = 0;