Deskflow 1.24.0.365
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
Screen.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
11#include "deskflow/IScreen.h"
12#include "deskflow/KeyTypes.h"
13#include "deskflow/MouseTypes.h"
15
16#include <string>
17
18class IClipboard;
19class IPlatformScreen;
20class IEventQueue;
21
22namespace deskflow {
23
25
29class Screen : public IScreen
30{
31public:
32 Screen(IPlatformScreen *platformScreen, IEventQueue *events);
33 Screen(Screen const &) = delete;
34 Screen(Screen &&) = delete;
35 ~Screen() override;
36
37 Screen &operator&(Screen const &) = delete;
38 Screen &operator&(Screen &&) = delete;
39
41
42
44
49 void enable();
50
52
56 void disable();
57
59
63 void enter(KeyModifierMask toggleMask);
64
66
69 bool leave();
70
72
77 void reconfigure(uint32_t activeSides);
78
80
85 void warpCursor(int32_t x, int32_t y);
86
88
92 void setClipboard(ClipboardID, const IClipboard *);
93
95
99
101
105 void screensaver(bool activate) const;
106
108
116 void keyDown(KeyID id, KeyModifierMask, KeyButton, const std::string &);
117
119
123 void keyRepeat(KeyID id, KeyModifierMask, int32_t count, KeyButton, const std::string &lang);
124
126
131
133
136 void mouseDown(ButtonID id);
137
139
142 void mouseUp(ButtonID id);
143
145
149 void mouseMove(int32_t xAbs, int32_t yAbs);
150
152
156 void mouseRelativeMove(int32_t xRel, int32_t yRel) const;
157
159
165 void mouseWheel(int32_t xDelta, int32_t yDelta) const;
166
168
171 void resetOptions();
172
174
178 void setOptions(const OptionsList &options);
179
181
184 void setSequenceNumber(uint32_t);
185
187
191 uint32_t registerHotKey(KeyID key, KeyModifierMask mask);
192
194
197 void unregisterHotKey(uint32_t id);
198
200
206 void fakeInputBegin();
207
209
212 void fakeInputEnd();
213
215
219 std::string getSecureInputApp() const;
220
222
224
226
229 bool isOnScreen() const;
230
232
238 bool isLockedToScreen() const;
239
241
245 int32_t getJumpZoneSize() const;
246
248
253 void getCursorCenter(int32_t &x, int32_t &y) const;
254
256
261
263
268
270
271 // IScreen overrides
272 void *getEventTarget() const override;
273 bool getClipboard(ClipboardID id, IClipboard *) const override;
274 void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override;
275 void getCursorPos(int32_t &x, int32_t &y) const override;
276
278 {
279 return m_screen;
280 }
281
282protected:
283 void enablePrimary();
284 void enableSecondary();
285 void disablePrimary();
286 void disableSecondary();
287
288 void enterPrimary() const;
289 void enterSecondary(KeyModifierMask toggleMask) const;
290 void leavePrimary();
291 void leaveSecondary();
292
293private:
294 // our platform dependent screen
295 IPlatformScreen *m_screen = nullptr;
296
297 // true if screen is being used as a primary screen, false otherwise
298 bool m_isPrimary = false;
299
300 // true if screen is enabled
301 bool m_enabled = false;
302
303 // true if the cursor is on this screen
304 bool m_entered = false;
305
306 // note toggle keys that toggles on up/down (false) or on
307 // transition (true)
308 KeyModifierMask m_halfDuplex;
309
310 // true if we're faking input on a primary screen
311 bool m_fakeInput = false;
312
313 IEventQueue *m_events = nullptr;
314};
315
316} // namespace deskflow
uint8_t ClipboardID
Clipboard ID.
Definition ClipboardTypes.h:16
int key
Definition KeySequence.cpp:15
uint32_t KeyID
Key ID.
Definition KeyTypes.h:21
uint16_t KeyButton
Key Code.
Definition KeyTypes.h:34
uint32_t KeyModifierMask
Modifier key mask.
Definition KeyTypes.h:44
uint8_t ButtonID
Mouse button ID.
Definition MouseTypes.h:16
std::vector< uint32_t > OptionsList
Definition OptionTypes.h:26
int y
Definition ServerConfig.cpp:25
int x
Definition ServerConfig.cpp:24
Clipboard interface.
Definition IClipboard.h:19
Event queue interface.
Definition IEventQueue.h:29
Screen interface.
Definition IPlatformScreen.h:27
Screen interface.
Definition IScreen.h:20
void * getEventTarget() const override
Get event target.
Definition Screen.cpp:345
KeyModifierMask pollActiveModifiers() const
Get the active modifiers from OS.
Definition Screen.cpp:340
Screen & operator&(Screen &&)=delete
int32_t getJumpZoneSize() const
Get jump zone size.
Definition Screen.cpp:321
std::string getSecureInputApp() const
Determine the name of the app causing a secure input state.
Definition Screen.cpp:418
void enable()
Activate screen.
Definition Screen.cpp:68
void enablePrimary()
Definition Screen.cpp:365
Screen(Screen &&)=delete
void enterPrimary() const
Definition Screen.cpp:394
bool getClipboard(ClipboardID id, IClipboard *) const override
Get clipboard.
Definition Screen.cpp:350
void enterSecondary(KeyModifierMask toggleMask) const
Definition Screen.cpp:399
void mouseRelativeMove(int32_t xRel, int32_t yRel) const
Notify of mouse motion.
Definition Screen.cpp:219
void unregisterHotKey(uint32_t id)
Unregister a system hotkey.
Definition Screen.cpp:285
void mouseDown(ButtonID id)
Notify of mouse press.
Definition Screen.cpp:203
void mouseMove(int32_t xAbs, int32_t yAbs)
Notify of mouse motion.
Definition Screen.cpp:213
void reconfigure(uint32_t activeSides)
Update configuration.
Definition Screen.cpp:153
IPlatformScreen * getPlatformScreen()
Definition Screen.h:277
void disableSecondary()
Definition Screen.cpp:388
void setOptions(const OptionsList &options)
Notify of options changes.
Definition Screen.cpp:240
uint32_t registerHotKey(KeyID key, KeyModifierMask mask)
Register a system hotkey.
Definition Screen.cpp:280
void fakeInputEnd()
Done synthesizing input on primary screen.
Definition Screen.cpp:298
KeyModifierMask getActiveModifiers() const
Get the active modifiers.
Definition Screen.cpp:335
void keyRepeat(KeyID id, KeyModifierMask, int32_t count, KeyButton, const std::string &lang)
Notify of key repeat.
Definition Screen.cpp:192
void fakeInputBegin()
Prepare to synthesize input on primary screen.
Definition Screen.cpp:290
void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override
Get screen shape.
Definition Screen.cpp:355
void keyDown(KeyID id, KeyModifierMask, KeyButton, const std::string &)
Notify of key press.
Definition Screen.cpp:180
void keyUp(KeyID id, KeyModifierMask, KeyButton)
Notify of key release.
Definition Screen.cpp:198
void enableSecondary()
Definition Screen.cpp:374
void getCursorPos(int32_t &x, int32_t &y) const override
Get cursor position.
Definition Screen.cpp:360
void screensaver(bool activate) const
Activate/deactivate screen saver.
Definition Screen.cpp:175
Screen & operator&(Screen const &)=delete
void mouseWheel(int32_t xDelta, int32_t yDelta) const
Notify of mouse wheel motion.
Definition Screen.cpp:225
bool isLockedToScreen() const
Get screen lock state.
Definition Screen.cpp:311
Screen(IPlatformScreen *platformScreen, IEventQueue *events)
Definition Screen.cpp:19
void warpCursor(int32_t x, int32_t y)
Warp cursor.
Definition Screen.cpp:159
~Screen() override
Definition Screen.cpp:33
bool isOnScreen() const
Test if cursor on screen.
Definition Screen.cpp:306
void disable()
Deactivate screen.
Definition Screen.cpp:85
void disablePrimary()
Definition Screen.cpp:382
Screen(Screen const &)=delete
void setSequenceNumber(uint32_t)
Set clipboard sequence number.
Definition Screen.cpp:275
void grabClipboard(ClipboardID)
Grab clipboard.
Definition Screen.cpp:170
void leavePrimary()
Definition Screen.cpp:404
void setClipboard(ClipboardID, const IClipboard *)
Set clipboard.
Definition Screen.cpp:165
void resetOptions()
Notify of options changes.
Definition Screen.cpp:231
void mouseUp(ButtonID id)
Notify of mouse release.
Definition Screen.cpp:208
void leaveSecondary()
Definition Screen.cpp:412
void enter(KeyModifierMask toggleMask)
Enter screen.
Definition Screen.cpp:105
void getCursorCenter(int32_t &x, int32_t &y) const
Get cursor center position.
Definition Screen.cpp:330
bool leave()
Leave screen.
Definition Screen.cpp:124
Definition EventTypes.h:11