input: Introduce basic hyprland HID classes
Implements an intermediary HID class for mice, keyboards and touch devices, removing the old structs from WLClasses.hpp Yes, virtual ones are duplicated a bit, but will likely be de-duped once wlr_input_device is not used anymore.
This commit is contained in:
parent
1d2acbe193
commit
1237732b97
39 changed files with 1450 additions and 573 deletions
110
src/devices/IPointer.hpp
Normal file
110
src/devices/IPointer.hpp
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
#pragma once
|
||||
|
||||
#include "IHID.hpp"
|
||||
#include "../helpers/WLListener.hpp"
|
||||
#include "../macros.hpp"
|
||||
#include "../helpers/Vector2D.hpp"
|
||||
|
||||
struct wlr_pointer;
|
||||
|
||||
/*
|
||||
Base class for a pointer.
|
||||
*/
|
||||
class IPointer : public IHID {
|
||||
public:
|
||||
virtual uint32_t getCapabilities();
|
||||
virtual bool isVirtual() = 0;
|
||||
virtual wlr_pointer* wlr() = 0;
|
||||
|
||||
struct SMotionEvent {
|
||||
uint32_t timeMs = 0;
|
||||
Vector2D delta, unaccel;
|
||||
};
|
||||
|
||||
struct SMotionAbsoluteEvent {
|
||||
uint32_t timeMs = 0;
|
||||
Vector2D absolute; // 0.0 - 1.0
|
||||
};
|
||||
|
||||
struct SButtonEvent {
|
||||
uint32_t timeMs = 0;
|
||||
uint32_t button = 0;
|
||||
wl_pointer_button_state state = WL_POINTER_BUTTON_STATE_PRESSED;
|
||||
};
|
||||
|
||||
struct SAxisEvent {
|
||||
uint32_t timeMs = 0;
|
||||
wl_pointer_axis_source source = WL_POINTER_AXIS_SOURCE_WHEEL;
|
||||
wl_pointer_axis axis = WL_POINTER_AXIS_VERTICAL_SCROLL;
|
||||
wl_pointer_axis_relative_direction relativeDirection = WL_POINTER_AXIS_RELATIVE_DIRECTION_IDENTICAL;
|
||||
double delta = 0.0;
|
||||
int32_t deltaDiscrete = 0;
|
||||
};
|
||||
|
||||
struct SSwipeBeginEvent {
|
||||
uint32_t timeMs = 0;
|
||||
uint32_t fingers = 0;
|
||||
};
|
||||
|
||||
struct SSwipeUpdateEvent {
|
||||
uint32_t timeMs = 0;
|
||||
uint32_t fingers = 0;
|
||||
Vector2D delta;
|
||||
};
|
||||
|
||||
struct SSwipeEndEvent {
|
||||
uint32_t timeMs = 0;
|
||||
bool cancelled = false;
|
||||
};
|
||||
|
||||
struct SPinchBeginEvent {
|
||||
uint32_t timeMs = 0;
|
||||
uint32_t fingers = 0;
|
||||
};
|
||||
|
||||
struct SPinchUpdateEvent {
|
||||
uint32_t timeMs = 0;
|
||||
uint32_t fingers = 0;
|
||||
Vector2D delta;
|
||||
double scale = 1.0, rotation = 0.0;
|
||||
};
|
||||
|
||||
struct SPinchEndEvent {
|
||||
uint32_t timeMs = 0;
|
||||
bool cancelled = false;
|
||||
};
|
||||
|
||||
struct SHoldBeginEvent {
|
||||
uint32_t timeMs = 0;
|
||||
uint32_t fingers = 0;
|
||||
};
|
||||
|
||||
struct SHoldEndEvent {
|
||||
uint32_t timeMs = 0;
|
||||
bool cancelled = false;
|
||||
};
|
||||
|
||||
struct {
|
||||
CSignal motion;
|
||||
CSignal motionAbsolute;
|
||||
CSignal button;
|
||||
CSignal axis;
|
||||
CSignal frame;
|
||||
|
||||
CSignal swipeBegin;
|
||||
CSignal swipeEnd;
|
||||
CSignal swipeUpdate;
|
||||
|
||||
CSignal pinchBegin;
|
||||
CSignal pinchEnd;
|
||||
CSignal pinchUpdate;
|
||||
|
||||
CSignal holdBegin;
|
||||
CSignal holdEnd;
|
||||
} pointerEvents;
|
||||
|
||||
std::string hlName;
|
||||
bool connected = false; // means connected to the cursor
|
||||
|
||||
WP<IPointer> self;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue