现在的位置: 首页 > 综合 > 正文

Qt to CEGUI Key and Mouse Mapping

2013年08月01日 ⁄ 综合 ⁄ 共 5740字 ⁄ 字号 评论关闭

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 ()));
}

【上篇】
【下篇】

抱歉!评论已关闭.