diff options
author | Tse Kit Yam <me@kytse.com> | 2016-09-30 12:59:53 +1000 |
---|---|---|
committer | Tse Kit Yam <me@kytse.com> | 2016-09-30 12:59:53 +1000 |
commit | 73f798c039ac4e2b8127f79ed2fb4f0ca085e73f (patch) | |
tree | e162f68c3d51bd35a49facb78d68d35f2af5309c /cocoa | |
parent | 03378bf5015987dd140d7fabd3d043ae909a4afc (diff) | |
download | scintilla-mirror-73f798c039ac4e2b8127f79ed2fb4f0ca085e73f.tar.gz |
Recognize the numeric keypad '+', '-', and '/' keys as SCK_ADD, SCK_SUBTRACT,
and SCK_DIVIDE.
Diffstat (limited to 'cocoa')
-rw-r--r-- | cocoa/ScintillaCocoa.mm | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index 9fe70e3a8..200b39df7 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -2081,7 +2081,7 @@ bool ScintillaCocoa::Draw(NSRect rect, CGContextRef gc) /** * Helper function to translate OS X key codes to Scintilla key codes. */ -static inline UniChar KeyTranslate(UniChar unicodeChar) +static inline UniChar KeyTranslate(UniChar unicodeChar, NSEventModifierFlags modifierFlags) { switch (unicodeChar) { @@ -2110,6 +2110,21 @@ static inline UniChar KeyTranslate(UniChar unicodeChar) return SCK_RETURN; case 27: return SCK_ESCAPE; + case '+': + if (modifierFlags & NSNumericPadKeyMask) + return SCK_ADD; + else + return unicodeChar; + case '-': + if (modifierFlags & NSNumericPadKeyMask) + return SCK_SUBTRACT; + else + return unicodeChar; + case '/': + if (modifierFlags & NSNumericPadKeyMask) + return SCK_DIVIDE; + else + return unicodeChar; case 127: return SCK_BACK; case '\t': @@ -2158,11 +2173,13 @@ bool ScintillaCocoa::KeyboardInput(NSEvent* event) for (size_t i = 0; i < input.length; i++) { const UniChar originalKey = [input characterAtIndex: i]; - UniChar key = KeyTranslate(originalKey); + NSEventModifierFlags modifierFlags = [event modifierFlags]; + + UniChar key = KeyTranslate(originalKey, modifierFlags); bool consumed = false; // Consumed as command? - if (KeyDownWithModifiers(key, TranslateModifierFlags([event modifierFlags]), &consumed)) + if (KeyDownWithModifiers(key, TranslateModifierFlags(modifierFlags), &consumed)) handled = true; if (consumed) handled = true; |