From 8a96ca894cc341d6d7d83cacf40b41329fa65e2d Mon Sep 17 00:00:00 2001 From: whitequark Date: Wed, 12 Oct 2016 23:42:41 +0400 Subject: [PATCH] OS X: map the backspace key to the "Delete" function. Apple hardware does not have a discrete Delete key, so Backspace is used for deleting stuff instead. --- src/cocoa/cocoamain.mm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/cocoa/cocoamain.mm b/src/cocoa/cocoamain.mm index 9ad2ff6..b47c5c9 100644 --- a/src/cocoa/cocoamain.mm +++ b/src/cocoa/cocoamain.mm @@ -374,8 +374,6 @@ CONVERT(Rect) if(NSString *nsChr = [event charactersIgnoringModifiers]) chr = [nsChr characterAtIndex:0]; - if(chr == NSDeleteCharacter) /* map delete back to backspace */ - chr = '\b'; if(chr >= NSF1FunctionKey && chr <= NSF12FunctionKey) chr = SolveSpace::GraphicsWindow::FUNCTION_KEY_BASE + (chr - NSF1FunctionKey); @@ -650,12 +648,15 @@ void InitMainMenu(NSMenu *mainMenu) { label = [[NSString stringWithUTF8String:entry->label] stringByReplacingOccurrencesOfString:@"&" withString:@""]; - unichar accel_char = entry->accel & + unichar accelChar = entry->accel & ~(GraphicsWindow::SHIFT_MASK | GraphicsWindow::CTRL_MASK); - if(accel_char > GraphicsWindow::FUNCTION_KEY_BASE && - accel_char <= GraphicsWindow::FUNCTION_KEY_BASE + 12) - accel_char = NSF1FunctionKey + (accel_char - GraphicsWindow::FUNCTION_KEY_BASE - 1); - NSString *accel = [NSString stringWithCharacters:&accel_char length:1]; + if(accelChar > GraphicsWindow::FUNCTION_KEY_BASE && + accelChar <= GraphicsWindow::FUNCTION_KEY_BASE + 12) { + accelChar = NSF1FunctionKey + (accelChar - GraphicsWindow::FUNCTION_KEY_BASE - 1); + } else if(accelChar == GraphicsWindow::DELETE_KEY) { + accelChar = NSBackspaceCharacter; + } + NSString *accel = [NSString stringWithCharacters:&accelChar length:1]; menuItem = [levels[entry->level] addItemWithTitle:label action:NULL keyEquivalent:[accel lowercaseString]];