function DealWithInput(T,S)if UserInputService:GetFocusedTextBox()==nil and not _InControls then if(T.KeyCode==_CTRL.ContlrShiftDown or _MSteer and T.KeyCode==_CTRL.MouseShiftDown or not _MSteer and T.KeyCode==_CTRL.ShiftDown)and((_IsOn and((_TMode=="\065\117\116\111"and _CGear<=1)and _Tune.AutoShiftVers=="\078\101\119")or _TMode=="\068\067\084"or _TMode=="\077\097\110\117\097\108")and T.UserInputState==Enum.UserInputState.Begin)then if not _ShiftDn then _ShiftDn=true end elseif(T.KeyCode==_CTRL.ContlrShiftUp or _MSteer and T.KeyCode==_CTRL.MouseShiftUp or not _MSteer and T.KeyCode==_CTRL.ShiftUp)and((_IsOn and((_TMode=="\065\117\116\111"and _CGear<1)and _Tune.AutoShiftVers=="\078\101\119")or _TMode=="\068\067\084"or _TMode=="\077\097\110\117\097\108")and T.UserInputState==Enum.UserInputState.Begin)then if not _ShiftUp then _ShiftUp=true end elseif(T.KeyCode==_CTRL.ContlrClutch or _MSteer and T.KeyCode==_CTRL.MouseClutch or not _MSteer and T.KeyCode==_CTRL.Clutch)and _TMode=="\077\097\110\117\097\108"then if T.UserInputState==Enum.UserInputState.Begin then _ClPressing=true elseif T.UserInputState==Enum.UserInputState.End then _ClPressing=false end elseif T.KeyCode==_CTRL.ContlrPBrake or _MSteer and T.KeyCode==_CTRL.MousePBrake or not _MSteer and T.KeyCode==_CTRL.PBrake then if T.UserInputState==Enum.UserInputState.Begin then _PBrake=not _PBrake elseif T.UserInputState==Enum.UserInputState.End then if bike.DriveSeat.Velocity.Magnitude>5 then _PBrake=false end end elseif(T.KeyCode==_CTRL.ContlrToggleTMode or T.KeyCode==_CTRL.ToggleTransMode)and T.UserInputState==Enum.UserInputState.Begin then local T=1 for S,v in pairs(_Tune.TransModes)do if v==_TMode then T=S break end end T=T+1 if T>#_Tune.TransModes then T=1 end _TMode=_Tune.TransModes[T]elseif not _MSteer and(T.KeyCode==_CTRL.Throttle or T.KeyCode==_CTRL.Throttle2)or((_CTRL.MouseThrottle==Enum.UserInputType.MouseButton1 or _CTRL.MouseThrottle==Enum.UserInputType.MouseButton2)and T.UserInputType==_CTRL.MouseThrottle or T.KeyCode==_CTRL.MouseThrottle)and _MSteer then if T.UserInputState==Enum.UserInputState.Begin and _IsOn then _InThrot=1 _TTick=tick()else _InThrot=_Tune.IdleThrottle/100 _BTick=tick()end elseif not _MSteer and(T.KeyCode==_CTRL.Brake or T.KeyCode==_CTRL.Brake2)or((_CTRL.MouseBrake==Enum.UserInputType.MouseButton1 or _CTRL.MouseBrake==Enum.UserInputType.MouseButton2)and T.UserInputType==_CTRL.MouseBrake or T.KeyCode==_CTRL.MouseBrake)and _MSteer then if T.UserInputState==Enum.UserInputState.Begin then _InBrake=1 else _InBrake=0 end elseif not _MSteer and(T.KeyCode==_CTRL.SteerLeft or T.KeyCode==_CTRL.SteerLeft2)then if T.UserInputState==Enum.UserInputState.Begin then _GSteerT=-1 _SteerL=true else if _SteerR then _GSteerT=1 else _GSteerT=0 end _SteerL=false end elseif not _MSteer and(T.KeyCode==_CTRL.SteerRight or T.KeyCode==_CTRL.SteerRight2)then if T.UserInputState==Enum.UserInputState.Begin then _GSteerT=1 _SteerR=true else if _SteerL then _GSteerT=-1 else _GSteerT=0 end _SteerR=false end elseif T.KeyCode==_CTRL.ToggleMouseDrive then if T.UserInputState==Enum.UserInputState.End then _MSteer=not _MSteer _InThrot=_Tune.IdleThrottle/100 _TTick=tick()_InBrake=0 _GSteerT=0 end elseif _Tune.TCS and(_IsOn and T.KeyCode==_CTRL.ToggleTCS)or T.KeyCode==_CTRL.ContlrToggleTCS then if T.UserInputState==Enum.UserInputState.End then _TCS=not _TCS end elseif _Tune.ABS and(_IsOn and T.KeyCode==_CTRL.ToggleABS)or T.KeyCode==_CTRL.ContlrToggleABS then if T.UserInputState==Enum.UserInputState.End then _ABS=not _ABS end end if T.UserInputType.Name:find("\071\097\109\101\112\097\100")then if T.KeyCode==_CTRL.ContlrSteer then if T.Position.X>=0 then local S=math.min(.99,_Tune.Peripherals.ControlRDZone/100)if math.abs(T.Position.X)>S then _GSteerT=(T.Position.X-S)/(1-S)else _GSteerT=0 end else local S=math.min(.99,_Tune.Peripherals.ControlLDZone/100)if math.abs(T.Position.X)>S then _GSteerT=(T.Position.X+S)/(1-S)else _GSteerT=0 end end elseif T.KeyCode==_CTRL.ContlrThrottle then if _IsOn then _InThrot=math.max(_Tune.IdleThrottle/100,T.Position.Z)if _InThrot>_Tune.IdleThrottle/100 then _TTick=tick()else _BTick=tick()end else _InThrot=_Tune.IdleThrottle/100 _BTick=tick()end elseif T.KeyCode==_CTRL.ContlrBrake then _InBrake=T.Position.Z end end else _InThrot=_Tune.IdleThrottle/100 _GSteerT=0 _InBrake=0 end end UserInputService.InputBegan:connect(DealWithInput)UserInputService.InputChanged:connect(DealWithInput)UserInputService.InputEnded:connect(DealWithInput)

