Skip to content

Commit 6db6e98

Browse files
committed
bugfix(input): Disable mouse waypoint mode after using alt tab
1 parent 0c993a9 commit 6db6e98

File tree

2 files changed

+30
-0
lines changed
  • GeneralsMD/Code/GameEngine/Source/GameClient/Input
  • Generals/Code/GameEngine/Source/GameClient/Input

2 files changed

+30
-0
lines changed

Generals/Code/GameEngine/Source/GameClient/Input/Keyboard.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,21 @@ void Keyboard::update( void )
748748
void Keyboard::resetKeys( void )
749749
{
750750

751+
// TheSuperHackers @fix Caball009 13/12/2025 Fix bug where game remains in waypoint mode
752+
// because the key up state for the alt key is not detected after alt tab.
753+
if (BitIsSet(m_keyStatus[KEY_LALT].state, KEY_STATE_DOWN))
754+
{
755+
GameMessage* msg = TheMessageStream->appendMessage(GameMessage::MSG_RAW_KEY_UP);
756+
msg->appendIntegerArgument(KEY_LALT);
757+
msg->appendIntegerArgument(KEY_STATE_UP);
758+
}
759+
else if (BitIsSet(m_keyStatus[KEY_RALT].state, KEY_STATE_DOWN))
760+
{
761+
GameMessage* msg = TheMessageStream->appendMessage(GameMessage::MSG_RAW_KEY_UP);
762+
msg->appendIntegerArgument(KEY_RALT);
763+
msg->appendIntegerArgument(KEY_STATE_UP);
764+
}
765+
751766
memset( m_keys, 0, sizeof( m_keys ) );
752767
memset( m_keyStatus, 0, sizeof( m_keyStatus ) );
753768
m_modifiers = KEY_STATE_NONE;

GeneralsMD/Code/GameEngine/Source/GameClient/Input/Keyboard.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,21 @@ void Keyboard::update( void )
748748
void Keyboard::resetKeys( void )
749749
{
750750

751+
// TheSuperHackers @fix Caball009 13/12/2025 Fix bug where game remains in waypoint mode
752+
// because the key up state for the alt key is not detected after alt tab.
753+
if (BitIsSet(m_keyStatus[KEY_LALT].state, KEY_STATE_DOWN))
754+
{
755+
GameMessage* msg = TheMessageStream->appendMessage(GameMessage::MSG_RAW_KEY_UP);
756+
msg->appendIntegerArgument(KEY_LALT);
757+
msg->appendIntegerArgument(KEY_STATE_UP);
758+
}
759+
else if (BitIsSet(m_keyStatus[KEY_RALT].state, KEY_STATE_DOWN))
760+
{
761+
GameMessage* msg = TheMessageStream->appendMessage(GameMessage::MSG_RAW_KEY_UP);
762+
msg->appendIntegerArgument(KEY_RALT);
763+
msg->appendIntegerArgument(KEY_STATE_UP);
764+
}
765+
751766
memset( m_keys, 0, sizeof( m_keys ) );
752767
memset( m_keyStatus, 0, sizeof( m_keyStatus ) );
753768
m_modifiers = KEY_STATE_NONE;

0 commit comments

Comments
 (0)