Jo Engine 2026.11.1
Jo Sega Saturn Engine
Loading...
Searching...
No Matches
input.h File Reference

Jo Engine Gamepad functions. More...

Go to the source code of this file.

Macros

#define JO_INPUT_MAX_DEVICE
#define JO_INPUT_PORT1_FIRST_DEVICE
 Index in jo_inputs of the first peripheral of each port (6 peripherals per port, see jo_get_inputs_vblank()).
#define JO_INPUT_PORT2_FIRST_DEVICE
#define __JO_KEY_PRESSED(PORT, KEY)

Enumerations

enum  jo_gamepad_keys {
  JO_KEY_RIGHT , JO_KEY_LEFT , JO_KEY_DOWN , JO_KEY_UP ,
  JO_KEY_START , JO_KEY_A , JO_KEY_B , JO_KEY_C ,
  JO_KEY_X , JO_KEY_Y , JO_KEY_Z , JO_KEY_L ,
  JO_KEY_R , JO_MOUSE_START_BUTTON , JO_MOUSE_LEFT_BUTTON , JO_MOUSE_MIDDLE_BUTTON ,
  JO_MOUSE_RIGHT_BUTTON
}
 Input keys. More...
enum  jo_gamepad_type {
  JoNotConnectedGamepad , JoUnsupportedGamepad , JoRegularGamepad , JoRegularMouse ,
  JoShuttleMouse , JoRegularKeyboard , JoNightsPad , JoMissionStick ,
  JoRacingWheel
}
 Input type. More...
enum  jo_input_axis {
  JoAxis1 , JoAxis2 , JoAxis3 , JoAxis4 ,
  JoAxis5 , JoAxis6
}
 Input axis type. More...

Functions

jo_gamepad_type jo_get_input_type (const int port)
 Get input type for the given port.
static __jo_force_inline bool jo_is_input_analog (const int port)
 Check if connected input is analog.
static __jo_force_inline bool jo_is_input_available (const int port)
 Check if the input is available for the given port.
int jo_get_input_count (void)
 Get the number of input available.
unsigned char jo_get_input_axis (const int port, const jo_input_axis axis)
 Get analog axis value.
static __jo_force_inline bool jo_is_input_key_pressed (const int port, const jo_gamepad_keys key)
 Check if the key is pressed for the given port.
static __jo_force_inline jo_8_directions jo_get_input_direction_pressed (const int port)
 Get the direction pressed for the given port.
static __jo_force_inline unsigned short jo_get_raw_input_key_pressed (const int port)
 Get raw input data for the given port.
static __jo_force_inline bool jo_is_input_key_down (const int port, const jo_gamepad_keys key)
 Check if the key is down for the given port.
static __jo_force_inline int jo_get_mouse_pos_x (const int port)
 Get mouse X position.
static __jo_force_inline int jo_get_mouse_pos_y (const int port)
 Get mouse Y position.
static __jo_force_inline bool jo_is_pad1_available (void)
 Check if the first gamepad is plugged.
static __jo_force_inline bool jo_is_pad2_available (void)
 Check if the second gamepad is plugged.
static __jo_force_inline bool jo_is_pad1_key_pressed (jo_gamepad_keys key)
 Check if the key is pressed on the first gamepad.
static __jo_force_inline bool jo_is_pad1_key_down (jo_gamepad_keys key)
 Check if the key is down on the first gamepad.
static __jo_force_inline bool jo_is_pad2_key_pressed (jo_gamepad_keys key)
 Check if the key is pressed on the second gamepad.
static __jo_force_inline bool jo_is_pad2_key_down (jo_gamepad_keys key)
 Check if the key is down on the second gamepad.

Variables

jo_peripheral jo_inputs [(12)]

Detailed Description

Jo Engine Gamepad functions.

Author
Johannes Fetz
Bug
No known bugs.
Todo
analog gamepad, wheel, gun

Macro Definition Documentation

◆ __JO_KEY_PRESSED

#define __JO_KEY_PRESSED ( PORT,
KEY )

◆ JO_INPUT_MAX_DEVICE

#define JO_INPUT_MAX_DEVICE

◆ JO_INPUT_PORT1_FIRST_DEVICE

#define JO_INPUT_PORT1_FIRST_DEVICE

Index in jo_inputs of the first peripheral of each port (6 peripherals per port, see jo_get_inputs_vblank()).

◆ JO_INPUT_PORT2_FIRST_DEVICE

#define JO_INPUT_PORT2_FIRST_DEVICE

Enumeration Type Documentation

◆ jo_gamepad_keys

Input keys.

Enumerator
JO_KEY_RIGHT 
JO_KEY_LEFT 
JO_KEY_DOWN 
JO_KEY_UP 
JO_KEY_START 
JO_KEY_A 
JO_KEY_B 
JO_KEY_C 
JO_KEY_X 
JO_KEY_Y 
JO_KEY_Z 
JO_KEY_L 
JO_KEY_R 
JO_MOUSE_START_BUTTON 
JO_MOUSE_LEFT_BUTTON 
JO_MOUSE_MIDDLE_BUTTON 
JO_MOUSE_RIGHT_BUTTON 

