Skip to content

Commit

Permalink
Add support for swapping buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
GaryOderNichts committed Apr 13, 2021
1 parent ae78f44 commit 5c1bf36
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 13 deletions.
5 changes: 4 additions & 1 deletion moonlight.conf
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
#fps = 60

## Disables the gamepad so the other controllers are mapped to players 1 to 4
#disable_gamepad=true
#disable_gamepad = true

## Swaps the buttons so they match the xbox controller layout
#swap_buttons = true

## Bitrate depends by default on resolution and fps
## Set to -1 to enable default
Expand Down
7 changes: 7 additions & 0 deletions src/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@

#ifdef __WIIU__
extern int disable_gamepad;
extern int swap_buttons;

extern ssize_t getline(char **buf, size_t *bufsiz, FILE *fp);

#define MOONLIGHT_WIIU_PATH "/vol/external01/wiiu/apps/moonlight"
#endif
Expand Down Expand Up @@ -79,6 +82,7 @@ static struct option long_options[] = {
{"debug", no_argument, NULL, 'Z'},
#ifdef __WIIU__
{"disable_gamepad", no_argument, NULL, 'A'},
{"swap_buttons", no_argument, NULL, 'B'},
#endif
{0, 0, 0, 0},
};
Expand Down Expand Up @@ -248,6 +252,9 @@ static void parse_argument(int c, char* value, PCONFIGURATION config) {
case 'A':
disable_gamepad = true;
break;
case 'B':
swap_buttons = true;
break;
#endif
case 1:
if (config->action == NULL)
Expand Down
49 changes: 37 additions & 12 deletions src/wiiu/input.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <padscore/wpad.h>

int disable_gamepad = 0;
int swap_buttons = 0;

void wiiu_input_init(void)
{
Expand All @@ -26,10 +27,18 @@ void wiiu_input_update(void) {
uint32_t btns = vpad.hold;
short buttonFlags = 0;
#define CHECKBTN(v, f) if (btns & v) buttonFlags |= f;
CHECKBTN(VPAD_BUTTON_A, A_FLAG);
CHECKBTN(VPAD_BUTTON_B, B_FLAG);
CHECKBTN(VPAD_BUTTON_X, X_FLAG);
CHECKBTN(VPAD_BUTTON_Y, Y_FLAG);
if (swap_buttons) {
CHECKBTN(VPAD_BUTTON_A, B_FLAG);
CHECKBTN(VPAD_BUTTON_B, A_FLAG);
CHECKBTN(VPAD_BUTTON_X, Y_FLAG);
CHECKBTN(VPAD_BUTTON_Y, X_FLAG);
}
else {
CHECKBTN(VPAD_BUTTON_A, A_FLAG);
CHECKBTN(VPAD_BUTTON_B, B_FLAG);
CHECKBTN(VPAD_BUTTON_X, X_FLAG);
CHECKBTN(VPAD_BUTTON_Y, Y_FLAG);
}
CHECKBTN(VPAD_BUTTON_UP, UP_FLAG);
CHECKBTN(VPAD_BUTTON_DOWN, DOWN_FLAG);
CHECKBTN(VPAD_BUTTON_LEFT, LEFT_FLAG);
Expand Down Expand Up @@ -58,10 +67,18 @@ void wiiu_input_update(void) {
uint32_t btns = kpad_data.pro.hold;
short buttonFlags = 0;
#define CHECKBTN(v, f) if (btns & v) buttonFlags |= f;
CHECKBTN(WPAD_PRO_BUTTON_A, A_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_B, B_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_X, X_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_Y, Y_FLAG);
if (swap_buttons) {
CHECKBTN(WPAD_PRO_BUTTON_A, B_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_B, A_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_X, Y_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_Y, X_FLAG);
}
else {
CHECKBTN(WPAD_PRO_BUTTON_A, A_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_B, B_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_X, X_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_Y, Y_FLAG);
}
CHECKBTN(WPAD_PRO_BUTTON_UP, UP_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_DOWN, DOWN_FLAG);
CHECKBTN(WPAD_PRO_BUTTON_LEFT, LEFT_FLAG);
Expand All @@ -84,10 +101,18 @@ void wiiu_input_update(void) {
uint32_t btns = kpad_data.classic.hold;
short buttonFlags = 0;
#define CHECKBTN(v, f) if (btns & v) buttonFlags |= f;
CHECKBTN(WPAD_CLASSIC_BUTTON_A, A_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_B, B_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_X, X_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_Y, Y_FLAG);
if (swap_buttons) {
CHECKBTN(WPAD_CLASSIC_BUTTON_A, B_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_B, A_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_X, Y_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_Y, X_FLAG);
}
else {
CHECKBTN(WPAD_CLASSIC_BUTTON_A, A_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_B, B_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_X, X_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_Y, Y_FLAG);
}
CHECKBTN(WPAD_CLASSIC_BUTTON_UP, UP_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_DOWN, DOWN_FLAG);
CHECKBTN(WPAD_CLASSIC_BUTTON_LEFT, LEFT_FLAG);
Expand Down

0 comments on commit 5c1bf36

Please sign in to comment.