41 void getShape(std::int32_t &
x, std::int32_t &
y, std::int32_t &width, std::int32_t &height)
const override;
42 void getCursorPos(std::int32_t &
x, std::int32_t &
y)
const override;
47 void warpCursor(std::int32_t
x, std::int32_t
y)
override;
60 void fakeMouseWheel(std::int32_t xDelta, std::int32_t yDelta)
const override;
61 void fakeKey(std::uint32_t keycode,
bool is_down)
const;
66 void enter()
override;
68 void leave()
override;
94 ButtonID mapButtonFromEvdev(ei_event *event)
const;
95 void onKeyEvent(ei_event *event);
96 void onButtonEvent(ei_event *event);
97 void sendWheelEvents(ei_device *device,
const int threshold,
double dx,
double dy,
bool is_discrete);
98 void onPointerScrollEvent(ei_event *event);
99 void onPointerScrollDiscreteEvent(ei_event *event);
100 void onMotionEvent(ei_event *event);
101 void onAbsMotionEvent(
const ei_event *)
const;
103 void eiLogEvent(ei_log_priority priority,
const char *message)
const;
105 void handleConnectedToEisEvent(
const Event &event);
106 void handlePortalSessionClosed();
108 static void handleEiLogEvent(ei *ei,
const ei_log_priority priority,
const char *message, ei_log_context *)
110 auto screen =
static_cast<EiScreen *
>(ei_get_user_data(ei));
111 screen->eiLogEvent(priority, message);
116 bool m_isPrimary =
false;
122 std::vector<ei_device *> m_eiDevices;
125 ei_seat *m_eiSeat =
nullptr;
126 ei_device *m_eiPointer =
nullptr;
127 ei_device *m_eiKeyboard =
nullptr;
128 ei_device *m_eiAbs =
nullptr;
130 std::uint32_t m_sequenceNumber = 0;
132 std::uint32_t m_activeSides = 0;
133 std::uint32_t m_x = 0;
134 std::uint32_t m_y = 0;
135 std::uint32_t m_w = 0;
136 std::uint32_t m_h = 0;
143 std::int32_t m_cursorX = 0;
144 std::int32_t m_cursorY = 0;
146 double m_bufferDX = 0;
147 double m_bufferDY = 0;
149 mutable std::mutex m_mutex;
157 HotKeyItem(std::uint32_t mask, std::uint32_t
id);
158 bool operator<(
const HotKeyItem &other)
const
160 return mask < other.mask;
164 std::uint32_t mask = 0;
165 std::uint32_t
id = 0;
171 explicit HotKeySet(
KeyID keyid);
176 bool removeById(std::uint32_t
id);
177 void addItem(HotKeyItem item);
178 std::uint32_t findByMask(std::uint32_t mask)
const;
182 std::vector<HotKeyItem> m_set;
185 using HotKeyMap = std::map<KeyID, HotKeySet>;
static int void FAR * data
Definition ArchNetworkWinsock.cpp:34
static int type
Definition ArchNetworkWinsock.cpp:44
uint8_t ClipboardID
Clipboard ID.
Definition ClipboardTypes.h:16
int key
Definition KeySequence.cpp:15
uint32_t KeyID
Key ID.
Definition KeyTypes.h:22
uint32_t KeyModifierMask
Modifier key mask.
Definition KeyTypes.h:45
uint8_t ButtonID
Mouse button ID.
Definition MouseTypes.h:16
std::vector< uint32_t > OptionsList
Definition OptionTypes.h:27
int y
Definition ServerConfig.cpp:27
int x
Definition ServerConfig.cpp:26
Event.
Definition Event.h:27
Clipboard interface.
Definition IClipboard.h:20
Event queue interface.
Definition IEventQueue.h:32
IKeyState(const IEventQueue *events)
Definition IKeyState.cpp:18
A key state for Ei.
Definition EiKeyState.h:21
void leave() override
Leave screen.
Definition EiScreen.cpp:361
~EiScreen() override
Definition EiScreen.cpp:78
void checkClipboards() override
Check clipboard owner.
Definition EiScreen.cpp:383
void unregisterHotKey(std::uint32_t id) override
Definition EiScreen.cpp:214
void enter() override
Enter screen.
Definition EiScreen.cpp:335
void setOptions(const OptionsList &options) override
Notify of options changes.
Definition EiScreen.cpp:409
bool isAnyMouseButtonDown(std::uint32_t &buttonID) const override
Definition EiScreen.cpp:239
std::int32_t getJumpZoneSize() const override
Get jump zone size.
Definition EiScreen.cpp:234
void warpCursor(std::int32_t x, std::int32_t y) override
Definition EiScreen.cpp:191
void * getEventTarget() const final
Get event target.
Definition EiScreen.cpp:156
std::uint32_t activeSides() override
activeSides
Definition EiScreen.cpp:186
void openScreensaver(bool notify) override
Open screen saver.
Definition EiScreen.cpp:388
IKeyState * getKeyState() const override
Get the key state.
Definition EiScreen.cpp:849
void addDevice(ei_device *device)
Definition EiScreen.cpp:448
void getCursorPos(std::int32_t &x, std::int32_t &y) const override
Definition EiScreen.cpp:174
void fakeInputBegin() override
Prepare to synthesize input on primary screen.
Definition EiScreen.cpp:224
void fakeMouseWheel(std::int32_t xDelta, std::int32_t yDelta) const override
Definition EiScreen.cpp:301
std::uint32_t registerHotKey(KeyID key, KeyModifierMask mask) override
Register a system hotkey.
Definition EiScreen.cpp:197
void resetOptions() override
Notify of options changes.
Definition EiScreen.cpp:403
EiScreen(bool isPrimary, IEventQueue *events, bool usePortal)
Definition EiScreen.cpp:41
void closeScreensaver() override
Close screen saver.
Definition EiScreen.cpp:393
void updateButtons() override
Update mouse buttons.
Definition EiScreen.cpp:843
void reconfigure(std::uint32_t activeSides) override
Definition EiScreen.cpp:180
void fakeInputEnd() override
Done synthesizing input on primary screen.
Definition EiScreen.cpp:229
bool getClipboard(ClipboardID id, IClipboard *) const override
Get clipboard.
Definition EiScreen.cpp:161
void setSequenceNumber(std::uint32_t) override
Definition EiScreen.cpp:414
void getShape(std::int32_t &x, std::int32_t &y, std::int32_t &width, std::int32_t &height) const override
Definition EiScreen.cpp:166
void screensaver(bool activate) override
Activate/deactivate screen saver.
Definition EiScreen.cpp:398
void handleSystemEvent(const Event &event) override
Handle system event.
Definition EiScreen.cpp:724
bool canLeave() override
Leave screen.
Definition EiScreen.cpp:356
void enable() override
Enable screen.
Definition EiScreen.cpp:324
void fakeMouseRelativeMove(std::int32_t dx, std::int32_t dy) const override
Definition EiScreen.cpp:292
void removeDevice(ei_device *device)
Definition EiScreen.cpp:495
void fakeMouseButton(ButtonID id, bool press) override
Fake mouse press/release.
Definition EiScreen.cpp:250
std::string getSecureInputApp() const override
Determine the name of the app causing a secure input state.
Definition EiScreen.cpp:854
void updateShape()
Definition EiScreen.cpp:424
bool isPrimary() const override
Test if is primary screen.
Definition EiScreen.cpp:419
void getCursorCenter(std::int32_t &x, std::int32_t &y) const override
Definition EiScreen.cpp:244
bool setClipboard(ClipboardID, const IClipboard *) override
Set clipboard.
Definition EiScreen.cpp:378
void fakeKey(std::uint32_t keycode, bool is_down) const
Definition EiScreen.cpp:313
void fakeMouseMove(std::int32_t x, std::int32_t y) override
Definition EiScreen.cpp:276
void disable() override
Disable screen.
Definition EiScreen.cpp:329
Definition PortalRemoteDesktop.h:21
Definition EventTypes.h:11
EventTypes
Definition EventTypes.h:13