◆ jo_gamepad_type

Input type.

Enumerator
JoNotConnectedGamepad 
JoUnsupportedGamepad 
JoRegularGamepad 
JoRegularMouse 
JoShuttleMouse 
JoRegularKeyboard 
JoNightsPad 

Nights 3D pad, Axis1 and Axis2 are analog stick, Axis3 is right trigger and Axis4 is left trigger.

JoMissionStick 

Mission stick, Axis1 and Axis2 are the analog stick, Axis3 is throttle.

JoRacingWheel 

Racing wheel, Axis1 is the wheel.

◆ jo_input_axis

Input axis type.

Enumerator
JoAxis1 
JoAxis2 
JoAxis3 
JoAxis4 
JoAxis5 
JoAxis6 

Function Documentation

◆ jo_get_input_axis()

unsigned char jo_get_input_axis ( const int port,
const jo_input_axis axis )

Get analog axis value.

Parameters
portGamepad port
axisAnalog axis
Returns
Analog axis value

◆ jo_get_input_count()

int jo_get_input_count ( void )

Get the number of input available.

Returns
Input count

◆ jo_get_input_direction_pressed()

__jo_force_inline jo_8_directions jo_get_input_direction_pressed ( const int port)
static

Get the direction pressed for the given port.

Parameters
portGamepad port
Returns
jo_8_directions

◆ jo_get_input_type()

jo_gamepad_type jo_get_input_type ( const int port)

Get input type for the given port.

Parameters
portGamepad port
Returns
Input type (Pad, Mouse, etc)

◆ jo_get_mouse_pos_x()

__jo_force_inline int jo_get_mouse_pos_x ( const int port)
static

Get mouse X position.

Parameters
portGamepad port
Returns
X coordinate

◆ jo_get_mouse_pos_y()

__jo_force_inline int jo_get_mouse_pos_y ( const int port)
static

Get mouse Y position.

Parameters
portGamepad port
Returns
Y coordinate

◆ jo_get_raw_input_key_pressed()

__jo_force_inline unsigned short jo_get_raw_input_key_pressed ( const int port)
static

Get raw input data for the given port.

Parameters
portGamepad port
Returns
Raw input data

◆ jo_is_input_analog()

__jo_force_inline bool jo_is_input_analog ( const int port)
static

Check if connected input is analog.

Parameters
portinput port
Returns
true if connected controller has analog axies

◆ jo_is_input_available()

__jo_force_inline bool jo_is_input_available ( const int port)
static

Check if the input is available for the given port.

Parameters
portGamepad port
Returns
true if the input is available otherwise false

◆ jo_is_input_key_down()

__jo_force_inline bool jo_is_input_key_down ( const int port,
const jo_gamepad_keys key )
static

Check if the key is down for the given port.

Parameters
portGamepad port
keyKey value
Returns
true if the key is down otherwise false

◆ jo_is_input_key_pressed()

__jo_force_inline bool jo_is_input_key_pressed ( const int port,
const jo_gamepad_keys key )
static

Check if the key is pressed for the given port.

Parameters
portGamepad port
keyKey value
Returns
true if the key is pressed otherwise false

◆ jo_is_pad1_available()

__jo_force_inline bool jo_is_pad1_available ( void )
static

Check if the first gamepad is plugged.

Returns
true if the first gamepad is plugged otherwise false

◆ jo_is_pad1_key_down()

__jo_force_inline bool jo_is_pad1_key_down ( jo_gamepad_keys key)
static

Check if the key is down on the first gamepad.

Parameters
keyKey value
Returns
true if the key is down on the first gamepad otherwise false

◆ jo_is_pad1_key_pressed()

__jo_force_inline bool jo_is_pad1_key_pressed ( jo_gamepad_keys key)
static

Check if the key is pressed on the first gamepad.

Parameters
keyKey value
Returns
true if the key is pressed on the first gamepad otherwise false

◆ jo_is_pad2_available()

__jo_force_inline bool jo_is_pad2_available ( void )
static

Check if the second gamepad is plugged.

Returns
true if the second gamepad is plugged otherwise false

◆ jo_is_pad2_key_down()

__jo_force_inline bool jo_is_pad2_key_down ( jo_gamepad_keys key)
static

Check if the key is down on the second gamepad.

Parameters
keyKey value
Returns
true if the key is down on the second gamepad otherwise false

◆ jo_is_pad2_key_pressed()

__jo_force_inline bool jo_is_pad2_key_pressed ( jo_gamepad_keys key)
static

Check if the key is pressed on the second gamepad.

Parameters
keyKey value
Returns
true if the key is pressed on the second gamepad otherwise false

Variable Documentation

◆ jo_inputs

jo_peripheral jo_inputs[(12)]
extern