SFML
Simple and Fast Multimedia Library
Loading...
Searching...
No Matches
sf::Joystick Namespace Reference

Give access to the real-time state of the joysticks. More...

Classes

struct  Identification
 Structure holding a joystick's identification. More...

Enumerations

enum class  Axis {
  X , Y , Z , R ,
  U , V , PovX , PovY
}
 Axes supported by SFML joysticks. More...

Functions

SFML_WINDOW_API bool isConnected (unsigned int joystick)
 Check if a joystick is connected.
SFML_WINDOW_API unsigned int getButtonCount (unsigned int joystick)
 Return the number of buttons supported by a joystick.
SFML_WINDOW_API bool hasAxis (unsigned int joystick, Axis axis)
 Check if a joystick supports a given axis.
SFML_WINDOW_API bool isButtonPressed (unsigned int joystick, unsigned int button)
 Check if a joystick button is pressed.
SFML_WINDOW_API float getAxisPosition (unsigned int joystick, Axis axis)
 Get the current position of a joystick axis.
SFML_WINDOW_API Identification getIdentification (unsigned int joystick)
 Get the joystick information.
SFML_WINDOW_API void update ()
 Update the states of all joysticks.

Detailed Description

Give access to the real-time state of the joysticks.

sf::Joystick provides an interface to the state of the joysticks. Each joystick is identified by an index that is passed to the functions in this namespace.

This namespace allows users to query the state of joysticks at any time and directly, without having to deal with a window and its events. Compared to the JoystickMoved, JoystickButtonPressed and JoystickButtonReleased events, sf::Joystick can retrieve the state of axes and buttons of joysticks at any time (you don't need to store and update a boolean on your side in order to know if a button is pressed or released), and you always get the real state of joysticks, even if they are moved, pressed or released when your window is out of focus and no event is triggered.

SFML supports:

  • 8 joysticks (sf::Joystick::Count)
  • 32 buttons per joystick (sf::Joystick::ButtonCount)
  • 8 axes per joystick (sf::Joystick::AxisCount)

Unlike the keyboard or mouse, the state of joysticks is sometimes not directly available (depending on the OS), therefore an update() function must be called in order to update the current state of joysticks. When you have a window with event handling, this is done automatically, you don't need to call anything. But if you have no window, or if you want to check joysticks state before creating one, you must call sf::Joystick::update explicitly.

Usage example:

// Is joystick #0 connected?
bool connected = sf::Joystick::isConnected(0);
// How many buttons does joystick #0 support?
unsigned int buttons = sf::Joystick::getButtonCount(0);
// Does joystick #0 define a X axis?
// Is button #2 pressed on joystick #0?
bool pressed = sf::Joystick::isButtonPressed(0, 2);
// What's the current position of the Y axis on joystick #0?
SFML_WINDOW_API bool isButtonPressed(unsigned int joystick, unsigned int button)
Check if a joystick button is pressed.
SFML_WINDOW_API bool isConnected(unsigned int joystick)
Check if a joystick is connected.
@ X
The X axis.
Definition Joystick.hpp:56
@ Y
The Y axis.
Definition Joystick.hpp:57
SFML_WINDOW_API bool hasAxis(unsigned int joystick, Axis axis)
Check if a joystick supports a given axis.
SFML_WINDOW_API unsigned int getButtonCount(unsigned int joystick)
Return the number of buttons supported by a joystick.
SFML_WINDOW_API float getAxisPosition(unsigned int joystick, Axis axis)
Get the current position of a joystick axis.
See also
sf::Keyboard, sf::Mouse

Enumeration Type Documentation

◆ Axis

enum class sf::Joystick::Axis
strong

Axes supported by SFML joysticks.

Enumerator

The X axis.

The Y axis.

The Z axis.

The R axis.

The U axis.

The V axis.

PovX 

The X axis of the point-of-view hat.

PovY 

The Y axis of the point-of-view hat.

Function Documentation

◆ getAxisPosition()

SFML_WINDOW_API float sf::Joystick::getAxisPosition ( unsigned int joystick,
Axis axis )
nodiscard

Get the current position of a joystick axis.

If the joystick is not connected, this function returns 0.

Parameters
joystickIndex of the joystick
axisAxis to check
Returns
Current position of the axis, in range [-100 .. 100]

◆ getButtonCount()

SFML_WINDOW_API unsigned int sf::Joystick::getButtonCount ( unsigned int joystick)
nodiscard

Return the number of buttons supported by a joystick.

If the joystick is not connected, this function returns 0.

Parameters
joystickIndex of the joystick
Returns
Number of buttons supported by the joystick

◆ getIdentification()

SFML_WINDOW_API Identification sf::Joystick::getIdentification ( unsigned int joystick)
nodiscard

Get the joystick information.

Parameters
joystickIndex of the joystick
Returns
Structure containing joystick information.

◆ hasAxis()

SFML_WINDOW_API bool sf::Joystick::hasAxis ( unsigned int joystick,
Axis axis )
nodiscard

Check if a joystick supports a given axis.

If the joystick is not connected, this function returns false.

Parameters
joystickIndex of the joystick
axisAxis to check
Returns
True if the joystick supports the axis, false otherwise

◆ isButtonPressed()

SFML_WINDOW_API bool sf::Joystick::isButtonPressed ( unsigned int joystick,
unsigned int button )
nodiscard

Check if a joystick button is pressed.

If the joystick is not connected, this function returns false.

Parameters
joystickIndex of the joystick
buttonButton to check
Returns
True if the button is pressed, false otherwise

◆ isConnected()

SFML_WINDOW_API bool sf::Joystick::isConnected ( unsigned int joystick)
nodiscard

Check if a joystick is connected.

Parameters
joystickIndex of the joystick to check
Returns
True if the joystick is connected, false otherwise

◆ update()

SFML_WINDOW_API void sf::Joystick::update ( )

Update the states of all joysticks.

This function is used internally by SFML, so you normally don't have to call it explicitly. However, you may need to call it if you have no window yet (or no window at all): in this case the joystick states are not updated automatically.