Implemented Controller Hotkeys (#111)
Implemented Controller Hotkeys Added controller hotkeys Added guide button support for XInput and winkey The hotkey configurations can be found in HID -> Display controller hotkeys If the Xbox Gamebar overlay is enabled then use the Back button instead of the Guide button. - Fixed hotkey thread destruction - Fixed XINPUT_STATE by padding 4 bytes - Added hotkey vibration for user feedback - Replaced MessageBoxA with ImGuiDialog::ShowMessageBox Co-authored-by: Margen67 <Margen67@users.noreply.github.com>
This commit is contained in:
@@ -145,46 +145,49 @@ X_RESULT WinKeyInputDriver::GetState(uint32_t user_index,
|
||||
IsKeyDown(b.input_key)) {
|
||||
switch (b.output_key) {
|
||||
case ui::VirtualKey::kXInputPadA:
|
||||
buttons |= 0x1000; // XINPUT_GAMEPAD_A
|
||||
buttons |= X_INPUT_GAMEPAD_A;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadY:
|
||||
buttons |= 0x8000; // XINPUT_GAMEPAD_Y
|
||||
buttons |= X_INPUT_GAMEPAD_Y;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadB:
|
||||
buttons |= 0x2000; // XINPUT_GAMEPAD_B
|
||||
buttons |= X_INPUT_GAMEPAD_B;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadX:
|
||||
buttons |= 0x4000; // XINPUT_GAMEPAD_X
|
||||
buttons |= X_INPUT_GAMEPAD_X;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadGuide:
|
||||
buttons |= X_INPUT_GAMEPAD_GUIDE;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadDpadLeft:
|
||||
buttons |= 0x0004; // XINPUT_GAMEPAD_DPAD_LEFT
|
||||
buttons |= X_INPUT_GAMEPAD_DPAD_LEFT;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadDpadRight:
|
||||
buttons |= 0x0008; // XINPUT_GAMEPAD_DPAD_RIGHT
|
||||
buttons |= X_INPUT_GAMEPAD_DPAD_RIGHT;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadDpadDown:
|
||||
buttons |= 0x0002; // XINPUT_GAMEPAD_DPAD_DOWN
|
||||
buttons |= X_INPUT_GAMEPAD_DPAD_DOWN;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadDpadUp:
|
||||
buttons |= 0x0001; // XINPUT_GAMEPAD_DPAD_UP
|
||||
buttons |= X_INPUT_GAMEPAD_DPAD_UP;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadRThumbPress:
|
||||
buttons |= 0x0080; // XINPUT_GAMEPAD_RIGHT_THUMB
|
||||
buttons |= X_INPUT_GAMEPAD_RIGHT_THUMB;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadLThumbPress:
|
||||
buttons |= 0x0040; // XINPUT_GAMEPAD_LEFT_THUMB
|
||||
buttons |= X_INPUT_GAMEPAD_LEFT_THUMB;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadBack:
|
||||
buttons |= 0x0020; // XINPUT_GAMEPAD_BACK
|
||||
buttons |= X_INPUT_GAMEPAD_BACK;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadStart:
|
||||
buttons |= 0x0010; // XINPUT_GAMEPAD_START
|
||||
buttons |= X_INPUT_GAMEPAD_START;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadLShoulder:
|
||||
buttons |= 0x0100; // XINPUT_GAMEPAD_LEFT_SHOULDER
|
||||
buttons |= X_INPUT_GAMEPAD_LEFT_SHOULDER;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadRShoulder:
|
||||
buttons |= 0x0200; // XINPUT_GAMEPAD_RIGHT_SHOULDER
|
||||
buttons |= X_INPUT_GAMEPAD_RIGHT_SHOULDER;
|
||||
break;
|
||||
case ui::VirtualKey::kXInputPadLTrigger:
|
||||
left_trigger = 0xFF;
|
||||
|
||||
Reference in New Issue
Block a user