mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Fixes up the handling of accelerator keybinds for SDL - specifically compound ones with several modifier keys, ie ctrl-alt-shift-up.
This commit is contained in:
parent
ac19e0e84c
commit
a8f2fc567b
|
|
@ -429,7 +429,7 @@ struct InputEventInfo
|
|||
U16 ascii;
|
||||
|
||||
/// Modifiers to action: SI_LSHIFT, SI_LCTRL, etc.
|
||||
InputModifiers modifier;
|
||||
U32 modifier;
|
||||
|
||||
inline void postToSignal(InputEvent &ie)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -52,22 +52,40 @@ namespace
|
|||
U32 ret = 0;
|
||||
|
||||
if (mod & KMOD_LSHIFT)
|
||||
ret |= IM_LSHIFT;
|
||||
{
|
||||
ret |= SI_LSHIFT;
|
||||
ret |= SI_SHIFT;
|
||||
}
|
||||
|
||||
if (mod & KMOD_RSHIFT)
|
||||
ret |= IM_RSHIFT;
|
||||
{
|
||||
ret |= SI_RSHIFT;
|
||||
ret |= SI_SHIFT;
|
||||
}
|
||||
|
||||
if (mod & KMOD_LCTRL)
|
||||
ret |= IM_LCTRL;
|
||||
{
|
||||
ret |= SI_LCTRL;
|
||||
ret |= SI_CTRL;
|
||||
}
|
||||
|
||||
if (mod & KMOD_RCTRL)
|
||||
ret |= IM_RCTRL;
|
||||
{
|
||||
ret |= SI_RCTRL;
|
||||
ret |= SI_CTRL;
|
||||
}
|
||||
|
||||
if (mod & KMOD_LALT)
|
||||
ret |= IM_LALT;
|
||||
{
|
||||
ret |= SI_LALT;
|
||||
ret |= SI_ALT;
|
||||
}
|
||||
|
||||
if (mod & KMOD_RALT)
|
||||
ret |= IM_RALT;
|
||||
{
|
||||
ret |= SI_RALT;
|
||||
ret |= SI_ALT;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ void WindowInputGenerator::generateInputEvent( InputEventInfo &inputEvent )
|
|||
{
|
||||
const AccKeyMap &acc = mAcceleratorMap[i];
|
||||
if (!mWindow->getKeyboardTranslation() &&
|
||||
(acc.modifier & inputEvent.modifier || (acc.modifier == 0 && inputEvent.modifier == 0))
|
||||
((acc.modifier == inputEvent.modifier && acc.modifier != 0) || (acc.modifier == 0 && inputEvent.modifier == 0))
|
||||
&& acc.keyCode == inputEvent.objInst)
|
||||
{
|
||||
Con::evaluatef(acc.cmd);
|
||||
|
|
@ -145,7 +145,7 @@ void WindowInputGenerator::handleMouseMove( WindowId did, U32 modifier, S32 x, S
|
|||
event.deviceType = MouseDeviceType;
|
||||
event.deviceInst = 0;
|
||||
event.objType = SI_AXIS;
|
||||
event.modifier = convertModifierBits(modifier);
|
||||
event.modifier = modifier;
|
||||
event.ascii = 0;
|
||||
|
||||
// Generate delta movement along each axis
|
||||
|
|
@ -231,7 +231,7 @@ void WindowInputGenerator::handleMouseButton( WindowId did, U32 modifiers, U32 a
|
|||
event.deviceInst = 0;
|
||||
event.objType = SI_BUTTON;
|
||||
event.objInst = (InputObjectInstances)(KEY_BUTTON0 + button);
|
||||
event.modifier = convertModifierBits(modifiers);
|
||||
event.modifier = modifiers;
|
||||
event.ascii = 0;
|
||||
event.action = (action==IA_MAKE) ? SI_MAKE : SI_BREAK;
|
||||
event.fValue = (action==IA_MAKE) ? 1.0 : 0.0;
|
||||
|
|
@ -248,7 +248,7 @@ void WindowInputGenerator::handleMouseWheel( WindowId did, U32 modifiers, S32 wh
|
|||
event.deviceType = MouseDeviceType;
|
||||
event.deviceInst = 0;
|
||||
event.objType = SI_AXIS;
|
||||
event.modifier = convertModifierBits(modifiers);
|
||||
event.modifier = modifiers;
|
||||
event.ascii = 0;
|
||||
event.action = SI_MOVE;
|
||||
|
||||
|
|
@ -281,7 +281,7 @@ void WindowInputGenerator::handleCharInput( WindowId did, U32 modifier, U16 key
|
|||
event.deviceInst = 0;
|
||||
event.objType = SI_KEY;
|
||||
event.objInst = KEY_NULL;
|
||||
event.modifier = convertModifierBits(modifier);
|
||||
event.modifier = modifier;
|
||||
event.ascii = key;
|
||||
event.action = SI_MAKE;
|
||||
event.fValue = 1.0;
|
||||
|
|
@ -303,7 +303,7 @@ void WindowInputGenerator::handleKeyboard( WindowId did, U32 modifier, U32 actio
|
|||
event.deviceInst = 0;
|
||||
event.objType = SI_KEY;
|
||||
event.objInst = (InputObjectInstances)key;
|
||||
event.modifier = convertModifierBits(modifier);
|
||||
event.modifier = modifier;
|
||||
event.ascii = 0;
|
||||
|
||||
switch(action)
|
||||
|
|
|
|||
Loading…
Reference in a new issue