# 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. | 0.9.0 |

## Functions

Joystick:getAxes | Gets the direction of each axis. | 0.9.0 |
Joystick:getAxis | Gets the direction of an axis. | 0.9.0 |
Joystick:getAxisCount | Gets the number of axes on the joystick. | 0.9.0 |
Joystick:getButtonCount | Gets the number of buttons on the joystick. | 0.9.0 |
Joystick:getGUID | Gets a stable GUID unique to the type of the physical joystick. | 0.9.0 |
Joystick:getGamepadAxis | Gets the direction of a virtual gamepad axis. | 0.9.0 |
Joystick:getGamepadMapping | Gets the button, axis or hat that a virtual gamepad input is bound to. | 0.9.0 |
Joystick:getHat | Gets the direction of a hat. | 0.9.0 |
Joystick:getHatCount | Gets the number of hats on the joystick. | 0.9.0 |
Joystick:getID | Gets the joystick's unique identifier. | 0.9.0 |
Joystick:getName | Gets the name of the joystick. | 0.9.0 |
Joystick:getVibration | Gets the current vibration motor strengths on a Joystick with rumble support. | 0.9.0 |
Joystick:isConnected | Gets whether the Joystick is connected. | 0.9.0 |
Joystick:isDown | Checks if a button on the Joystick is pressed. | 0.9.0 |
Joystick:isGamepad | Gets whether the Joystick is recognized as a gamepad. | 0.9.0 |
Joystick:isGamepadDown | Checks if a virtual gamepad button on the Joystick is pressed. | 0.9.0 |
Joystick:isVibrationSupported | Gets whether the Joystick supports vibration. | 0.9.0 |
Joystick:setVibration | Sets the vibration motor speeds on a Joystick with rumble support. | 0.9.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. | 0.9.0 |
GamepadButton | Virtual gamepad buttons. | 0.9.0 |
JoystickHat | Joystick hat positions. |  |
JoystickInputType | Types of Joystick inputs. | 0.9.0 |

## Supertypes

- Object

## 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

## See Also

- love.joystick
- love.joystick.getJoystickCount

- love.joystickadded
- love.joystickremoved
- love.joystickpressed
- love.joystickreleased
- love.joystickaxis
- love.joystickhat

- love.gamepadpressed
- love.gamepadreleased
- love.gamepadaxis

##

Category:

- Types