Qt to CEGUI Key and Mouse Mapping
From CEGUI Wiki - Crazy Eddie's GUI System (Open Source)
Revision as of 11:22, 28 February 2011 by Capek (Talk | contribs) (Lets use <source> instead of <syntaxhighlight>, it is much less typo-prone)
uint GLWidget::convertQtToCEGUIKey (int key, Qt::KeyboardModifiers modifiers) { if (modifiers & Qt::KeypadModifier) { switch (key) { case Qt::Key_Minus: return CEGUI::Key::Subtract; case Qt::Key_Period: return CEGUI::Key::Decimal; case Qt::Key_Slash: return CEGUI::Key::Divide; case Qt::Key_Enter: return CEGUI::Key::NumpadEnter; case Qt::Key_0: return CEGUI::Key::Numpad0; case Qt::Key_1: return CEGUI::Key::Numpad1; case Qt::Key_2: return CEGUI::Key::Numpad2; case Qt::Key_3: return CEGUI::Key::Numpad3; case Qt::Key_4: return CEGUI::Key::Numpad4; case Qt::Key_5: return CEGUI::Key::Numpad5; case Qt::Key_6: return CEGUI::Key::Numpad6; case Qt::Key_7: return CEGUI::Key::Numpad7; case Qt::Key_8: return CEGUI::Key::Numpad8; case Qt::Key_9: return CEGUI::Key::Numpad9; case Qt::Key_Asterisk: return CEGUI::Key::Multiply; case Qt::Key_Plus: return CEGUI::Key::Add; case Qt::Key_Equal: return CEGUI::Key::NumpadEquals; } } else { switch (key) { case Qt::Key_At: return CEGUI::Key::At; case Qt::Key_Backspace: return CEGUI::Key::Backspace; case Qt::Key_Tab: return CEGUI::Key::Tab; case Qt::Key_Pause: return CEGUI::Key::Pause; case Qt::Key_Escape: return CEGUI::Key::Escape; case Qt::Key_Space: return CEGUI::Key::Space; case Qt::Key_Comma: return CEGUI::Key::Comma; case Qt::Key_QuoteLeft: return CEGUI::Key::Apostrophe; case Qt::Key_Minus: return CEGUI::Key::Minus; case Qt::Key_Period: return CEGUI::Key::Period; case Qt::Key_Slash: return CEGUI::Key::Slash; case Qt::Key_Return: return CEGUI::Key::Return; case Qt::Key_0: return CEGUI::Key::Zero; case Qt::Key_1: return CEGUI::Key::One; case Qt::Key_2: return CEGUI::Key::Two; case Qt::Key_3: return CEGUI::Key::Three; case Qt::Key_4: return CEGUI::Key::Four; case Qt::Key_5: return CEGUI::Key::Five; case Qt::Key_6: return CEGUI::Key::Six; case Qt::Key_7: return CEGUI::Key::Seven; case Qt::Key_8: return CEGUI::Key::Eight; case Qt::Key_9: return CEGUI::Key::Nine; case Qt::Key_Colon: return CEGUI::Key::Colon; case Qt::Key_Semicolon: return CEGUI::Key::Semicolon; case Qt::Key_Equal: return CEGUI::Key::Equals; case Qt::Key_BracketLeft: return CEGUI::Key::LeftBracket; case Qt::Key_Backslash: return CEGUI::Key::Backslash; case Qt::Key_BracketRight: return CEGUI::Key::RightBracket; case Qt::Key_A: return CEGUI::Key::A; case Qt::Key_B: return CEGUI::Key::B; case Qt::Key_C: return CEGUI::Key::C; case Qt::Key_D: return CEGUI::Key::D; case Qt::Key_E: return CEGUI::Key::E; case Qt::Key_F: return CEGUI::Key::F; case Qt::Key_G: return CEGUI::Key::G; case Qt::Key_H: return CEGUI::Key::H; case Qt::Key_I: return CEGUI::Key::I; case Qt::Key_J: return CEGUI::Key::J; case Qt::Key_K: return CEGUI::Key::K; case Qt::Key_L: return CEGUI::Key::L; case Qt::Key_M: return CEGUI::Key::M; case Qt::Key_N: return CEGUI::Key::N; case Qt::Key_O: return CEGUI::Key::O; case Qt::Key_P: return CEGUI::Key::P; case Qt::Key_Q: return CEGUI::Key::Q; case Qt::Key_R: return CEGUI::Key::R; case Qt::Key_S: return CEGUI::Key::S; case Qt::Key_T: return CEGUI::Key::T; case Qt::Key_U: return CEGUI::Key::U; case Qt::Key_V: return CEGUI::Key::V; case Qt::Key_W: return CEGUI::Key::W; case Qt::Key_X: return CEGUI::Key::X; case Qt::Key_Y: return CEGUI::Key::Y; case Qt::Key_Z: return CEGUI::Key::Z; case Qt::Key_Delete: return CEGUI::Key::Delete; case Qt::Key_Up: return CEGUI::Key::ArrowUp; case Qt::Key_Down: return CEGUI::Key::ArrowDown; case Qt::Key_Right: return CEGUI::Key::ArrowRight; case Qt::Key_Left: return CEGUI::Key::ArrowLeft; case Qt::Key_Insert: return CEGUI::Key::Insert; case Qt::Key_Home: return CEGUI::Key::Home; case Qt::Key_End: return CEGUI::Key::End; case Qt::Key_PageUp: return CEGUI::Key::PageUp; case Qt::Key_PageDown: return CEGUI::Key::PageDown; case Qt::Key_F1: return CEGUI::Key::F1; case Qt::Key_F2: return CEGUI::Key::F2; case Qt::Key_F3: return CEGUI::Key::F3; case Qt::Key_F4: return CEGUI::Key::F4; case Qt::Key_F5: return CEGUI::Key::F5; case Qt::Key_F6: return CEGUI::Key::F6; case Qt::Key_F7: return CEGUI::Key::F7; case Qt::Key_F8: return CEGUI::Key::F8; case Qt::Key_F9: return CEGUI::Key::F9; case Qt::Key_F10: return CEGUI::Key::F10; case Qt::Key_F11: return CEGUI::Key::F11; case Qt::Key_F12: return CEGUI::Key::F12; case Qt::Key_F13: return CEGUI::Key::F13; case Qt::Key_F14: return CEGUI::Key::F14; case Qt::Key_F15: return CEGUI::Key::F15; case Qt::Key_NumLock: return CEGUI::Key::NumLock; case Qt::Key_ScrollLock: return CEGUI::Key::ScrollLock; case Qt::Key_Shift: return CEGUI::Key::RightShift; case Qt::Key_Control: return CEGUI::Key::RightControl; case Qt::Key_Alt: return CEGUI::Key::RightAlt; case Qt::Key_Meta: return CEGUI::Key::LeftWindows; case Qt::Key_SysReq: return CEGUI::Key::SysRq; case Qt::Key_Menu: return CEGUI::Key::AppMenu; } } return 0; } CEGUI::MouseButton GLWidget::convertQtToCEGUIMouseButton (Qt::MouseButton button) { switch (button) { case Qt::LeftButton: return CEGUI::LeftButton; case Qt::RightButton: return CEGUI::RightButton; case Qt::MidButton: return CEGUI::MiddleButton; case Qt::XButton1: return CEGUI::X1Button; case Qt::XButton2: return CEGUI::X2Button; default: return CEGUI::NoButton; } }
These functions can be used in key and mouse event handlers to inject events to CEGUI::System:
void GLWidget::keyPressEvent (QKeyEvent* event) { bool processed = (event->text ().size () == 1) && CEGUI::System::getSingleton ().injectChar (event->text ().at (0).unicode ()); if (!processed) processed = processed || CEGUI::System::getSingleton ().injectKeyDown (convertQtToCEGUIKey (event->key (), event->modifiers ())); } void GLWidget::mousePressEvent (QMouseEvent* event) { CEGUI::System::getSingleton ().injectMouseButtonDown (convertQtToCEGUIMouseButton (event->button ())); }