diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-06-04 15:36:24 +0200 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-06-04 15:36:24 +0200 |
commit | 95773c478555728c7c0a183185c9d0cab5cff300 (patch) | |
tree | f45e900c96394998775ce5599dd12fb3df73a84d | |
parent | cbba9c45062d7daf76823cad8a98893132c3ba81 (diff) | |
parent | 4e0f2389c3a79f1e558ee13e6d51e7dbe531368e (diff) |
Merge pull request #4943 from marcelofg55/master
Key modifiers (Ctrl, Alt, Meta and Shift) may be used as Input keys n…
-rw-r--r-- | platform/osx/os_osx.mm | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 065fe52b09..1d97ffacb6 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -772,20 +772,48 @@ static int translateKey(unsigned int key) - (void)flagsChanged:(NSEvent *)event { - /* int action; - unsigned int newModifierFlags = - [event modifierFlags] & NSDeviceIndependentModifierFlagsMask; + InputEvent ev; + int key = [event keyCode]; + int mod = [event modifierFlags]; - if (newModifierFlags > window->ns.modifierFlags) - action = GLFW_PRESS; - else - action = GLFW_RELEASE; + ev.type=InputEvent::KEY; - window->ns.modifierFlags = newModifierFlags; + if (key == 0x36 || key == 0x37) { + if (mod & NSCommandKeyMask) { + mod&= ~NSCommandKeyMask; + ev.key.pressed = true; + } else { + ev.key.pressed = false; + } + } else if (key == 0x38 || key == 0x3c) { + if (mod & NSShiftKeyMask) { + mod&= ~NSShiftKeyMask; + ev.key.pressed = true; + } else { + ev.key.pressed = false; + } + } else if (key == 0x3a || key == 0x3d) { + if (mod & NSAlternateKeyMask) { + mod&= ~NSAlternateKeyMask; + ev.key.pressed = true; + } else { + ev.key.pressed = false; + } + } else if (key == 0x3b || key == 0x3e) { + if (mod & NSControlKeyMask) { + mod&= ~NSControlKeyMask; + ev.key.pressed = true; + } else { + ev.key.pressed = false; + } + } else { + return; + } - const int key = translateKey([event keyCode]); - const int mods = translateFlags([event modifierFlags]); - _glfwInputKey(window, key, [event keyCode], action, mods);*/ + ev.key.mod=translateFlags(mod); + ev.key.scancode = latin_keyboard_keycode_convert(translateKey(key)); + + OS_OSX::singleton->push_input(ev); } - (void)keyUp:(NSEvent *)event |