Saw this script that disables the W button. Basically you replace the function that runs when you click it. I haven’t tested it so I’m not sure if it would work, but you could try!
local cas = game:GetService("ContextActionService")
cas:BindAction("action-name", function(_, state) print("blank") end, false, Enum.KeyCode.W)
You could or detect when S is pressed and make the WalkSpeed 0, or you could modify the controls by playing the game going to StarterPlayer > StarterPlayerScripts > PlayerModule > ControlModule > Keyboard, findthe function that gets if you’re backwards and use a RemoteEvent to enable/disable it.
You can reload the PlayerModule by manually requiring it require(game.Players.LocalPlayer.PlayerScripts.PlayerModule), this will rebind all movement keys but it will also reset the camera
Anything involving Events has a chance to be unreliable (inefficient). If a player were to, in quick succession, press the S key repeatedly, the RemoteEvent could fail to fire.