rpcs3/rpcs3/Input
Windsurf7 588cf69dad
Some checks are pending
Generate Translation Template / Generate Translation Template (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux-aarch64.sh, gcc, rpcs3/rpcs3-ci-jammy-aarch64:1.7, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.7, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1, rpcs3/rpcs3-binaries-linux-arm64, /rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.7, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (d812f1254a1157c80fd402f94446310560f54e5f, rpcs3/rpcs3-binaries-linux, /rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.7, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (0, 51ae32f468089a8169aaf1567de355ff4a3e0842, rpcs3/rpcs3-binaries-mac, Intel) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (1, 8e21bdbc40711a3fccd18fbf17b742348b0f4281, rpcs3/rpcs3-binaries-mac-arm64, Apple Silicon) (push) Waiting to run
Build RPCS3 / RPCS3 Windows (push) Waiting to run
Build RPCS3 / RPCS3 Windows Clang ${{ matrix.arch }} (aarch64, clang, clangarm64, ARM64, windows-11-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Windows Clang ${{ matrix.arch }} (x86_64, clang, clang64, X64, windows-2025) (push) Waiting to run
Build RPCS3 / RPCS3 FreeBSD (push) Waiting to run
Add mouse-based gyro emulation (#18113)
This change adds a hardcoded mouse-based motion sensor emulation
feature, inspired by how Cemu handles mouse-driven gyro input.

While the game window is focused, holding the right mouse button enables
gyro emulation:
- Mouse X movement feeds Motion X
- Mouse Y movement feeds Motion Z
- Mouse Wheel feeds Motion Y

The axis mapping and behavior were tested with the "Spark Runner"
minigame in _Sly Cooper: Thieves in Time_ and _Bentley's Hackpack_.
In accordance with this minigame, a top-down view motion control scheme
relies on the X/Z axes.

While the right mouse button is being held, mouse deltas are captured
via the Qt native event filter and accumulated in the frontend, then
consumed by the pad thread.
On right mouse button release, motion values are reset to the neutral
center to avoid residual drift.

This input path is intentionally independent of pad configuration and
works even when a keyboard-only profile is selected.

This implementation thus resolves issue #13883 by allowing motion-only
gameplay without requiring a physical motion-capable controller.
2026-02-02 09:21:02 +01:00
..
basic_keyboard_handler.cpp Qt/input: add shortcut for toggling emulated mouse and keyboard 2024-08-12 23:19:23 +02:00
basic_keyboard_handler.h input: use keyboard consumers to seperate cell and overlay logic 2024-04-27 01:03:23 +02:00
basic_mouse_handler.cpp input: issue basic mouse move event on window leave 2025-01-16 18:27:16 +01:00
basic_mouse_handler.h input: issue basic mouse move event on window leave 2025-01-16 18:27:16 +01:00
camera_video_sink.cpp Refactor camera code to support different camera handlers 2026-01-01 08:54:57 +01:00
camera_video_sink.h Refactor camera code to support different camera handlers 2026-01-01 08:54:57 +01:00
ds3_pad_handler.cpp hidapi: switch to official libusb remote 2025-12-03 15:50:25 +01:00
ds3_pad_handler.h hid: add support of android devices 2025-03-10 21:09:27 +01:00
ds4_pad_handler.cpp input: change default squircle value to 4000 2025-11-05 22:39:34 +01:00
ds4_pad_handler.h hid: add support of android devices 2025-03-10 21:09:27 +01:00
dualsense_pad_handler.cpp input: change default squircle value to 4000 2025-11-05 22:39:34 +01:00
dualsense_pad_handler.h hid: add support of android devices 2025-03-10 21:09:27 +01:00
evdev_joystick_handler.cpp fmt: add more string_view versions of string functions 2025-12-08 19:49:42 +01:00
evdev_joystick_handler.h Add Menu Key (used by 8bitdo Pro 2 controller 2025-04-14 07:36:17 +02:00
gui_pad_thread.cpp Remove std::strcpy 2025-11-02 14:22:11 +02:00
gui_pad_thread.h Use named_thread in gui_pad_thread 2025-03-12 01:08:49 +01:00
hid_pad_handler.cpp Fix emulator crash when a pad gets disconnected (e.g. due to inactivity) (#17478) 2025-09-07 21:21:35 +02:00
hid_pad_handler.h fix DEBUG mode compilation 2025-06-24 05:16:17 +03:00
keyboard_pad_handler.cpp fmt: add more string_view versions of string functions 2025-12-08 19:49:42 +01:00
keyboard_pad_handler.h keyboard: only map single buttons 2024-08-13 20:58:04 +02:00
mm_joystick_handler.cpp fmt: add more string_view versions of string functions 2025-12-08 19:49:42 +01:00
mm_joystick_handler.h evdev: try to fix first call behaviour 2024-08-11 00:56:07 +02:00
mouse_gyro_handler.cpp Add mouse-based gyro emulation (#18113) 2026-02-02 09:21:02 +01:00
mouse_gyro_handler.h Add mouse-based gyro emulation (#18113) 2026-02-02 09:21:02 +01:00
pad_thread.cpp Add mouse-based gyro emulation (#18113) 2026-02-02 09:21:02 +01:00
pad_thread.h Add mouse-based gyro emulation (#18113) 2026-02-02 09:21:02 +01:00
product_info.cpp input: implement basic copiloting 2025-05-29 20:56:13 +02:00
product_info.h Headers cleanup 2025-02-11 20:38:35 +01:00
ps_move_calibration.cpp PS Move: fix calibration logging 2024-12-13 08:55:52 +01:00
ps_move_calibration.h cellGem: implement quaternion transformation 2024-12-11 18:56:53 +01:00
ps_move_config.cpp windows: move config.yml and games.yml to /config/ 2025-01-16 21:33:33 +01:00
ps_move_config.h static analysis: std::move 2025-03-05 00:12:30 +01:00
ps_move_handler.cpp Fix int -> float conversion warning 2025-12-13 03:55:44 +01:00
ps_move_handler.h hid: add support of android devices 2025-03-10 21:09:27 +01:00
ps_move_tracker.cpp cellGem: Fix YUV conversions, implement gain, averaging and basic outlier detection 2025-12-13 12:43:22 +01:00
ps_move_tracker.h cellGem: Fix YUV conversions, implement gain, averaging and basic outlier detection 2025-12-13 12:43:22 +01:00
raw_mouse_config.cpp windows: move config.yml and games.yml to /config/ 2025-01-16 21:33:33 +01:00
raw_mouse_config.h Qt/input: allow keypresses in raw mouse handler 2025-01-14 15:52:46 +01:00
raw_mouse_handler.cpp Fix raw mouse handler keypress logic 2025-08-27 20:50:38 +02:00
raw_mouse_handler.h Qt/input: allow keypresses in raw mouse handler 2025-01-14 15:52:46 +01:00
sdl_camera_handler.cpp Add SDL camera handler 2026-01-03 14:40:02 +01:00
sdl_camera_handler.h Add SDL camera handler 2026-01-03 14:40:02 +01:00
sdl_camera_video_sink.cpp Add SDL camera handler 2026-01-03 14:40:02 +01:00
sdl_camera_video_sink.h Add SDL camera handler 2026-01-03 14:40:02 +01:00
sdl_instance.cpp Update SDL to 3.4.0 2026-01-07 19:12:04 +01:00
sdl_instance.h SDL: call SDL_PumpEvents from main thread 2025-09-21 10:07:02 +02:00
sdl_pad_handler.cpp Qt/input: fix pressure intensity button availability 2026-01-08 14:33:37 +01:00
sdl_pad_handler.h Qt/Input: Adjust pad settings dialog based on pad capabilities 2025-10-10 13:02:04 +02:00
skateboard_pad_handler.cpp input/macOs: Call hid_close on the main thread 2025-06-07 13:03:41 +02:00
skateboard_pad_handler.h hid: add support of android devices 2025-03-10 21:09:27 +01:00
xinput_pad_handler.cpp input: change default squircle value to 4000 2025-11-05 22:39:34 +01:00
xinput_pad_handler.h Use Microsoft::WRL::ComPtr (#16744) 2025-02-23 15:39:39 +02:00