Это именно то, что должен делать IsKeyPressed
, вам нужно использовать битовую маску и заставить его переключать состояние вместо того, чтобы продолжать нажимать.
Ниже приведен код из Win32API (C ++). Я знаю, что SFML имеет события, отличные от Win32API , но маскирование также должно работать в SFML .
BOOL IsKeyToggled(CONST INT key)
{
SHORT key_state = GetAsyncKeyState(key);
BOOL is_toggled = key_state & 0x1;
return is_toggled;
}
Главное здесь key_state & 0x1;
битовая маскировка с помощью 0x1