Joystick

Available since LÖVE 0.9.0
This type is not supported in earlier versions.

Represents a physical joystick.

Constructors

love.joystick.getJoysticks Gets a list of connected Joysticks. Added since 0.9.0

Functions

Joystick:getAxes Gets the direction of each axis. Added since 0.9.0
Joystick:getAxis Gets the direction of an axis. Added since 0.9.0
Joystick:getAxisCount Gets the number of axes on the joystick. Added since 0.9.0
Joystick:getButtonCount Gets the number of buttons on the joystick. Added since 0.9.0
Joystick:getDeviceInfo Gets the OS-independent device info of the joystick. Added since 11.3
Joystick:getGUID Gets a stable GUID unique to the type of the physical joystick. Added since 0.9.0
Joystick:getGamepadAxis Gets the direction of a virtual gamepad axis. Added since 0.9.0
Joystick:getGamepadMapping Gets the button, axis or hat that a virtual gamepad input is bound to. Added since 0.9.0
Joystick:getGamepadMappingString Gets the full gamepad mapping string of this Joystick, or nil if it's not recognized as a gamepad. Added since 11.3
Joystick:getHat Gets the direction of a hat. Added since 0.9.0
Joystick:getHatCount Gets the number of hats on the joystick. Added since 0.9.0
Joystick:getID Gets the joystick's unique identifier. Added since 0.9.0
Joystick:getName Gets the name of the joystick. Added since 0.9.0
Joystick:getVibration Gets the current vibration motor strengths on a Joystick with rumble support. Added since 0.9.0
Joystick:isConnected Gets whether the Joystick is connected. Added since 0.9.0
Joystick:isDown Checks if a button on the Joystick is pressed. Added since 0.9.0
Joystick:isGamepad Gets whether the Joystick is recognized as a gamepad. Added since 0.9.0
Joystick:isGamepadDown Checks if a virtual gamepad button on the Joystick is pressed. Added since 0.9.0
Joystick:isVibrationSupported Gets whether the Joystick supports vibration. Added since 0.9.0
Joystick:setVibration Sets the vibration motor speeds on a Joystick with rumble support. Added since 0.9.0
Object:release Immediately destroys the object's Lua reference. Added since 11.0
Object:type Gets the type of the object as a string.
Object:typeOf Checks whether an object is of a certain type.

Enums

GamepadAxis Virtual gamepad axes. Added since 0.9.0
GamepadButton Virtual gamepad buttons. Added since 0.9.0
JoystickHat Joystick hat positions. Added since 0.5.0
JoystickInputType Types of Joystick inputs. Added since 0.9.0

Supertypes

Examples

Display the last button pressed of a controller on-screen

local lastbutton = "none"

function love.gamepadpressed(joystick, button)
    lastbutton = button
end

function love.draw()
    love.graphics.print("Last gamepad button pressed: "..lastbutton, 10, 10)
end

Move a circle with the d-pad of a controller

function love.load()
    local joysticks = love.joystick.getJoysticks()
    joystick = joysticks[1]

    position = {x = 400, y = 300}
    speed = 300
end

function love.update(dt)
    if not joystick then return end

    if joystick:isGamepadDown("dpleft") then
        position.x = position.x - speed * dt
    elseif joystick:isGamepadDown("dpright") then
        position.x = position.x + speed * dt
    end

    if joystick:isGamepadDown("dpup") then
        position.y = position.y - speed * dt
    elseif joystick:isGamepadDown("dpdown") then
        position.y = position.y + speed * dt
    end
end

function love.draw()
    love.graphics.circle("fill", position.x, position.y, 50)
end

Move circles and change sizes with sticks of gamepad

function love.load()
	local joysticks = love.joystick.getJoysticks()
	joystick = joysticks[1]

	leftCircle = {x = 200, y = 280, size = 50}
	rightCircle = {x = 600, y = 280, size = 50}
	speed = 300
end

function love.update(dt)
	if not joystick then return end

	leftCircle.x = leftCircle.x + dt*speed*joystick:getGamepadAxis("leftx")
	leftCircle.y = leftCircle.y + dt*speed*joystick:getGamepadAxis("lefty")
	
	rightCircle.x = rightCircle.x + dt*speed*joystick:getGamepadAxis("rightx")
	rightCircle.y = rightCircle.y + dt*speed*joystick:getGamepadAxis("righty")
end

function love.draw()
	local leftSize = (1-joystick:getGamepadAxis("triggerleft"))*leftCircle.size
	local rightSize = (1-joystick:getGamepadAxis("triggerright"))*rightCircle.size
	love.graphics.circle("fill", leftCircle.x, leftCircle.y, leftSize)
	love.graphics.circle("fill", rightCircle.x, rightCircle.y, rightSize)
end

See Also


Other Languages