Allow the Misc button to work as Guide on emulated Xbox 360 controllers

It isn't physically present on Xbox 360 controllers, so we may as well use it for something.
This commit is contained in:
Cameron Gutman 2023-10-05 20:34:23 -05:00
parent 9c401f52aa
commit 71024491e2
2 changed files with 16 additions and 16 deletions

View File

@ -1532,7 +1532,7 @@ namespace platf {
if (RIGHT_STICK & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_THUMBR, bf_new & RIGHT_STICK ? 1 : 0);
if (LEFT_BUTTON & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_TL, bf_new & LEFT_BUTTON ? 1 : 0);
if (RIGHT_BUTTON & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_TR, bf_new & RIGHT_BUTTON ? 1 : 0);
if (HOME & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_MODE, bf_new & HOME ? 1 : 0);
if ((HOME | MISC_BUTTON) & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_MODE, bf_new & (HOME | MISC_BUTTON) ? 1 : 0);
if (A & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_SOUTH, bf_new & A ? 1 : 0);
if (B & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_EAST, bf_new & B ? 1 : 0);
if (X & bf) libevdev_uinput_write_event(uinput.get(), EV_KEY, BTN_NORTH, bf_new & X ? 1 : 0);

View File

@ -1231,21 +1231,21 @@ namespace platf {
auto flags = gamepad_state.buttonFlags;
// clang-format off
if(flags & DPAD_UP) buttons |= XUSB_GAMEPAD_DPAD_UP;
if(flags & DPAD_DOWN) buttons |= XUSB_GAMEPAD_DPAD_DOWN;
if(flags & DPAD_LEFT) buttons |= XUSB_GAMEPAD_DPAD_LEFT;
if(flags & DPAD_RIGHT) buttons |= XUSB_GAMEPAD_DPAD_RIGHT;
if(flags & START) buttons |= XUSB_GAMEPAD_START;
if(flags & BACK) buttons |= XUSB_GAMEPAD_BACK;
if(flags & LEFT_STICK) buttons |= XUSB_GAMEPAD_LEFT_THUMB;
if(flags & RIGHT_STICK) buttons |= XUSB_GAMEPAD_RIGHT_THUMB;
if(flags & LEFT_BUTTON) buttons |= XUSB_GAMEPAD_LEFT_SHOULDER;
if(flags & RIGHT_BUTTON) buttons |= XUSB_GAMEPAD_RIGHT_SHOULDER;
if(flags & HOME) buttons |= XUSB_GAMEPAD_GUIDE;
if(flags & A) buttons |= XUSB_GAMEPAD_A;
if(flags & B) buttons |= XUSB_GAMEPAD_B;
if(flags & X) buttons |= XUSB_GAMEPAD_X;
if(flags & Y) buttons |= XUSB_GAMEPAD_Y;
if(flags & DPAD_UP) buttons |= XUSB_GAMEPAD_DPAD_UP;
if(flags & DPAD_DOWN) buttons |= XUSB_GAMEPAD_DPAD_DOWN;
if(flags & DPAD_LEFT) buttons |= XUSB_GAMEPAD_DPAD_LEFT;
if(flags & DPAD_RIGHT) buttons |= XUSB_GAMEPAD_DPAD_RIGHT;
if(flags & START) buttons |= XUSB_GAMEPAD_START;
if(flags & BACK) buttons |= XUSB_GAMEPAD_BACK;
if(flags & LEFT_STICK) buttons |= XUSB_GAMEPAD_LEFT_THUMB;
if(flags & RIGHT_STICK) buttons |= XUSB_GAMEPAD_RIGHT_THUMB;
if(flags & LEFT_BUTTON) buttons |= XUSB_GAMEPAD_LEFT_SHOULDER;
if(flags & RIGHT_BUTTON) buttons |= XUSB_GAMEPAD_RIGHT_SHOULDER;
if(flags & (HOME | MISC_BUTTON)) buttons |= XUSB_GAMEPAD_GUIDE;
if(flags & A) buttons |= XUSB_GAMEPAD_A;
if(flags & B) buttons |= XUSB_GAMEPAD_B;
if(flags & X) buttons |= XUSB_GAMEPAD_X;
if(flags & Y) buttons |= XUSB_GAMEPAD_Y;
// clang-format on
return (XUSB_BUTTON) buttons;