Fixed sf::Keyboard on Mac OS X
This commit is contained in:
parent
3e2c3b8c95
commit
68494d0dbb
@ -108,7 +108,7 @@ public :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// Try to convert a character into a SFML key code.
|
/// Try to convert a character into a SFML key code.
|
||||||
///
|
///
|
||||||
/// Return sf::Keyboard::KeyCount if it doesn't match any 'localized' keys.
|
/// Return sf::Keyboard::Unknown if it doesn't match any 'localized' keys.
|
||||||
///
|
///
|
||||||
/// By 'localized' I mean keys that depend on the keyboard layout
|
/// By 'localized' I mean keys that depend on the keyboard layout
|
||||||
/// and might not be the same as the US keycode in some country
|
/// and might not be the same as the US keycode in some country
|
||||||
@ -121,7 +121,7 @@ public :
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
/// Try to convert a virtual keycode into a SFML key code.
|
/// Try to convert a virtual keycode into a SFML key code.
|
||||||
///
|
///
|
||||||
/// Return sf::Keyboard::KeyCount if the keycode is unknown.
|
/// Return sf::Keyboard::Unknown if the keycode is unknown.
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
static Keyboard::Key nonLocalizedKeys(UniChar virtualKeycode);
|
static Keyboard::Key nonLocalizedKeys(UniChar virtualKeycode);
|
||||||
|
@ -415,7 +415,7 @@ void HIDInputManager::loadKey(IOHIDElementRef key)
|
|||||||
// Translation went fine
|
// Translation went fine
|
||||||
|
|
||||||
// The corresponding SFML key code
|
// The corresponding SFML key code
|
||||||
Keyboard::Key code = Keyboard::KeyCount; // KeyCound means 'none'
|
Keyboard::Key code = Keyboard::Unknown; // KeyCound means 'none'
|
||||||
|
|
||||||
// First we look if the key down is from a list of characters
|
// First we look if the key down is from a list of characters
|
||||||
// that depend on keyboard localization
|
// that depend on keyboard localization
|
||||||
@ -425,12 +425,12 @@ void HIDInputManager::loadKey(IOHIDElementRef key)
|
|||||||
|
|
||||||
// The key is not a localized one so we try to find a
|
// The key is not a localized one so we try to find a
|
||||||
// corresponding code through virtual key code
|
// corresponding code through virtual key code
|
||||||
if (code == Keyboard::KeyCount) {
|
if (code == Keyboard::Unknown) {
|
||||||
code = nonLocalizedKeys(virtualCode);
|
code = nonLocalizedKeys(virtualCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// A code was found, wonderful!
|
// A code was found, wonderful!
|
||||||
if (code != Keyboard::KeyCount) {
|
if (code != Keyboard::Unknown) {
|
||||||
|
|
||||||
// Ok, everything went fine. Now we have a unique
|
// Ok, everything went fine. Now we have a unique
|
||||||
// corresponding sf::Keyboard::Key to one IOHIDElementRef
|
// corresponding sf::Keyboard::Key to one IOHIDElementRef
|
||||||
@ -455,7 +455,7 @@ void HIDInputManager::loadKey(IOHIDElementRef key)
|
|||||||
// 0x51 | 0x67 | Keypad Equal
|
// 0x51 | 0x67 | Keypad Equal
|
||||||
// 0x4c | 0x77 | Select
|
// 0x4c | 0x77 | Select
|
||||||
|
|
||||||
//if (code == Keyboard::KeyCount) { // The key is unknown.
|
//if (code == Keyboard::Unknown) { // The key is unknown.
|
||||||
// sf::err() << "This is an unknow key. Virtual key code is 0x"
|
// sf::err() << "This is an unknow key. Virtual key code is 0x"
|
||||||
// << std::hex
|
// << std::hex
|
||||||
// << (UInt32)virtualCode
|
// << (UInt32)virtualCode
|
||||||
@ -847,7 +847,7 @@ Keyboard::Key HIDInputManager::localizedKeys(UniChar ch)
|
|||||||
case 'Z': return sf::Keyboard::Z;
|
case 'Z': return sf::Keyboard::Z;
|
||||||
|
|
||||||
// The key is not 'localized'.
|
// The key is not 'localized'.
|
||||||
default: return sf::Keyboard::KeyCount;
|
default: return sf::Keyboard::Unknown;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask);
|
|||||||
/// Convert a key down/up NSEvent into an SFML key event.
|
/// Convert a key down/up NSEvent into an SFML key event.
|
||||||
/// Based on localizedKeys and nonLocalizedKeys function.
|
/// Based on localizedKeys and nonLocalizedKeys function.
|
||||||
///
|
///
|
||||||
/// Return sf::Keyboard::KeyCount as Code if the key is unknown.
|
/// Return sf::Keyboard::Unknown as Code if the key is unknown.
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
+(sf::Event::KeyEvent)convertNSKeyEventToSFMLEvent:(NSEvent *)anEvent;
|
+(sf::Event::KeyEvent)convertNSKeyEventToSFMLEvent:(NSEvent *)anEvent;
|
||||||
@ -532,7 +532,7 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask);
|
|||||||
if (m_useKeyRepeat || ![theEvent isARepeat]) {
|
if (m_useKeyRepeat || ![theEvent isARepeat]) {
|
||||||
sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
|
sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
|
||||||
|
|
||||||
if (key.code != sf::Keyboard::KeyCount) { // The key is recognized.
|
if (key.code != sf::Keyboard::Unknown) { // The key is recognized.
|
||||||
m_requester->keyDown(key);
|
m_requester->keyDown(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -608,7 +608,7 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask);
|
|||||||
|
|
||||||
sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
|
sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
|
||||||
|
|
||||||
if (key.code != sf::Keyboard::KeyCount) { // The key is recognized.
|
if (key.code != sf::Keyboard::Unknown) { // The key is recognized.
|
||||||
m_requester->keyUp(key);
|
m_requester->keyUp(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -626,7 +626,7 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask);
|
|||||||
|
|
||||||
// Setup a potential event key.
|
// Setup a potential event key.
|
||||||
sf::Event::KeyEvent key;
|
sf::Event::KeyEvent key;
|
||||||
key.code = sf::Keyboard::KeyCount;
|
key.code = sf::Keyboard::Unknown;
|
||||||
key.alt = modifiers & NSAlternateKeyMask;
|
key.alt = modifiers & NSAlternateKeyMask;
|
||||||
key.control = modifiers & NSControlKeyMask;
|
key.control = modifiers & NSControlKeyMask;
|
||||||
key.shift = modifiers & NSShiftKeyMask;
|
key.shift = modifiers & NSShiftKeyMask;
|
||||||
@ -1049,7 +1049,7 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask);
|
|||||||
key.system = modifierFlags & NSCommandKeyMask;
|
key.system = modifierFlags & NSCommandKeyMask;
|
||||||
|
|
||||||
// Key code.
|
// Key code.
|
||||||
key.code = sf::Keyboard::KeyCount;
|
key.code = sf::Keyboard::Unknown;
|
||||||
|
|
||||||
// First we look if the key down is from a list of caracter
|
// First we look if the key down is from a list of caracter
|
||||||
// that depend on keyboard localization.
|
// that depend on keyboard localization.
|
||||||
@ -1060,12 +1060,12 @@ NSUInteger keepOnlyMaskFromData(NSUInteger data, NSUInteger mask);
|
|||||||
|
|
||||||
// The key is not a localized one, so we try to find a corresponding code
|
// The key is not a localized one, so we try to find a corresponding code
|
||||||
// through virtual key code.
|
// through virtual key code.
|
||||||
if (key.code == sf::Keyboard::KeyCount) {
|
if (key.code == sf::Keyboard::Unknown) {
|
||||||
key.code = sf::priv::HIDInputManager::nonLocalizedKeys([anEvent keyCode]);
|
key.code = sf::priv::HIDInputManager::nonLocalizedKeys([anEvent keyCode]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//#ifdef SFML_DEBUG // Don't bother the final customers with annoying messages.
|
//#ifdef SFML_DEBUG // Don't bother the final customers with annoying messages.
|
||||||
// if (key.code == sf::Keyboard::KeyCount) { // The key is unknown.
|
// if (key.code == sf::Keyboard::Unknown) { // The key is unknown.
|
||||||
// sf::err() << "This is an unknow key. Virtual key code is 0x"
|
// sf::err() << "This is an unknow key. Virtual key code is 0x"
|
||||||
// << std::hex
|
// << std::hex
|
||||||
// << [anEvent keyCode]
|
// << [anEvent keyCode]
|
||||||
|
Loading…
Reference in New Issue
Block a user