Physics Simulation & Visualization Tool 0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
RawInputFilter.h
Go to the documentation of this file.
1#pragma once
2
3#include <QAbstractNativeEventFilter>
4#include <QWindow>
5#include <functional>
6#include <thread>
7#include <atomic>
8
9class RawInputFilter : public QAbstractNativeEventFilter {
10public:
11 using MouseCallback = std::function<void(int dx, int dy)>;
12
13 explicit RawInputFilter(MouseCallback callback);
14 ~RawInputFilter() override;
15
16 bool nativeEventFilter(const QByteArray& eventType, void* message, qintptr* result) override;
17
18 // For non-Windows platforms: call from mouseMoveEvent
19 void handleMouseMove(int dx, int dy);
20
21private:
22 bool initialized = false;
23
24#ifdef _WIN32
25 void registerRawInput(HWND hwnd);
26#elif defined(__linux__)
27 void registerRawInput();
28 int xi_opcode = -1;
29#endif
30
31 std::thread x11Thread;
32 std::atomic<bool> runX11Thread{true};
33
34 MouseCallback mouseCallback;
35};
36
void handleMouseMove(int dx, int dy)
bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override
~RawInputFilter() override
std::function< void(int dx, int dy)> MouseCallback