aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/ScintillaCocoa.mm
diff options
context:
space:
mode:
Diffstat (limited to 'cocoa/ScintillaCocoa.mm')
-rw-r--r--cocoa/ScintillaCocoa.mm23
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;