From 4a482b23859ad1aba68e475ef23288fb4f1d490d Mon Sep 17 00:00:00 2001 From: Marco Antognini Date: Sun, 22 Apr 2012 09:17:14 +0200 Subject: [PATCH] Fixed TextEntered event on Mac OS X (Close #192) --- src/SFML/Window/OSX/SFOpenGLView.mm | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/SFML/Window/OSX/SFOpenGLView.mm b/src/SFML/Window/OSX/SFOpenGLView.mm index d9daad1a6..e685bf39e 100644 --- a/src/SFML/Window/OSX/SFOpenGLView.mm +++ b/src/SFML/Window/OSX/SFOpenGLView.mm @@ -562,7 +562,25 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask); // Ignore escape key and non text keycode. (See NSEvent.h) // They produce a sound alert. unichar code = [[ev characters] characterAtIndex:0]; - if ([ev keyCode] != 0x35 && (code < 0xF700 || code > 0xF8FF)) { + unsigned short keycode = [ev keyCode]; + + // Backspace and Delete unicode values are badly handled by Apple. + // We do a small workaround here : + + // Backspace + if (keycode == 0x33) { + // Send the correct unicode value (i.e. 8) instead of 127 (which is 'delete') + m_requester->textEntered(8); + } + + // Delete + else if (keycode == 0x75 || keycode == NSDeleteFunctionKey) { + // Instead of the value 63272 we send 127. + m_requester->textEntered(127); + } + + // All other unicode values + else if (keycode != 0x35 && (code < 0xF700 || code > 0xF8FF)) { // Let's see if its a valid text. NSText* text = [[self window] fieldEditor:YES forObject:self];