LeftShift UserInputState.End doesn't get read

local function Sprint(actionName, inputState, inputObject)
	if actionName == 'Sprint' and inputState == Enum.UserInputState.Begin then
		print'pressed'
	elseif actionName == 'Sprint' and inputState == Enum.UserInputState.End then
		print'pressed off'
	end
end

ContextActionService:BindAction('Sprint', Sprint, false, Enum.KeyCode.LeftShift, Enum.KeyCode.Q)

When I tap Q:
> pressed
> pressed off

When I tap Left Shift:
> pressed

It doesn’t read that I stopped pressing the Left Shift key until I press another key. Is there any way to fix this?

I don’t know what’s causing this, but try replacing the elseif with just an else, it’s much more simpler

This is probably caused by shift lock being enabled. Try disabling shift lock.

I already tried disabling this via StarterPlayer, the error persists.