function DealWithInput(input,IsRobloxFunction)
	if (UserInputService:GetFocusedTextBox()==nil) and not _InControls then --Ignore when UI Focus
		--Shift Down [Manual Transmission]
		if (input.KeyCode ==_CTRL["ContlrShiftDown"] or (_MSteer and input.KeyCode==_CTRL["MouseShiftDown"]) or ((not _MSteer) and input.KeyCode==_CTRL["ShiftDown"])) and ((_IsOn and ((_TMode=="Auto" and _CGear<=1) and _Tune.AutoShiftVers == "New") or _TMode=="DCT") or _TMode=="Manual") and input.UserInputState == Enum.UserInputState.Begin then
			if not _ShiftDn then _ShiftDn = true end

			--Shift Up [Manual Transmission]
		elseif (input.KeyCode ==_CTRL["ContlrShiftUp"] or (_MSteer and input.KeyCode==_CTRL["MouseShiftUp"]) or ((not _MSteer) and input.KeyCode==_CTRL["ShiftUp"])) and ((_IsOn and ((_TMode=="Auto" and _CGear<1) and _Tune.AutoShiftVers == "New") or _TMode=="DCT") or _TMode=="Manual") and input.UserInputState == Enum.UserInputState.Begin then
			if not _ShiftUp then _ShiftUp = true end

			--Toggle Clutch
		elseif (input.KeyCode ==_CTRL["ContlrClutch"] or (_MSteer and input.KeyCode==_CTRL["MouseClutch"]) or ((not _MSteer) and input.KeyCode==_CTRL["Clutch"])) and _TMode=="Manual" then
			if input.UserInputState == Enum.UserInputState.Begin then
				_ClPressing = true
			elseif input.UserInputState == Enum.UserInputState.End then
				_ClPressing = false
			end

			--Toggle PBrake
		elseif input.KeyCode ==_CTRL["ContlrPBrake"] or (_MSteer and input.KeyCode==_CTRL["MousePBrake"]) or ((not _MSteer) and input.KeyCode==_CTRL["PBrake"]) then
			if input.UserInputState == Enum.UserInputState.Begin then
				_PBrake = not _PBrake
			elseif input.UserInputState == Enum.UserInputState.End then
				if bike.DriveSeat.Velocity.Magnitude>5 then _PBrake = false end
			end

			--Toggle Transmission
		elseif (input.KeyCode == _CTRL["ContlrToggleTMode"] or input.KeyCode==_CTRL["ToggleTransMode"]) and input.UserInputState == Enum.UserInputState.Begin then
			local n=1
			for i,v in pairs(_Tune.TransModes) do
				if v==_TMode then n=i break end
			end
			n=n+1
			if n>#_Tune.TransModes then n=1 end
			_TMode = _Tune.TransModes[n]

			--Throttle
		elseif ((not _MSteer) and (input.KeyCode==_CTRL["Throttle"] or input.KeyCode == _CTRL["Throttle2"])) or ((((_CTRL["MouseThrottle"]==Enum.UserInputType.MouseButton1 or _CTRL["MouseThrottle"]==Enum.UserInputType.MouseButton2) and input.UserInputType == _CTRL["MouseThrottle"]) or input.KeyCode == _CTRL["MouseThrottle"])and _MSteer) then
			if input.UserInputState == Enum.UserInputState.Begin and _IsOn then
				_InThrot = 1
				_TTick = tick()
			else
				_InThrot = _Tune.IdleThrottle/100
				_BTick = tick()
			end

			--Brake
		elseif ((not _MSteer) and (input.KeyCode==_CTRL["Brake"] or input.KeyCode == _CTRL["Brake2"])) or ((((_CTRL["MouseBrake"]==Enum.UserInputType.MouseButton1 or _CTRL["MouseBrake"]==Enum.UserInputType.MouseButton2) and input.UserInputType == _CTRL["MouseBrake"]) or input.KeyCode == _CTRL["MouseBrake"])and _MSteer) then
			if input.UserInputState == Enum.UserInputState.Begin then
				_InBrake = 1
			else
				_InBrake = 0
			end

			--Steer Left
		elseif (not _MSteer) and (input.KeyCode==_CTRL["SteerLeft"] or input.KeyCode == _CTRL["SteerLeft2"]) then
			if input.UserInputState == Enum.UserInputState.Begin then
				_GSteerT = -1
				_SteerL = true
			else
				if _SteerR then
					_GSteerT = 1
				else
					_GSteerT = 0
				end
				_SteerL = false
			end

			--Steer Right
		elseif (not _MSteer) and (input.KeyCode==_CTRL["SteerRight"] or input.KeyCode == _CTRL["SteerRight2"]) then
			if input.UserInputState == Enum.UserInputState.Begin then
				_GSteerT = 1
				_SteerR = true
			else
				if _SteerL then
					_GSteerT = -1
				else
					_GSteerT = 0
				end
				_SteerR = false
			end

			--Toggle Mouse Controls
		elseif input.KeyCode ==_CTRL["ToggleMouseDrive"] then
			if input.UserInputState == Enum.UserInputState.End then
				_MSteer = not _MSteer
				_InThrot = _Tune.IdleThrottle/100
				_TTick = tick()
				_InBrake = 0
				_GSteerT = 0
			end

			--Toggle TCS
		elseif _Tune.TCS and _IsOn and input.KeyCode == _CTRL["ToggleTCS"] or input.KeyCode == _CTRL["ContlrToggleTCS"] then
			if input.UserInputState == Enum.UserInputState.End then _TCS = not _TCS end

			--Toggle ABS
		elseif _Tune.ABS and _IsOn and input.KeyCode == _CTRL["ToggleABS"] or input.KeyCode == _CTRL["ContlrToggleABS"] then
			if input.UserInputState == Enum.UserInputState.End then _ABS = not _ABS end

		end

		--Variable Controls
		if input.UserInputType.Name:find("Gamepad") then
			--Gamepad Steering
			if input.KeyCode == _CTRL["ContlrSteer"] then
				if input.Position.X>= 0 then
					local cDZone = math.min(.99,_Tune.Peripherals.ControlRDZone/100)
					if math.abs(input.Position.X)>cDZone then
						_GSteerT = (input.Position.X-cDZone)/(1-cDZone)
					else
						_GSteerT = 0
					end
				else
					local cDZone = math.min(.99,_Tune.Peripherals.ControlLDZone/100)
					if math.abs(input.Position.X)>cDZone then
						_GSteerT = (input.Position.X+cDZone)/(1-cDZone)
					else
						_GSteerT = 0
					end
				end

				--Gamepad Throttle
			elseif input.KeyCode == _CTRL["ContlrThrottle"] then
				if _IsOn then
					_InThrot = math.max(_Tune.IdleThrottle/100,input.Position.Z)
					if _InThrot > _Tune.IdleThrottle/100 then _TTick = tick() else _BTick = tick() end
				else
					_InThrot = _Tune.IdleThrottle/100
					_BTick = tick()
				end

				--Gamepad Brake
			elseif input.KeyCode == _CTRL["ContlrBrake"] then
				_InBrake = input.Position.Z
			end
		end
	else
		_InThrot = _Tune.IdleThrottle/100
		_GSteerT = 0
		_InBrake = 0
	end
end
UserInputService.InputBegan:connect(DealWithInput)
UserInputService.InputChanged:connect(DealWithInput)
UserInputService.InputEnded:connect(DealWithInput)

