diff --git a/Dalamud/Game/ClientState/GamepadButtons.cs b/Dalamud/Game/ClientState/GamepadButtons.cs
index e1db685e0..80a745d53 100644
--- a/Dalamud/Game/ClientState/GamepadButtons.cs
+++ b/Dalamud/Game/ClientState/GamepadButtons.cs
@@ -1,10 +1,18 @@
-namespace Dalamud.Game.ClientState
+using System;
+
+namespace Dalamud.Game.ClientState
{
///
/// Bitmask of the Button ushort used by the game.
///
+ [Flags]
public enum GamepadButtons : ushort
{
+ ///
+ /// No buttons pressed.
+ ///
+ None = 0,
+
///
/// Digipad up.
///
diff --git a/Dalamud/Game/ClientState/GamepadState.cs b/Dalamud/Game/ClientState/GamepadState.cs
index 7e04a7a71..b9711d093 100644
--- a/Dalamud/Game/ClientState/GamepadState.cs
+++ b/Dalamud/Game/ClientState/GamepadState.cs
@@ -228,12 +228,13 @@ namespace Dalamud.Game.ClientState
// `ButtonPressed` while ImGuiConfigFlags.NavEnableGamepad is set.
// This is debatable.
// ImGui itself does not care either way as it uses the Raw values and does its own state handling.
- input->ButtonsRaw &= (ushort)~GamepadButtons.L2;
- input->ButtonsRaw &= (ushort)~GamepadButtons.R2;
- input->ButtonsRaw &= (ushort)~GamepadButtons.DpadDown;
- input->ButtonsRaw &= (ushort)~GamepadButtons.DpadLeft;
- input->ButtonsRaw &= (ushort)~GamepadButtons.DpadUp;
- input->ButtonsRaw &= (ushort)~GamepadButtons.DpadRight;
+ const ushort deletionMask = (ushort)(~GamepadButtons.L2
+ & ~GamepadButtons.R2
+ & ~GamepadButtons.DpadDown
+ & ~GamepadButtons.DpadLeft
+ & ~GamepadButtons.DpadUp
+ & ~GamepadButtons.DpadRight);
+ input->ButtonsRaw &= deletionMask;
input->ButtonsPressed = 0;
input->ButtonsReleased = 0;
input->ButtonsRepeat = 0;