mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-01 14:20:42 -07:00
623e1e3998
## Link to GitHub Issue or related Pull Request, if one exists Part 1 of many fixes for #814. ## Description of change For the native touch hook - add code to inject synthetic touches using Windows API (`InjectTouchInput`). Note that this is Windows 8+ only, but we can make an assumption that we are running on Win10+ for these games (TDJ/UFC/High Cheers) since the cabs assume Win10. Detect mouse events and allow IIDX poke to call into this to inject synthetic touches. Also, update the nativetouchhook to independently calculate window size and rotation, instead of relying on rawinput layer. ## Testing Tested to work with native touch option on IIDX, SDVX, POPN, all full screen / windowed / sub on/off combinations. Edge cases: * sdvx main monitor rotated 270 deg * touch invert option * windowed mode resize / moved All seem to work.
32 lines
932 B
C++
32 lines
932 B
C++
#pragma once
|
|
|
|
#include <windows.h>
|
|
|
|
namespace nativetouch::inject {
|
|
|
|
enum class ContactOwner {
|
|
None,
|
|
Mouse,
|
|
Synthetic,
|
|
};
|
|
|
|
void initialize_touch_injection();
|
|
void initialize_synthetic_touch();
|
|
bool touch_injection_available();
|
|
|
|
bool contact_is_active();
|
|
bool contact_is_owned_by(ContactOwner owner, HWND window);
|
|
bool begin_contact(
|
|
ContactOwner owner,
|
|
HWND window,
|
|
POINT position,
|
|
bool transform_returned_coordinates);
|
|
bool update_contact(ContactOwner owner, HWND window, POINT position);
|
|
void set_contact_timer(ContactOwner owner, HWND window, UINT_PTR timer_id);
|
|
bool release_active_contact();
|
|
|
|
HWND get_injection_window();
|
|
bool handle_mouse_message(HWND window, UINT message, WPARAM w_param);
|
|
bool handle_synthetic_message(HWND window, UINT message, WPARAM w_param, LPARAM l_param);
|
|
}
|