#include <nitro/pad.h>
u16 PAD_Read( void );
Gets the information for pressed keys/buttons
The key/button information is the logical sum of the following values:
PAD_BUTTON_A |
Button A is being pressed |
PAD_BUTTON_B |
Button B is being pressed |
PAD_BUTTON_SELECT |
SELECT Button is being pressed |
PAD_BUTTON_START |
START Button is being pressed |
PAD_KEY_RIGHT |
+ Control Pad Right key is being pressed |
PAD_KEY_LEFT |
+ Control Pad Left key is being pressed |
PAD_KEY_UP |
+ Control Pad Up key is being pressed |
PAD_KEY_DOWN |
+ Control Pad Down key is being pressed |
PAD_BUTTON_R |
Button R is being pressed |
PAD_BUTTON_L |
Button L is being pressed |
PAD_BUTTON_X |
Button X is being pressed |
PAD_BUTTON_Y |
Button Y is being pressed |
PAD_BUTTON_DEBUG |
DEBUG Button is being pressed. |
The X and Y buttons can read from ARM9 because ARM7 checks a generic port and writes in a shared region. Therefore, if the ARM7 read module is not operating, X and Y buttons cannot read.
PAD_BUTTON_MASK is defined as the logical sum of all buttons (PAD_BUTTON_...), and PAD_PLUS_KEY_MASK is defined as the logical sum of all keys (PAD_KEY_...).
Only the sum of X, Y, and DEBUG buttons read by ARM7 will be defined as PAD_RCNTPORT_MASK. Sums of other buttons are defined as PAD_KEYPORT_MASK.
| D e b u g |
N / A |
Y | X | L | R | D o w n |
U p |
L e f t |
R i g h t |
S t a r t |
S e l e c t |
B | A | Value | |
PAD_BUTTON_MASK |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0x2F0F |
PAD_PLUS_KEY_MASK |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0x00F0 |
PAD_ALL_MASK |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0x2FFF |
PAD_RCNPORT_MASK |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0x2C00 |
PAD_KEYPORT_MASK |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0x03FF |
Example:
u16 padData = PAD_Read(); if ( padData & PAD_BUTTON_A ) { OS_Printf( "you're pushing the A-BUTTON\n" ); } if ( padData & PAD_PLUS_KEY_MASK ) { OS_Printf( "you're pressing one of the +Control Pad Keys\n" ); }
PAD_Read() reads the KEYINPUT IO register internally, aligns with the value from the RCNT register of the generic port that ARM7 acquired, and returns a value with the Key/Button mask PAD_ALL_MASK applied.
None
Current key information
08/06/2004 Deleted PAD_SetIrq and PAD_ClearIrq from See Also
04/13/2004 Added DEBUG button
02/19/2004 Added X, Y buttons
12/01/2003 Initial Version