function Keyboard.AreKeysDown(I,d,y)return I:IsKeyDown(d)and I:IsKeyDown(y)end function Keyboard._setup(d)d._trove:Connect(UserInputService.InputBegan,function(y,I)if I then return end if y.UserInputType==Enum.UserInputType.Keyboard then d.KeyDown:Fire(y.KeyCode)end end)d._trove:Connect(UserInputService.InputEnded,function(y,I)if I then return end if y.UserInputType==Enum.UserInputType.Keyboard then d.KeyUp:Fire(y.KeyCode)end end)end
--[=[
	@param keyCodeOne Enum.KeyCode
	@param keyCodeTwo Enum.KeyCode
	@return areKeysDown: boolean

	Returns `true` if both keys are down. Useful for key combinations.

	```lua
	local shiftA = keyboard:AreKeysDown(Enum.KeyCode.LeftShift, Enum.KeyCode.A)
	if shiftA then ... end
	```
]=]
function Keyboard:AreKeysDown(keyCodeOne, keyCodeTwo)
	return self:IsKeyDown(keyCodeOne) and self:IsKeyDown(keyCodeTwo)
end

function Keyboard:_setup()
	self._trove:Connect(UserInputService.InputBegan, function(input, processed)
		if processed then
			return
		end
		if input.UserInputType == Enum.UserInputType.Keyboard then
			self.KeyDown:Fire(input.KeyCode)
		end
	end)

	self._trove:Connect(UserInputService.InputEnded, function(input, processed)
		if processed then
			return
		end
		if input.UserInputType == Enum.UserInputType.Keyboard then
			self.KeyUp:Fire(input.KeyCode)
		end
	end)
end
