Skip to content

Commit e2b9d27

Browse files
committed
Add support for Switch 2 GR and GL buttons.
1 parent da4a198 commit e2b9d27

9 files changed

+38
-26
lines changed

SerialPrograms/Source/Controllers/SerialPABotBase/SerialPABotBase_Routines_NS_Generic.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ int register_message_converters_push_button_framework(){
2828
if (body.size() != sizeof(pabb_Message_NS_Generic_ControllerStateTicks)){ ss << "(invalid size)" << std::endl; return ss.str(); }
2929
const auto* params = (const pabb_Message_NS_Generic_ControllerStateTicks*)body.c_str();
3030
ss << "seqnum = " << (uint64_t)params->seqnum;
31-
ss << ", buttons = " << params->buttons << "(" << button_to_string((NintendoSwitch::Button)params->buttons) << ")";
31+
ss << ", buttons = " << params->buttons << " (" << button_to_string((NintendoSwitch::Button)params->buttons) << ")";
3232
ss << ", dpad = " << dpad_to_string((NintendoSwitch::DpadPosition)params->dpad);
3333
ss << ", LJ = (" << (int)params->left_joystick_x << "," << (int)params->left_joystick_y << ")";
3434
ss << ", RJ = (" << (int)params->right_joystick_x << "," << (int)params->right_joystick_y << ")";
@@ -48,7 +48,7 @@ int register_message_converters_push_button_framework(){
4848
if (body.size() != sizeof(pabb_Message_NS_Generic_ControllerStateMs)){ ss << "(invalid size)" << std::endl; return ss.str(); }
4949
const auto* params = (const pabb_Message_NS_Generic_ControllerStateMs*)body.c_str();
5050
ss << "seqnum = " << (uint64_t)params->seqnum;
51-
ss << ", buttons = " << params->buttons << "(" << button_to_string((NintendoSwitch::Button)params->buttons) << ")";
51+
ss << ", buttons = " << params->buttons << " (" << button_to_string((NintendoSwitch::Button)params->buttons) << ")";
5252
ss << ", dpad = " << dpad_to_string((NintendoSwitch::DpadPosition)params->dpad);
5353
ss << ", LJ = (" << (int)params->left_joystick_x << "," << (int)params->left_joystick_y << ")";
5454
ss << ", RJ = (" << (int)params->right_joystick_x << "," << (int)params->right_joystick_y << ")";

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_ControllerState.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ std::string button_to_string(Button button){
2626
if (button & BUTTON_RCLICK) str += "RJ ";
2727
if (button & BUTTON_HOME) str += "HOME ";
2828
if (button & BUTTON_CAPTURE) str += "CAPTURE ";
29+
if (button & BUTTON_GR) str += "GR ";
30+
if (button & BUTTON_GL) str += "GL ";
2931
if (button & BUTTON_UP) str += "Up ";
3032
if (button & BUTTON_RIGHT) str += "Right ";
3133
if (button & BUTTON_DOWN) str += "Down ";

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_ControllerState.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ constexpr uint16_t TICKS_PER_SECOND = 125;
2020

2121

2222
// Buttons
23-
constexpr size_t TOTAL_BUTTONS = 22;
23+
constexpr size_t TOTAL_BUTTONS = 24;
2424
using ButtonFlagType = uint32_t;
2525
enum Button : ButtonFlagType{
2626
BUTTON_NONE = 0,
@@ -38,14 +38,16 @@ enum Button : ButtonFlagType{
3838
BUTTON_RCLICK = ((uint32_t)1 << 11),
3939
BUTTON_HOME = ((uint32_t)1 << 12),
4040
BUTTON_CAPTURE = ((uint32_t)1 << 13),
41-
BUTTON_UP = ((uint32_t)1 << 14),
42-
BUTTON_RIGHT = ((uint32_t)1 << 15),
43-
BUTTON_DOWN = ((uint32_t)1 << 16),
44-
BUTTON_LEFT = ((uint32_t)1 << 17),
45-
BUTTON_LEFT_SL = ((uint32_t)1 << 18),
46-
BUTTON_LEFT_SR = ((uint32_t)1 << 19),
47-
BUTTON_RIGHT_SL = ((uint32_t)1 << 20),
48-
BUTTON_RIGHT_SR = ((uint32_t)1 << 21),
41+
BUTTON_GR = ((uint32_t)1 << 14),
42+
BUTTON_GL = ((uint32_t)1 << 15),
43+
BUTTON_UP = ((uint32_t)1 << 16),
44+
BUTTON_RIGHT = ((uint32_t)1 << 17),
45+
BUTTON_DOWN = ((uint32_t)1 << 18),
46+
BUTTON_LEFT = ((uint32_t)1 << 19),
47+
BUTTON_LEFT_SL = ((uint32_t)1 << 20),
48+
BUTTON_LEFT_SR = ((uint32_t)1 << 21),
49+
BUTTON_RIGHT_SL = ((uint32_t)1 << 22),
50+
BUTTON_RIGHT_SR = ((uint32_t)1 << 23),
4951
};
5052
inline constexpr Button operator|(Button x, Button y){
5153
return (Button)((ButtonFlagType)x | (ButtonFlagType)y);

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_Joycon.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ class JoyconController::KeyboardManager final :
3535
std::vector<std::shared_ptr<EditableTableRow>> mapping;
3636
switch (controller_type){
3737
case ControllerType::NintendoSwitch_LeftJoycon:
38-
mapping = ConsoleSettings::instance().KEYBOARD_MAPPINGS.LEFT_JOYCON.current_refs();
38+
mapping = ConsoleSettings::instance().KEYBOARD_MAPPINGS.LEFT_JOYCON0.current_refs();
3939
break;
4040
case ControllerType::NintendoSwitch_RightJoycon:
41-
mapping = ConsoleSettings::instance().KEYBOARD_MAPPINGS.RIGHT_JOYCON.current_refs();
41+
mapping = ConsoleSettings::instance().KEYBOARD_MAPPINGS.RIGHT_JOYCON0.current_refs();
4242
break;
4343
default:;
4444
}

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_KeyboardMapping.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,10 @@ std::vector<std::unique_ptr<EditableTableRow>> ProControllerKeyboardMappingTable
196196
ret.emplace_back(make_mapping("ZR", Qt::Key::Key_Backslash, ProControllerDeltas{.buttons = BUTTON_ZR}));
197197
ret.emplace_back(make_mapping("ZR", Qt::Key::Key_Bar, ProControllerDeltas{.buttons = BUTTON_ZR}));
198198

199+
ret.emplace_back(make_mapping("GL (Switch 2)", Qt::Key::Key_V, ProControllerDeltas{.buttons = BUTTON_GL}));
200+
ret.emplace_back(make_mapping("GR (Switch 2)", Qt::Key::Key_Period, ProControllerDeltas{.buttons = BUTTON_GR}));
201+
ret.emplace_back(make_mapping("GR (Switch 2)", Qt::Key::Key_Greater, ProControllerDeltas{.buttons = BUTTON_GR}));
202+
199203
ret.emplace_back(make_mapping("-", Qt::Key::Key_Minus, ProControllerDeltas{.buttons = BUTTON_MINUS}));
200204
ret.emplace_back(make_mapping("-", Qt::Key::Key_Underscore, ProControllerDeltas{.buttons = BUTTON_MINUS}));
201205
ret.emplace_back(make_mapping("+", Qt::Key::Key_Plus, ProControllerDeltas{.buttons = BUTTON_PLUS}));
@@ -466,14 +470,14 @@ KeyboardMappingOption::KeyboardMappingOption()
466470
LockMode::UNLOCK_WHILE_RUNNING,
467471
false
468472
)
469-
, LEFT_JOYCON(true)
470-
, RIGHT_JOYCON(false)
473+
, LEFT_JOYCON0(true)
474+
, RIGHT_JOYCON0(false)
471475
{
472476
PA_ADD_STATIC(DESCRIPTION);
473477
PA_ADD_OPTION(ADVANCED_MODE);
474-
PA_ADD_OPTION(PRO_CONTROLLER);
475-
PA_ADD_OPTION(LEFT_JOYCON);
476-
PA_ADD_OPTION(RIGHT_JOYCON);
478+
PA_ADD_OPTION(PRO_CONTROLLER0);
479+
PA_ADD_OPTION(LEFT_JOYCON0);
480+
PA_ADD_OPTION(RIGHT_JOYCON0);
477481
ADVANCED_MODE.add_listener(*this);
478482
}
479483

@@ -483,9 +487,9 @@ void KeyboardMappingOption::load_json(const JsonValue& json){
483487
KeyboardMappingOption::on_config_value_changed(this);
484488
}
485489
void KeyboardMappingOption::on_config_value_changed(void* object){
486-
PRO_CONTROLLER.set_advanced_mode(ADVANCED_MODE);
487-
LEFT_JOYCON.set_advanced_mode(ADVANCED_MODE);
488-
RIGHT_JOYCON.set_advanced_mode(ADVANCED_MODE);
490+
PRO_CONTROLLER0.set_advanced_mode(ADVANCED_MODE);
491+
LEFT_JOYCON0.set_advanced_mode(ADVANCED_MODE);
492+
RIGHT_JOYCON0.set_advanced_mode(ADVANCED_MODE);
489493
}
490494

491495

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_KeyboardMapping.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ class KeyboardMappingOption : public BatchOption, private ConfigOption::Listener
142142
public:
143143
StaticTextOption DESCRIPTION;
144144
BooleanCheckBoxOption ADVANCED_MODE;
145-
ProControllerKeyboardMappingTable PRO_CONTROLLER;
146-
JoyconKeyboardMappingTable LEFT_JOYCON;
147-
JoyconKeyboardMappingTable RIGHT_JOYCON;
145+
ProControllerKeyboardMappingTable PRO_CONTROLLER0;
146+
JoyconKeyboardMappingTable LEFT_JOYCON0;
147+
JoyconKeyboardMappingTable RIGHT_JOYCON0;
148148
};
149149

150150

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_ProController.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class ProController::KeyboardManager final :
3535
: PokemonAutomation::KeyboardManager<ProControllerState, ProControllerDeltas>(logger, controller)
3636
{
3737
std::vector<std::shared_ptr<EditableTableRow>> mapping =
38-
ConsoleSettings::instance().KEYBOARD_MAPPINGS.PRO_CONTROLLER.current_refs();
38+
ConsoleSettings::instance().KEYBOARD_MAPPINGS.PRO_CONTROLLER0.current_refs();
3939
for (const auto& deltas : mapping){
4040
const ProControllerKeyMapTableRow& row = static_cast<const ProControllerKeyMapTableRow&>(*deltas);
4141
m_mapping[(Qt::Key)(uint32_t)row.key] += row.snapshot();

SerialPrograms/Source/NintendoSwitch/Controllers/NintendoSwitch_ProController.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ constexpr Button VALID_PRO_CONTROLLER_BUTTONS =
4343
BUTTON_UP |
4444
BUTTON_RIGHT |
4545
BUTTON_DOWN |
46-
BUTTON_LEFT;
46+
BUTTON_LEFT |
47+
BUTTON_GR |
48+
BUTTON_GL;
4749

4850

4951

SerialPrograms/Source/NintendoSwitch/Controllers/SerialPABotBase/NintendoSwitch_SerialPABotBase_PokkenController.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ void SerialPABotBase_PokkenController::push_state(const Cancellable* cancellable
9393
case BUTTON_RCLICK: buttons |= 1 << 11; break;
9494
case BUTTON_HOME: buttons |= 1 << 12; break;
9595
case BUTTON_CAPTURE: buttons |= 1 << 13; break;
96+
case BUTTON_GR: buttons |= 1 << 14; break;
97+
case BUTTON_GL: buttons |= 1 << 15; break;
9698
case BUTTON_UP: dpad_y--; break;
9799
case BUTTON_RIGHT: dpad_x++; break;
98100
case BUTTON_DOWN: dpad_y++; break;

0 commit comments

Comments
 (0)