PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
libpad.c File Reference
#include <tamtypes.h>
#include <kernel.h>
#include <stdio.h>
#include <string.h>
#include <sifrpc.h>
#include <sifcmd.h>
#include "libpad.h"
+ Include dependency graph for libpad.c:

Go to the source code of this file.

Data Structures

struct  pad_data_new
 
struct  pad_data_old
 
union  pad_data_u
 
struct  pad_state
 
struct  open_slot
 
struct  .padInitArgs
 
struct  .padOpenResult
 
struct  .padResult
 
struct  .padOpenArgs
 
struct  .padCloseArgs
 
struct  .padSlotMaxArgs
 
struct  .padInfoModeArgs
 
struct  .padSetMainModeArgs
 
struct  .padModeResult
 
struct  .padGetButtonMaskArgs
 
struct  .padSetButtonInfoArgs
 
struct  .padSetButtonInfoResult
 
struct  .padInfoActArgs
 
struct  .padActDirAlignArgs
 

Macros

#define PAD_BIND_RPC_ID1_NEW   0x80000100
 
#define PAD_BIND_RPC_ID2_NEW   0x80000101
 
#define PAD_BIND_RPC_ID1_OLD   0x8000010f
 
#define PAD_BIND_RPC_ID2_OLD   0x8000011f
 
#define PAD_RPCCMD_OPEN_NEW   0x01
 
#define PAD_RPCCMD_SET_MMODE_NEW   0x06
 
#define PAD_RPCCMD_SET_ACTDIR_NEW   0x07
 
#define PAD_RPCCMD_SET_ACTALIGN_NEW   0x08
 
#define PAD_RPCCMD_GET_BTNMASK_NEW   0x09
 
#define PAD_RPCCMD_SET_BTNINFO_NEW   0x0A
 
#define PAD_RPCCMD_SET_VREF_NEW   0x0B
 
#define PAD_RPCCMD_GET_PORTMAX_NEW   0x0C
 
#define PAD_RPCCMD_GET_SLOTMAX_NEW   0x0D
 
#define PAD_RPCCMD_CLOSE_NEW   0x0E
 
#define PAD_RPCCMD_END_NEW   0x0F
 
#define PAD_RPCCMD_INIT   0x10
 
#define PAD_RPCCMD_GET_MODVER   0x12
 
#define PAD_RPCCMD_OPEN_OLD   0x80000100
 
#define PAD_RPCCMD_INFO_ACT   0x80000102
 
#define PAD_RPCCMD_INFO_COMB_OLD   0x80000103
 
#define PAD_RPCCMD_INFO_MODE   0x80000104
 
#define PAD_RPCCMD_SET_MMODE_OLD   0x80000105
 
#define PAD_RPCCMD_SET_ACTDIR_OLD   0x80000106
 
#define PAD_RPCCMD_SET_ACTALIGN_OLD   0x80000107
 
#define PAD_RPCCMD_GET_BTNMASK_OLD   0x80000108
 
#define PAD_RPCCMD_SET_BTNINFO_OLD   0x80000109
 
#define PAD_RPCCMD_SET_VREF_OLD   0x8000010a
 
#define PAD_RPCCMD_GET_PORTMAX_OLD   0x8000010b
 
#define PAD_RPCCMD_GET_SLOTMAX_OLD   0x8000010c
 
#define PAD_RPCCMD_CLOSE_OLD   0x8000010d
 
#define PAD_RPCCMD_END_OLD   0x8000010e
 

Functions

static SifRpcClientData_t padsif[2] __attribute__ ((aligned(64)))
 
static struct pad_data_newpadGetDmaStrNew (int port, int slot)
 
static struct pad_data_oldpadGetDmaStrOld (int port, int slot)
 
static struct open_slotpadGetConnDmaStr (void)
 
int padInit (int mode)
 
int padPortInit (int mode)
 
int padEnd (void)
 
int padPortOpen (int port, int slot, void *padArea)
 
int padPortClose (int port, int slot)
 
unsigned char padRead (int port, int slot, struct padButtonStatus *data)
 
int padGetState (int port, int slot)
 
