mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-03 21:41:26 +12:00
Input: Add PS Move navigation controller
Add the ps move navigation controller to pad types. Use proper pad class profiles.
This commit is contained in:
parent
f3b631fbb4
commit
e28b705f0d
5 changed files with 249 additions and 107 deletions
|
@ -123,6 +123,8 @@ void cellPad_NotifyStateChange(u32 index, u32 state)
|
||||||
product = input::get_product_info(input::product_type::dance_dance_revolution_mat);
|
product = input::get_product_info(input::product_type::dance_dance_revolution_mat);
|
||||||
break;
|
break;
|
||||||
case CELL_PAD_PCLASS_TYPE_NAVIGATION:
|
case CELL_PAD_PCLASS_TYPE_NAVIGATION:
|
||||||
|
product = input::get_product_info(input::product_type::ps_move_navigation);
|
||||||
|
break;
|
||||||
case CELL_PAD_PCLASS_TYPE_STANDARD:
|
case CELL_PAD_PCLASS_TYPE_STANDARD:
|
||||||
default:
|
default:
|
||||||
product = input::get_product_info(input::product_type::playstation_3_controller);
|
product = input::get_product_info(input::product_type::playstation_3_controller);
|
||||||
|
|
|
@ -24,92 +24,6 @@ enum CellPadFilterError : u32
|
||||||
CELL_PADFILTER_ERROR_INVALID_PARAMETER = 0x80121401,
|
CELL_PADFILTER_ERROR_INVALID_PARAMETER = 0x80121401,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Controller types
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
CELL_PAD_PCLASS_TYPE_STANDARD = 0x00,
|
|
||||||
CELL_PAD_PCLASS_TYPE_GUITAR = 0x01,
|
|
||||||
CELL_PAD_PCLASS_TYPE_DRUM = 0x02,
|
|
||||||
CELL_PAD_PCLASS_TYPE_DJ = 0x03,
|
|
||||||
CELL_PAD_PCLASS_TYPE_DANCEMAT = 0x04,
|
|
||||||
CELL_PAD_PCLASS_TYPE_NAVIGATION = 0x05,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Profile of a Standard Type Controller
|
|
||||||
// Profile of a Navigation Type Controller
|
|
||||||
// Bits 0 – 31 All 0s
|
|
||||||
|
|
||||||
// Profile of a Guitar Type Controller
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
// Basic
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 = 0x00000001,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 = 0x00000002,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 = 0x00000004,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 = 0x00000008,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 = 0x00000010,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP = 0x00000020,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN = 0x00000040,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR = 0x00000080,
|
|
||||||
// All Basic = 0x000000FF
|
|
||||||
|
|
||||||
// Optional
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H1 = 0x00000100,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H2 = 0x00000200,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H3 = 0x00000400,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H4 = 0x00000800,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H5 = 0x00001000,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_5WAY_EFFECT = 0x00002000,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_GUITAR_TILT_SENS = 0x00004000,
|
|
||||||
// All = 0x00007FFF
|
|
||||||
};
|
|
||||||
|
|
||||||
// Profile of a Drum Type Controller
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_SNARE = 0x00000001,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_TOM = 0x00000002,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 = 0x00000004,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR = 0x00000008,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_KICK = 0x00000010,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT = 0x00000020,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH = 0x00000040,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE = 0x00000080,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DRUM_KICK2 = 0x00000100,
|
|
||||||
// All = 0x000001FF
|
|
||||||
};
|
|
||||||
|
|
||||||
// Profile of a DJ Deck Type Controller
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_ATTACK = 0x00000001,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_CROSSFADER = 0x00000002,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_DSP_DIAL = 0x00000004,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM1 = 0x00000008,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM2 = 0x00000010,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM3 = 0x00000020,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_PLATTER = 0x00000040,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM1 = 0x00000080,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM2 = 0x00000100,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM3 = 0x00000200,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_PLATTER = 0x00000400,
|
|
||||||
// All = 0x000007FF
|
|
||||||
};
|
|
||||||
|
|
||||||
// Profile of a Dance Mat Type Controller
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_CIRCLE = 0x00000001,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_CROSS = 0x00000002,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_TRIANGLE = 0x00000004,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_SQUARE = 0x00000008,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_RIGHT = 0x00000010,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_LEFT = 0x00000020,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_UP = 0x00000040,
|
|
||||||
CELL_PAD_PCLASS_PROFILE_DANCEMAT_DOWN = 0x00000080,
|
|
||||||
// All = 0x000000FF
|
|
||||||
};
|
|
||||||
|
|
||||||
// Length returned in CellPadData struct
|
// Length returned in CellPadData struct
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
|
|
@ -124,6 +124,92 @@ enum DeviceType
|
||||||
CELL_PAD_DEV_TYPE_LDD = 5,
|
CELL_PAD_DEV_TYPE_LDD = 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Controller types
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CELL_PAD_PCLASS_TYPE_STANDARD = 0x00,
|
||||||
|
CELL_PAD_PCLASS_TYPE_GUITAR = 0x01,
|
||||||
|
CELL_PAD_PCLASS_TYPE_DRUM = 0x02,
|
||||||
|
CELL_PAD_PCLASS_TYPE_DJ = 0x03,
|
||||||
|
CELL_PAD_PCLASS_TYPE_DANCEMAT = 0x04,
|
||||||
|
CELL_PAD_PCLASS_TYPE_NAVIGATION = 0x05,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Profile of a Standard Type Controller
|
||||||
|
// Profile of a Navigation Type Controller
|
||||||
|
// Bits 0 – 31 All 0s
|
||||||
|
|
||||||
|
// Profile of a Guitar Type Controller
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
// Basic
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 = 0x00000001,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 = 0x00000002,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 = 0x00000004,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 = 0x00000008,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 = 0x00000010,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP = 0x00000020,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN = 0x00000040,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR = 0x00000080,
|
||||||
|
// All Basic = 0x000000FF
|
||||||
|
|
||||||
|
// Optional
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H1 = 0x00000100,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H2 = 0x00000200,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H3 = 0x00000400,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H4 = 0x00000800,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H5 = 0x00001000,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_5WAY_EFFECT = 0x00002000,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_TILT_SENS = 0x00004000,
|
||||||
|
// All = 0x00007FFF
|
||||||
|
};
|
||||||
|
|
||||||
|
// Profile of a Drum Type Controller
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_SNARE = 0x00000001,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM = 0x00000002,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 = 0x00000004,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR = 0x00000008,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_KICK = 0x00000010,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT = 0x00000020,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH = 0x00000040,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE = 0x00000080,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_KICK2 = 0x00000100,
|
||||||
|
// All = 0x000001FF
|
||||||
|
};
|
||||||
|
|
||||||
|
// Profile of a DJ Deck Type Controller
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_ATTACK = 0x00000001,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_CROSSFADER = 0x00000002,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_DSP_DIAL = 0x00000004,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM1 = 0x00000008,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM2 = 0x00000010,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM3 = 0x00000020,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_PLATTER = 0x00000040,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM1 = 0x00000080,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM2 = 0x00000100,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM3 = 0x00000200,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_PLATTER = 0x00000400,
|
||||||
|
// All = 0x000007FF
|
||||||
|
};
|
||||||
|
|
||||||
|
// Profile of a Dance Mat Type Controller
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_CIRCLE = 0x00000001,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_CROSS = 0x00000002,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_TRIANGLE = 0x00000004,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_SQUARE = 0x00000008,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_RIGHT = 0x00000010,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_LEFT = 0x00000020,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_UP = 0x00000040,
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_DOWN = 0x00000080,
|
||||||
|
// All = 0x000000FF
|
||||||
|
};
|
||||||
|
|
||||||
enum ButtonDataOffset
|
enum ButtonDataOffset
|
||||||
{
|
{
|
||||||
CELL_PAD_BTN_OFFSET_DIGITAL1 = 2,
|
CELL_PAD_BTN_OFFSET_DIGITAL1 = 2,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include "Emu/Io/pad_types.h"
|
||||||
|
|
||||||
namespace input
|
namespace input
|
||||||
{
|
{
|
||||||
|
@ -14,7 +15,8 @@ namespace input
|
||||||
harmonix_rockband_guitar,
|
harmonix_rockband_guitar,
|
||||||
harmonix_rockband_drum_kit,
|
harmonix_rockband_drum_kit,
|
||||||
harmonix_rockband_drum_kit_2,
|
harmonix_rockband_drum_kit_2,
|
||||||
rock_revolution_drum_kit
|
rock_revolution_drum_kit,
|
||||||
|
ps_move_navigation
|
||||||
};
|
};
|
||||||
|
|
||||||
enum vendor_id
|
enum vendor_id
|
||||||
|
@ -35,14 +37,15 @@ namespace input
|
||||||
harmonix_rockband_drum_kit_2 = 0x0218, // Harmonix Pro-Drum Kit (Rock Band III Pro-Drum Controller)
|
harmonix_rockband_drum_kit_2 = 0x0218, // Harmonix Pro-Drum Kit (Rock Band III Pro-Drum Controller)
|
||||||
playstation_3_controller = 0x0268, // PlayStation 3 Controller
|
playstation_3_controller = 0x0268, // PlayStation 3 Controller
|
||||||
rock_revolution_drum_kit = 0x0300, // Rock Revolution Drum Controller
|
rock_revolution_drum_kit = 0x0300, // Rock Revolution Drum Controller
|
||||||
|
ps_move_navigation = 0x042F, // PlayStation Move navigation controller
|
||||||
};
|
};
|
||||||
|
|
||||||
struct product_info
|
struct product_info
|
||||||
{
|
{
|
||||||
product_type type;
|
product_type type;
|
||||||
unsigned short vendor_id;
|
u16 vendor_id;
|
||||||
unsigned short product_id;
|
u16 product_id;
|
||||||
unsigned int pclass_profile; // See CELL_PAD_PCLASS_PROFILE flags
|
u32 pclass_profile; // See CELL_PAD_PCLASS_PROFILE flags
|
||||||
};
|
};
|
||||||
|
|
||||||
inline product_info get_product_info(product_type type)
|
inline product_info get_product_info(product_type type)
|
||||||
|
@ -51,40 +54,172 @@ namespace input
|
||||||
{
|
{
|
||||||
case product_type::dance_dance_revolution_mat:
|
case product_type::dance_dance_revolution_mat:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::konami_de, product_id::dance_dance_revolution_mat, 0x000000FF };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_CIRCLE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_CROSS |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_TRIANGLE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_SQUARE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_RIGHT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_LEFT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_UP |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DANCEMAT_DOWN;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::konami_de,
|
||||||
|
.product_id = product_id::dance_dance_revolution_mat,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::dj_hero_turntable:
|
case product_type::dj_hero_turntable:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::dj_hero_turntable, 0x000007FF };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_ATTACK |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_CROSSFADER |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_MIXER_DSP_DIAL |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM1 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_STREAM3 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK1_PLATTER |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM1 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_STREAM3 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DJ_DECK2_PLATTER;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::dj_hero_turntable,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::harmonix_rockband_drum_kit:
|
case product_type::harmonix_rockband_drum_kit:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::harmonix_rockband_drum_kit, 0x000000FF };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_SNARE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_KICK |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::harmonix_rockband_drum_kit,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::harmonix_rockband_drum_kit_2:
|
case product_type::harmonix_rockband_drum_kit_2:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::harmonix_rockband_drum_kit_2, 0x000000BF };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_SNARE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_KICK |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::harmonix_rockband_drum_kit_2,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::harmonix_rockband_guitar:
|
case product_type::harmonix_rockband_guitar:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::harmonix_rockband_guitar, 0x00007FFF };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H1 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H3 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H4 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_H5 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_5WAY_EFFECT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_TILT_SENS;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::harmonix_rockband_guitar,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::red_octane_gh_drum_kit:
|
case product_type::red_octane_gh_drum_kit:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::red_octane_gh_drum_kit, 0x000000BB };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_SNARE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_KICK |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::red_octane_gh_drum_kit,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::red_octane_gh_guitar:
|
case product_type::red_octane_gh_guitar:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::red_octane_gh_guitar, 0x000000FF };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_1 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_2 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_3 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_4 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_FRET_5 |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_UP |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_STRUM_DOWN |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_GUITAR_WHAMMYBAR;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::red_octane_gh_guitar,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::rock_revolution_drum_kit:
|
case product_type::rock_revolution_drum_kit:
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_cea, product_id::rock_revolution_drum_kit, 0x000000FB };
|
constexpr u32 profile =
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_SNARE |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_TOM_FLOOR |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_KICK |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_HiHAT |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_CRASH |
|
||||||
|
CELL_PAD_PCLASS_PROFILE_DRUM_CYM_RIDE;
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_cea,
|
||||||
|
.product_id = product_id::rock_revolution_drum_kit,
|
||||||
|
.pclass_profile = profile
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case product_type::ps_move_navigation:
|
||||||
|
{
|
||||||
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_corp,
|
||||||
|
.product_id = product_id::ps_move_navigation,
|
||||||
|
.pclass_profile = 0x0
|
||||||
|
};
|
||||||
}
|
}
|
||||||
case product_type::playstation_3_controller:
|
case product_type::playstation_3_controller:
|
||||||
default: // GCC doesn't like it when there is no return value if if all enum values are covered
|
default: // GCC doesn't like it when there is no return value if if all enum values are covered
|
||||||
{
|
{
|
||||||
return product_info{ type, vendor_id::sony_corp, product_id::playstation_3_controller, 0x0 };
|
return product_info{
|
||||||
|
.type = type,
|
||||||
|
.vendor_id = vendor_id::sony_corp,
|
||||||
|
.product_id = product_id::playstation_3_controller,
|
||||||
|
.pclass_profile = 0x0
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,14 +229,14 @@ namespace input
|
||||||
switch (class_id)
|
switch (class_id)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0: // CELL_PAD_PCLASS_TYPE_STANDARD
|
case CELL_PAD_PCLASS_TYPE_STANDARD:
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
get_product_info(product_type::playstation_3_controller)
|
get_product_info(product_type::playstation_3_controller)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 1: // CELL_PAD_PCLASS_TYPE_GUITAR
|
case CELL_PAD_PCLASS_TYPE_GUITAR:
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
|
@ -109,7 +244,7 @@ namespace input
|
||||||
get_product_info(product_type::harmonix_rockband_guitar)
|
get_product_info(product_type::harmonix_rockband_guitar)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 2: // CELL_PAD_PCLASS_TYPE_DRUM
|
case CELL_PAD_PCLASS_TYPE_DRUM:
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
|
@ -119,25 +254,25 @@ namespace input
|
||||||
get_product_info(product_type::rock_revolution_drum_kit)
|
get_product_info(product_type::rock_revolution_drum_kit)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 3: // CELL_PAD_PCLASS_TYPE_DJ
|
case CELL_PAD_PCLASS_TYPE_DJ:
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
get_product_info(product_type::dj_hero_turntable)
|
get_product_info(product_type::dj_hero_turntable)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 4: // CELL_PAD_PCLASS_TYPE_DANCEMAT
|
case CELL_PAD_PCLASS_TYPE_DANCEMAT:
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
get_product_info(product_type::dance_dance_revolution_mat)
|
get_product_info(product_type::dance_dance_revolution_mat)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case 5: // CELL_PAD_PCLASS_TYPE_NAVIGATION
|
case CELL_PAD_PCLASS_TYPE_NAVIGATION:
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
get_product_info(product_type::playstation_3_controller)
|
get_product_info(product_type::ps_move_navigation)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1612,7 +1612,7 @@ void pad_settings_dialog::HandleDeviceClassChange(int index) const
|
||||||
|
|
||||||
ui->chooseProduct->clear();
|
ui->chooseProduct->clear();
|
||||||
|
|
||||||
for (const auto& product : input::get_products_by_class(index))
|
for (const input::product_info& product : input::get_products_by_class(index))
|
||||||
{
|
{
|
||||||
switch (product.type)
|
switch (product.type)
|
||||||
{
|
{
|
||||||
|
@ -1661,6 +1661,11 @@ void pad_settings_dialog::HandleDeviceClassChange(int index) const
|
||||||
ui->chooseProduct->addItem(tr("Rock Revolution", "Rock Revolution Drum Controller"), static_cast<int>(product.type));
|
ui->chooseProduct->addItem(tr("Rock Revolution", "Rock Revolution Drum Controller"), static_cast<int>(product.type));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case input::product_type::ps_move_navigation:
|
||||||
|
{
|
||||||
|
ui->chooseProduct->addItem(tr("PS Move Navigation", "PS Move Navigation Controller"), static_cast<int>(product.type));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue