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:
Megamouse 2023-08-21 21:14:42 +02:00
parent f3b631fbb4
commit e28b705f0d
5 changed files with 249 additions and 107 deletions

View file

@ -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);

View file

@ -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
{ {

View file

@ -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,

View file

@ -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)
}; };
} }
} }

View file

@ -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;
}
} }
} }
} }