[Orxonox-commit 3348] r8036 - code/branches/usability/src/libraries/core/input
landauf at orxonox.net
landauf at orxonox.net
Sun Mar 6 19:12:12 CET 2011
Author: landauf
Date: 2011-03-06 19:12:11 +0100 (Sun, 06 Mar 2011)
New Revision: 8036
Modified:
code/branches/usability/src/libraries/core/input/InputBuffer.cc
code/branches/usability/src/libraries/core/input/InputBuffer.h
code/branches/usability/src/libraries/core/input/Keyboard.cc
code/branches/usability/src/libraries/core/input/Keyboard.h
Log:
moved keycode translator from InputBuffer to Keyboard, now it works also in the GUI
Modified: code/branches/usability/src/libraries/core/input/InputBuffer.cc
===================================================================
--- code/branches/usability/src/libraries/core/input/InputBuffer.cc 2011-03-06 15:32:05 UTC (rev 8035)
+++ code/branches/usability/src/libraries/core/input/InputBuffer.cc 2011-03-06 18:12:11 UTC (rev 8036)
@@ -46,20 +46,6 @@
0123456789 \
\\\"(){}[]<>.:,;_-+*/=!?|$&%^~#";
- this->keyTranslator_[KeyCode::Numpad0] = '0';
- this->keyTranslator_[KeyCode::Numpad1] = '1';
- this->keyTranslator_[KeyCode::Numpad2] = '2';
- this->keyTranslator_[KeyCode::Numpad3] = '3';
- this->keyTranslator_[KeyCode::Numpad4] = '4';
- this->keyTranslator_[KeyCode::Numpad5] = '5';
- this->keyTranslator_[KeyCode::Numpad6] = '6';
- this->keyTranslator_[KeyCode::Numpad7] = '7';
- this->keyTranslator_[KeyCode::Numpad8] = '8';
- this->keyTranslator_[KeyCode::Numpad9] = '9';
- this->keyTranslator_[KeyCode::NumpadPeriod] = '.';
- this->keyTranslator_[KeyCode::Divide] = '/';
- this->keyTranslator_[KeyCode::NumpadEnter] = '\n';
-
this->lastKey_ = KeyCode::Unassigned;
this->timeSinceKeyPressed_ = 0.0f;
this->timeSinceKeyRepeated_ = 0.0f;
@@ -241,11 +227,7 @@
}
}
- std::map<KeyCode::ByEnum, char>::iterator it = this->keyTranslator_.find(evt.getKeyCode());
- if (it != this->keyTranslator_.end())
- this->insert(it->second);
- else
- this->insert(static_cast<char>(evt.getText()));
+ this->insert(static_cast<char>(evt.getText()));
}
/**
Modified: code/branches/usability/src/libraries/core/input/InputBuffer.h
===================================================================
--- code/branches/usability/src/libraries/core/input/InputBuffer.h 2011-03-06 15:32:05 UTC (rev 8035)
+++ code/branches/usability/src/libraries/core/input/InputBuffer.h 2011-03-06 18:12:11 UTC (rev 8036)
@@ -177,7 +177,6 @@
std::string buffer_;
std::list<BaseInputBufferListenerTuple*> listeners_;
std::string allowedChars_;
- std::map<KeyCode::ByEnum, char> keyTranslator_;
unsigned int maxLength_;
unsigned int cursor_;
Modified: code/branches/usability/src/libraries/core/input/Keyboard.cc
===================================================================
--- code/branches/usability/src/libraries/core/input/Keyboard.cc 2011-03-06 15:32:05 UTC (rev 8035)
+++ code/branches/usability/src/libraries/core/input/Keyboard.cc 2011-03-06 18:12:11 UTC (rev 8036)
@@ -35,18 +35,28 @@
bool Keyboard::keyPressed(const OIS::KeyEvent& arg)
{
// update modifiers
- if (arg.key == OIS::KC_RMENU || arg.key == OIS::KC_LMENU)
- modifiers_ |= KeyboardModifier::Alt; // alt key
- if (arg.key == OIS::KC_RCONTROL || arg.key == OIS::KC_LCONTROL)
- modifiers_ |= KeyboardModifier::Ctrl; // ctrl key
- if (arg.key == OIS::KC_RSHIFT || arg.key == OIS::KC_LSHIFT)
- modifiers_ |= KeyboardModifier::Shift; // shift key
+ switch (arg.key)
+ {
+ case OIS::KC_RMENU:
+ case OIS::KC_LMENU:
+ modifiers_ |= KeyboardModifier::Alt; // alt key
+ break;
+ case OIS::KC_RCONTROL:
+ case OIS::KC_LCONTROL:
+ modifiers_ |= KeyboardModifier::Ctrl; // ctrl key
+ break;
+ case OIS::KC_RSHIFT:
+ case OIS::KC_LSHIFT:
+ modifiers_ |= KeyboardModifier::Shift; // shift key
+ break;
+ case OIS::KC_TAB:
+ // Do not distribute the alt+tab event (messes with the operating system)
+ if ((modifiers_ & KeyboardModifier::Alt) != 0)
+ return true;
+ default:;
+ }
- // Do not distribute the alt+tab event (messes with the operating system)
- if ((modifiers_ & KeyboardModifier::Alt) != 0 && arg.key == OIS::KC_TAB)
- return true;
-
- KeyEvent evt(arg);
+ KeyEvent evt(static_cast<KeyCode::ByEnum>(arg.key), Keyboard::getKeyText(arg), 0);
super::buttonPressed(evt);
return true;
}
@@ -55,15 +65,47 @@
bool Keyboard::keyReleased(const OIS::KeyEvent& arg)
{
// update modifiers
- if (arg.key == OIS::KC_RMENU || arg.key == OIS::KC_LMENU)
- modifiers_ &= ~KeyboardModifier::Alt; // alt key
- if (arg.key == OIS::KC_RCONTROL || arg.key == OIS::KC_LCONTROL)
- modifiers_ &= ~KeyboardModifier::Ctrl; // ctrl key
- if (arg.key == OIS::KC_RSHIFT || arg.key == OIS::KC_LSHIFT)
- modifiers_ &= ~KeyboardModifier::Shift; // shift key
+ switch (arg.key)
+ {
+ case OIS::KC_RMENU:
+ case OIS::KC_LMENU:
+ modifiers_ &= ~KeyboardModifier::Alt; // alt key
+ break;
+ case OIS::KC_RCONTROL:
+ case OIS::KC_LCONTROL:
+ modifiers_ &= ~KeyboardModifier::Ctrl; // ctrl key
+ break;
+ case OIS::KC_RSHIFT:
+ case OIS::KC_LSHIFT:
+ modifiers_ &= ~KeyboardModifier::Shift; // shift key
+ break;
+ default:;
+ }
- KeyEvent evt(arg);
+ KeyEvent evt(static_cast<KeyCode::ByEnum>(arg.key), Keyboard::getKeyText(arg), 0);
super::buttonReleased(evt);
return true;
}
+
+ /// A map which returns the corresponding chars for some key codes
+ unsigned int Keyboard::getKeyText(const OIS::KeyEvent& arg)
+ {
+ switch (arg.key)
+ {
+ case OIS::KC_NUMPAD0: return static_cast<unsigned int>('0');
+ case OIS::KC_NUMPAD1: return static_cast<unsigned int>('1');
+ case OIS::KC_NUMPAD2: return static_cast<unsigned int>('2');
+ case OIS::KC_NUMPAD3: return static_cast<unsigned int>('3');
+ case OIS::KC_NUMPAD4: return static_cast<unsigned int>('4');
+ case OIS::KC_NUMPAD5: return static_cast<unsigned int>('5');
+ case OIS::KC_NUMPAD6: return static_cast<unsigned int>('6');
+ case OIS::KC_NUMPAD7: return static_cast<unsigned int>('7');
+ case OIS::KC_NUMPAD8: return static_cast<unsigned int>('8');
+ case OIS::KC_NUMPAD9: return static_cast<unsigned int>('9');
+ case OIS::KC_DECIMAL: return static_cast<unsigned int>('.');
+ case OIS::KC_DIVIDE: return static_cast<unsigned int>('/');
+ case OIS::KC_NUMPADENTER: return static_cast<unsigned int>('\n');
+ default: return arg.text;
+ }
+ }
}
Modified: code/branches/usability/src/libraries/core/input/Keyboard.h
===================================================================
--- code/branches/usability/src/libraries/core/input/Keyboard.h 2011-03-06 15:32:05 UTC (rev 8035)
+++ code/branches/usability/src/libraries/core/input/Keyboard.h 2011-03-06 18:12:11 UTC (rev 8036)
@@ -82,6 +82,8 @@
//! Returns the class name as string
static std::string getClassNameImpl() { return "Keyboard"; }
+ static unsigned int getKeyText(const OIS::KeyEvent& arg);
+
//! Bit mask representing keyboard modifiers
int modifiers_;
};
More information about the Orxonox-commit
mailing list