Deskflow 1.22.0.197
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:22
uint16_t KeyButton
Key Code.
Definition KeyTypes.h:35
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
Clipboard interface.
Definition IClipboard.h:20
Event queue interface.
Definition IEventQueue.h:32
Screen interface.
Definition IPlatformScreen.h:27
Screen interface.
Definition IScreen.h:22
void * getEventTarget() const override
Get event target.
Definition Screen.cpp:347
KeyModifierMask pollActiveModifiers() const
Get the active modifiers from OS.
Definition Screen.cpp:342
Screen & operator&(Screen &&)=delete
int32_t getJumpZoneSize() const
Get jump zone size.
Definition Screen.cpp:323
std::string getSecureInputApp() const
Determine the name of the app causing a secure input state.
Definition Screen.cpp:420
void enable()
Activate screen.
Definition Screen.cpp:70
void enablePrimary()
Definition Screen.cpp:367
Screen(Screen &&)=delete
void enterPrimary() const
Definition Screen.cpp:396
bool getClipboard(ClipboardID id, IClipboard *) const override
Get clipboard.
Definition Screen.cpp:352
void enterSecondary(KeyModifierMask toggleMask) const
Definition Screen.cpp:401
void mouseRelativeMove(int32_t xRel, int32_t yRel) const
Notify of mouse motion.
Definition Screen.cpp:221
void unregisterHotKey(uint32_t id)
Unregister a system hotkey.
Definition Screen.cpp:287
void mouseDown(ButtonID id)
Notify of mouse press.
Definition Screen.cpp:205
void mouseMove(int32_t xAbs, int32_t yAbs)
Notify of mouse motion.
Definition Screen.cpp:215
void reconfigure(uint32_t activeSides)
Update configuration.
Definition Screen.cpp:155
IPlatformScreen * getPlatformScreen()
Definition Screen.h:277
void disableSecondary()
Definition Screen.cpp:390
void setOptions(const OptionsList &options)
Notify of options changes.
Definition Screen.cpp:242
uint32_t registerHotKey(KeyID key, KeyModifierMask mask)
Register a system hotkey.
Definition Screen.cpp:282
void fakeInputEnd()
Done synthesizing input on primary screen.
Definition Screen.cpp:300
KeyModifierMask getActiveModifiers() const
Get the active modifiers.
Definition Screen.cpp:337
void keyRepeat(KeyID id, KeyModifierMask, int32_t count, KeyButton, const std::string &lang)
Notify of key repeat.
Definition Screen.cpp:194
void fakeInputBegin()
Prepare to synthesize input on primary screen.
Definition Screen.cpp:292
void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override
Get screen shape.
Definition Screen.cpp:357
void keyDown(KeyID id, KeyModifierMask, KeyButton, const std::string &)
Notify of key press.
Definition Screen.cpp:182
void keyUp(KeyID id, KeyModifierMask, KeyButton)
Notify of key release.
Definition Screen.cpp:200
void enableSecondary()
Definition Screen.cpp:376
void getCursorPos(int32_t &x, int32_t &y) const override
Get cursor position.
Definition Screen.cpp:362
void screensaver(bool activate) const
Activate/deactivate screen saver.
Definition Screen.cpp:177
Screen & operator&(Screen const &)=delete
void mouseWheel(int32_t xDelta, int32_t yDelta) const
Notify of mouse wheel motion.
Definition Screen.cpp:227
bool isLockedToScreen() const
Get screen lock state.
Definition Screen.cpp:313
Screen(IPlatformScreen *platformScreen, IEventQueue *events)
Definition Screen.cpp:21
void warpCursor(int32_t x, int32_t y)
Warp cursor.
Definition Screen.cpp:161
~Screen() override
Definition Screen.cpp:35
bool isOnScreen() const
Test if cursor on screen.
Definition Screen.cpp:308
void disable()
Deactivate screen.
Definition Screen.cpp:87
void disablePrimary()
Definition Screen.cpp:384
Screen(Screen const &)=delete
void setSequenceNumber(uint32_t)
Set clipboard sequence number.
Definition Screen.cpp:277
void grabClipboard(ClipboardID)
Grab clipboard.
Definition Screen.cpp:172
void leavePrimary()
Definition Screen.cpp:406
void setClipboard(ClipboardID, const IClipboard *)
Set clipboard.
Definition Screen.cpp:167
void resetOptions()
Notify of options changes.
Definition Screen.cpp:233
void mouseUp(ButtonID id)
Notify of mouse release.
Definition Screen.cpp:210
void leaveSecondary()
Definition Screen.cpp:414
void enter(KeyModifierMask toggleMask)
Enter screen.
Definition Screen.cpp:107
void getCursorCenter(int32_t &x, int32_t &y) const
Get cursor center position.
Definition Screen.cpp:332
bool leave()
Leave screen.
Definition Screen.cpp:126
Definition EventTypes.h:11