Available Input Samples
padtest
Controller input and vibration feedback
kbtest
USB keyboard input handling
camera
PlayStation Eye camera capture
gemtest
PlayStation Move motion tracking
gemsample
Advanced Move features
padtest - Controller Input
Location:samples/input/padtest/
Demonstrates reading controller button states and triggering vibration motors.
What It Demonstrates
- Pad library initialization
- Detecting connected controllers
- Reading button states
- Analog stick input
- Vibration motor control
- Controller information (vendor/product ID)
Implementation
This sample runs as a network server that outputs controller information over TCP.samples/input/padtest/source/padtest.c
Pad Data Structure
ThePadData structure contains:
- Button states:
BTN_CROSS,BTN_CIRCLE,BTN_TRIANGLE,BTN_SQUARE - D-Pad:
BTN_UP,BTN_DOWN,BTN_LEFT,BTN_RIGHT - Shoulder buttons:
BTN_L1,BTN_L2,BTN_R1,BTN_R2 - Analog sticks: Left stick (X/Y), Right stick (X/Y)
- Pressure sensitivity: Available for analog buttons
Controller Input Patterns
Basic Setup
Vibration Control
kbtest - Keyboard Input
Location:samples/input/kbtest/
Demonstrates USB keyboard input handling.
What It Demonstrates
- Keyboard initialization
- Key press detection
- Modifier keys (Shift, Ctrl, Alt)
- Key repeat handling
camera - PlayStation Eye
Location:samples/input/camera/
Shows how to capture video from the PlayStation Eye camera.
What It Demonstrates
- Camera initialization
- Frame capture
- Video format selection
- Frame buffer management
gemtest - PlayStation Move
Location:samples/input/gemtest/
Demonstrates PlayStation Move motion controller tracking.
What It Demonstrates
- Move controller initialization
- Motion tracking
- Button input
- LED color control
- Vibration feedback
Building Input Samples
Build All Input Samples
Build Individual Sample
Run Padtest
Common Input Patterns
Poll vs Event-Based
Poll vs Event-Based
Most PS3 input is poll-based. Call
ioPadGetData() every frame in your main loop to get the latest controller state.Button Press Detection
Button Press Detection
Analog Deadzone
Analog Deadzone
Multiple Controllers
Multiple Controllers
Best Practices
Initialize Early
Call
ioPadInit() during application startup before entering your main loopCheck Connection Status
Always verify
padinfo.status[i] before calling ioPadGetData()Limit Vibration
Don’t vibrate continuously - it drains battery and is uncomfortable
Handle Disconnection
Controllers can disconnect during gameplay - handle gracefully
Related Documentation
Pad API Reference
Complete controller API documentation
Keyboard API
Keyboard input functions
Camera API
PlayStation Eye camera reference
Move API
PlayStation Move controller API