unsigned char padGetReqState (int port, int slot)
 
int padSetReqState (int port, int slot, int state)
 
void padStateInt2String (int state, char buf[16])
 
void padReqStateInt2String (int state, char buf[16])
 
int padGetPortMax (void)
 
int padGetSlotMax (int port)
 
int padGetModVersion ()
 
int padInfoMode (int port, int slot, int infoMode, int index)
 
int padSetMainMode (int port, int slot, int mode, int lock)
 
int padInfoPressMode (int port, int slot)
 
int padEnterPressMode (int port, int slot)
 
int padExitPressMode (int port, int slot)
 
int padGetButtonMask (int port, int slot)
 
int padSetButtonInfo (int port, int slot, int buttonInfo)
 
unsigned char padInfoAct (int port, int slot, int actuator, int cmd)
 
int padSetActAlign (int port, int slot, const char actAlign[6])
 
int padSetActDirect (int port, int slot, const char actAlign[6])
 
int padGetConnection (int port, int slot)
 

Variables

int _iop_reboot_count
 
static const char * padStateString []
 
static const char * padReqStateString []
 
static int padInitialised = 0
 
s32 command
 
struct { 
 
s32 command
 
s32 unused [3]
 
void * statBuf
 
padInitArgs 
 
struct { 
 
s32 unknown [3]
 
s32 result
 
s32 unknown2
 
void * padBuf
 
padOpenResult 
 
struct { 
 
s32 unknown [3]
 
s32 result
 
padResult 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s32 unknown
 
void * padArea
 
padOpenArgs 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s32 unknown
 
s32 mode
 
padCloseArgs 
 
struct { 
 
s32 command
 
s32 port
 
padSlotMaxArgs 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s32 infoMode
 
s32 index
 
padInfoModeArgs 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s32 mode
 
s32 lock
 
padSetMainModeArgs 
 
struct { 
 
s32 unknown [5]
 
s32 result
 
padModeResult 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
padGetButtonMaskArgs 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s32 buttonInfo
 
padSetButtonInfoArgs 
 
struct { 
 
s32 unknown [4]
 
s32 result
 
padSetButtonInfoResult 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s32 actuator
 
s32 act_cmd
 
padInfoActArgs 
 
struct { 
 
s32 command
 
s32 port
 
s32 slot
 
s8 align [6]
 
padActDirAlignArgs 
 
char buffer [128]
 
static struct pad_state PadState [2][8]
 

Detailed Description

Pad library functions Quite easy rev engineered from util demos.. Find any bugs? Mail me: pukko.nosp@m.@hom.nosp@m.e.se

Definition in file libpad.c.


Data Structure Documentation

◆ pad_data_new

struct pad_data_new

Definition at line 69 of file libpad.c.

Data Fields
u8 data[32]
u32 actDirData[2]
u32 actAlignData[2]
u8 actData[8][4]
u16 modeTable[4]
u32 frame
u32 findPadRetries
u32 length
u8 modeConfig
u8 modeCurId
u8 model
u8 buttonDataReady
u8 nrOfModes
u8 modeCurOffs
u8 nrOfActuators
u8 numActComb
u8 val_c6
u8 mode
u8 lock
u8 actDirSize
u8 state
u8 reqState
u8 currentTask
u8 runTask
u8 stat70bit
u8 padding[11]

◆ pad_data_old

struct pad_data_old

Definition at line 100 of file libpad.c.

Data Fields
u32 frame
u8 state
u8 reqState
u8 ok
u8 unkn7
u8 data[32]
u32 length
u8 request
u8 CTP

CTP=1/no config; CTP=2/config, acts...

u8 model

1, 2 or 3

u8 correction

the data in the buffer is already corrected

u8 errorCount
u8 unk49[15]

◆ pad_data_u

union pad_data_u

Definition at line 120 of file libpad.c.

+ Collaboration diagram for pad_data_u:
Data Fields
struct pad_data_old oldPadData[2]
struct pad_data_new newPadData[2]

◆ pad_state

struct pad_state

Definition at line 126 of file libpad.c.

+ Collaboration diagram for pad_state:
Data Fields
int open
unsigned int port
unsigned int slot
union pad_data_u * padData
unsigned char * padBuf

◆ open_slot

struct open_slot

Definition at line 135 of file libpad.c.

Data Fields
u32 frame
u32 openSlots[2]
u8 padding[116]

◆ .padInitArgs

struct .padInitArgs

Definition at line 169 of file libpad.c.

Data Fields
s32 command
s32 unused[3]
void * statBuf

◆ .padOpenResult

struct .padOpenResult

Definition at line 174 of file libpad.c.

Data Fields
s32 unknown[3]
s32 result
s32 unknown2
void * padBuf

◆ .padResult

struct .padResult

Definition at line 180 of file libpad.c.

Data Fields
s32 unknown[3]
s32 result

◆ .padOpenArgs

struct .padOpenArgs

Definition at line 184 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s32 unknown
void * padArea

◆ .padCloseArgs

struct .padCloseArgs

Definition at line 190 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s32 unknown
s32 mode

◆ .padSlotMaxArgs

struct .padSlotMaxArgs

Definition at line 196 of file libpad.c.

Data Fields
s32 command
s32 port

◆ .padInfoModeArgs

struct .padInfoModeArgs

Definition at line 200 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s32 infoMode
s32 index

◆ .padSetMainModeArgs

struct .padSetMainModeArgs

Definition at line 206 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s32 mode
s32 lock

◆ .padModeResult

struct .padModeResult

Definition at line 212 of file libpad.c.

Data Fields
s32 unknown[5]
s32 result

◆ .padGetButtonMaskArgs

struct .padGetButtonMaskArgs

Definition at line 216 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot

◆ .padSetButtonInfoArgs

struct .padSetButtonInfoArgs

Definition at line 220 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s32 buttonInfo

◆ .padSetButtonInfoResult

struct .padSetButtonInfoResult

Definition at line 225 of file libpad.c.

Data Fields
s32 unknown[4]
s32 result

◆ .padInfoActArgs

struct .padInfoActArgs

Definition at line 229 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s32 actuator
s32 act_cmd

◆ .padActDirAlignArgs

struct .padActDirAlignArgs

Definition at line 235 of file libpad.c.

Data Fields
s32 command
s32 port
s32 slot
s8 align[6]

Macro Definition Documentation

◆ PAD_BIND_RPC_ID1_NEW

#define PAD_BIND_RPC_ID1_NEW   0x80000100

Definition at line 30 of file libpad.c.

◆ PAD_BIND_RPC_ID2_NEW

#define PAD_BIND_RPC_ID2_NEW   0x80000101

Definition at line 31 of file libpad.c.

◆ PAD_BIND_RPC_ID1_OLD

#define PAD_BIND_RPC_ID1_OLD   0x8000010f

Definition at line 33 of file libpad.c.

◆ PAD_BIND_RPC_ID2_OLD

#define PAD_BIND_RPC_ID2_OLD   0x8000011f

Definition at line 34 of file libpad.c.

◆ PAD_RPCCMD_OPEN_NEW

#define PAD_RPCCMD_OPEN_NEW   0x01

Definition at line 36 of file libpad.c.

◆ PAD_RPCCMD_SET_MMODE_NEW

#define PAD_RPCCMD_SET_MMODE_NEW   0x06

Definition at line 37 of file libpad.c.

◆ PAD_RPCCMD_SET_ACTDIR_NEW

#define PAD_RPCCMD_SET_ACTDIR_NEW   0x07

Definition at line 38 of file libpad.c.

◆ PAD_RPCCMD_SET_ACTALIGN_NEW

#define PAD_RPCCMD_SET_ACTALIGN_NEW   0x08

Definition at line 39 of file libpad.c.

◆ PAD_RPCCMD_GET_BTNMASK_NEW

#define PAD_RPCCMD_GET_BTNMASK_NEW   0x09

Definition at line 40 of file libpad.c.

◆ PAD_RPCCMD_SET_BTNINFO_NEW

#define PAD_RPCCMD_SET_BTNINFO_NEW   0x0A

Definition at line 41 of file libpad.c.

◆ PAD_RPCCMD_SET_VREF_NEW

#define PAD_RPCCMD_SET_VREF_NEW   0x0B

Definition at line 42 of file libpad.c.

◆ PAD_RPCCMD_GET_PORTMAX_NEW

#define PAD_RPCCMD_GET_PORTMAX_NEW   0x0C

Definition at line 43 of file libpad.c.

◆ PAD_RPCCMD_GET_SLOTMAX_NEW

#define PAD_RPCCMD_GET_SLOTMAX_NEW   0x0D

Definition at line 44 of file libpad.c.

◆ PAD_RPCCMD_CLOSE_NEW

#define PAD_RPCCMD_CLOSE_NEW   0x0E

Definition at line 45 of file libpad.c.

◆ PAD_RPCCMD_END_NEW

#define PAD_RPCCMD_END_NEW   0x0F

Definition at line 46 of file libpad.c.

◆ PAD_RPCCMD_INIT

#define PAD_RPCCMD_INIT   0x10

Definition at line 47 of file libpad.c.

◆ PAD_RPCCMD_GET_MODVER

#define PAD_RPCCMD_GET_MODVER   0x12

Definition at line 48 of file libpad.c.

◆ PAD_RPCCMD_OPEN_OLD

#define PAD_RPCCMD_OPEN_OLD   0x80000100

Definition at line 50 of file libpad.c.

◆ PAD_RPCCMD_INFO_ACT

#define PAD_RPCCMD_INFO_ACT   0x80000102

Definition at line 51 of file libpad.c.

◆ PAD_RPCCMD_INFO_COMB_OLD

#define PAD_RPCCMD_INFO_COMB_OLD   0x80000103

Definition at line 52 of file libpad.c.

◆ PAD_RPCCMD_INFO_MODE

#define PAD_RPCCMD_INFO_MODE   0x80000104

Definition at line 53 of file libpad.c.

◆ PAD_RPCCMD_SET_MMODE_OLD

#define PAD_RPCCMD_SET_MMODE_OLD   0x80000105

Definition at line 54 of file libpad.c.

◆ PAD_RPCCMD_SET_ACTDIR_OLD

#define PAD_RPCCMD_SET_ACTDIR_OLD   0x80000106

Definition at line 55 of file libpad.c.

◆ PAD_RPCCMD_SET_ACTALIGN_OLD

#define PAD_RPCCMD_SET_ACTALIGN_OLD   0x80000107

Definition at line 56 of file libpad.c.

◆ PAD_RPCCMD_GET_BTNMASK_OLD

#define PAD_RPCCMD_GET_BTNMASK_OLD   0x80000108

Definition at line 57 of file libpad.c.

◆ PAD_RPCCMD_SET_BTNINFO_OLD

#define PAD_RPCCMD_SET_BTNINFO_OLD   0x80000109

Definition at line 58 of file libpad.c.

◆ PAD_RPCCMD_SET_VREF_OLD

#define PAD_RPCCMD_SET_VREF_OLD   0x8000010a

Definition at line 59 of file libpad.c.

◆ PAD_RPCCMD_GET_PORTMAX_OLD

#define PAD_RPCCMD_GET_PORTMAX_OLD   0x8000010b

Definition at line 60 of file libpad.c.

◆ PAD_RPCCMD_GET_SLOTMAX_OLD

#define PAD_RPCCMD_GET_SLOTMAX_OLD   0x8000010c

Definition at line 61 of file libpad.c.

◆ PAD_RPCCMD_CLOSE_OLD

#define PAD_RPCCMD_CLOSE_OLD   0x8000010d

Definition at line 62 of file libpad.c.

◆ PAD_RPCCMD_END_OLD

#define PAD_RPCCMD_END_OLD   0x8000010e

Definition at line 63 of file libpad.c.

Function Documentation

◆ __attribute__()

static SifRpcClientData_t padsif[2] __attribute__ ( (aligned(64)) )
static

Port state data

◆ padGetDmaStrNew()

static struct pad_data_new * padGetDmaStrNew ( int port,
int slot )
static

Common helper

Definition at line 255 of file libpad.c.

Referenced by padGetReqState(), padGetState(), padInfoAct(), padInfoMode(), padRead(), and padSetReqState().

◆ padGetDmaStrOld()

static struct pad_data_old * padGetDmaStrOld ( int port,
int slot )
static

Definition at line 266 of file libpad.c.

◆ padGetConnDmaStr()

static struct open_slot * padGetConnDmaStr ( void )
static

Returns the data for pad (opened) status. This seems to have been removed from the official SDKs, very early during the PS2's lifetime.

Definition at line 281 of file libpad.c.

Referenced by padGetConnection().

◆ padInit()

int padInit ( int mode)

Initialise libpad

Parameters
modeMust be set to 0.
Returns
== 1 => OK

Definition at line 300 of file libpad.c.

References __attribute__, and padPortInit().

◆ padPortInit()

int padPortInit ( int mode)

Initialise pad ports. Automatically called by padInit(), there is no need to call this function directly.

Parameters
modeMust be set to 0.
Returns
== 1 => OK

Note: PADMAN from release 1.3.4 does not have this function implemented. As a result, it is impossible to reinitialize libpad after calling padEnd().

Returns
== 1 => OK

Definition at line 386 of file libpad.c.

Referenced by padInit().

◆ padEnd()

int padEnd ( void )

Ends all pad communication Note: PADMAN from release 1.3.4 does not have padPortInit implemented. As a result, it is impossible to reinitialize libpad after calling padEnd(). This was known as padClose in the really early official SDK releases.

Returns
== 1 => OK

Definition at line 431 of file libpad.c.

◆ padPortOpen()

int padPortOpen ( int port,
int slot,
void * padArea )
Parameters
portPort to open
slotSlot to open
padAreaThe address of the buffer for storing the pad status. Must be a 256-byte region (2xsizeof(struct pad_data). Must be a 64-byte aligned address. For the old libpad, at least 16-bytes alignment.
Returns
!= 0 => OK

Definition at line 462 of file libpad.c.

Referenced by pad_open().

◆ padPortClose()

int padPortClose ( int port,
int slot )

Closes an opened port.

Parameters
portPort to close
slotSlot to close
Returns
!= 0 => OK

Definition at line 574 of file libpad.c.

Referenced by pad_close(), and padEnd().

◆ padRead()

unsigned char padRead ( int port,
int slot,
struct padButtonStatus * data )

Read pad data

Parameters
portPort number of the pad to get the status for.
slotSlot number of the pad to get the status for.
dataA pointer to a 32 byte array where the result is stored
Returns
!= 0 => OK

Definition at line 612 of file libpad.c.

References padGetDmaStrNew().

Referenced by pad_get_buttons().

◆ padGetState()

int padGetState ( int port,
int slot )

Get current pad state Wait until state == 6 (Ready) before trying to access the pad

Definition at line 645 of file libpad.c.

References padGetDmaStrNew(), and padGetReqState().

Referenced by pad_get_state().

◆ padGetReqState()

unsigned char padGetReqState ( int port,
int slot )

Get pad request state

Definition at line 687 of file libpad.c.

References padGetDmaStrNew().

Referenced by padGetState().

◆ padSetReqState()

int padSetReqState ( int port,
int slot,
int state )

Set pad request state (after a param setting) No need to export this one perhaps..

Definition at line 706 of file libpad.c.

References padGetDmaStrNew().

Referenced by padInfoAct(), padInfoMode(), padSetActAlign(), and padSetMainMode().

◆ padStateInt2String()

void padStateInt2String ( int state,
char buf[16] )

Definition at line 727 of file libpad.c.

◆ padReqStateInt2String()

void padReqStateInt2String ( int state,
char buf[16] )

Definition at line 734 of file libpad.c.

◆ padGetPortMax()

int padGetPortMax ( void )

Returns # slots on the PS2 (usally 2)

Definition at line 741 of file libpad.c.

◆ padGetSlotMax()

int padGetSlotMax ( int port)

Returns # slots the port has (usually 1) probably 4 if using a multi tap (not tested)

Definition at line 766 of file libpad.c.

◆ padGetModVersion()

int padGetModVersion ( )

Returns the padman.irx version NOT SUPPORTED on module rom0:padman

Definition at line 792 of file libpad.c.

◆ padInfoMode()

int padInfoMode ( int port,
int slot,
int infoMode,
int index )

Get pad info (digital (4), dualshock (7), etc..)

Returns
3 - KONAMI GUN; 4 - DIGITAL PAD; 5 - JOYSTICK; 6 - NAMCO GUN; 7 - DUAL SHOCK

Definition at line 805 of file libpad.c.

References padGetDmaStrNew(), and padSetReqState().

Referenced by pad_get_num_modes(), pad_get_type(), pad_has_type(), and pad_init_actuators().

◆ padSetMainMode()

int padSetMainMode ( int port,
int slot,
int mode,
int lock )

mode = 1, -> Analog/dual shock enabled; mode = 0 -> Digital lock = 3 -> Mode not changeable by user

Definition at line 866 of file libpad.c.

References padSetReqState().

Referenced by pad_set_mode().

◆ padInfoPressMode()

int padInfoPressMode ( int port,
int slot )

Check if the pad has pressure sensitive buttons

Definition at line 897 of file libpad.c.

Referenced by pad_set_sensitivity().

◆ padEnterPressMode()

int padEnterPressMode ( int port,
int slot )

Pressure sensitive mode ON

Definition at line 903 of file libpad.c.

Referenced by pad_set_sensitivity().

◆ padExitPressMode()

int padExitPressMode ( int port,
int slot )

Check for newer version Pressure sensitive mode OFF

Definition at line 909 of file libpad.c.

Referenced by pad_set_sensitivity().

◆ padGetButtonMask()

int padGetButtonMask ( int port,
int slot )

Definition at line 915 of file libpad.c.

◆ padSetButtonInfo()

int padSetButtonInfo ( int port,
int slot,
int buttonInfo )

Definition at line 942 of file libpad.c.

◆ padInfoAct()

unsigned char padInfoAct ( int port,
int slot,
int actuator,
int cmd )

Get actuator status for this controller If padInfoAct(port, slot, -1, 0) != 0, the controller has actuators (i think ;) )

Definition at line 972 of file libpad.c.

References padGetDmaStrNew(), and padSetReqState().

Referenced by pad_init_actuators().

◆ padSetActAlign()

int padSetActAlign ( int port,
int slot,
const char actAlign[6] )

Initalise actuators. On dual shock controller: act_align[0] = 0 enables 'small' engine act_align[1] = 1 enables 'big' engine set act_align[2-5] to 0xff (disable)

Definition at line 1025 of file libpad.c.

References padSetReqState().

Referenced by pad_init_actuators().

◆ padSetActDirect()

int padSetActDirect ( int port,
int slot,
const char actAlign[6] )

Set actuator status on dual shock controller, act_align[0] = 0/1 turns off/on 'small' engine act_align[1] = 0-255 sets 'big' engine speed

Definition at line 1056 of file libpad.c.

Referenced by pad_set_actuators().

◆ padGetConnection()

int padGetConnection ( int port,
int slot )

Returns whether the device at port,slot is connected (1 = connected) Appears to have been removed very early during the PS2's lifetime. If possible, use the documented padGetState instead.

NOT SUPPORTED with module rom0:padman

Definition at line 1088 of file libpad.c.

References padGetConnDmaStr().

Variable Documentation

◆ padStateString

const char* padStateString[]
static
Initial value:
= {
"DISCONNECT",
"FINDPAD",
"FINDCTP1",
"",
"",
"EXECCMD",
"STABLE",
"ERROR",
}

Definition at line 147 of file libpad.c.

◆ padReqStateString

const char* padReqStateString[]
static
Initial value:
= {
"COMPLETE",
"FAILED",
"BUSY",
}

Definition at line 157 of file libpad.c.

◆ padInitialised

int padInitialised = 0
static

Definition at line 163 of file libpad.c.

◆ command

s32 command

Definition at line 0 of file libpad.c.

◆ buffer

char buffer[128]

Definition at line 72 of file libpad.c.

◆ PadState

struct pad_state PadState[2][8]
static

Definition at line 246 of file libpad.c.