Deskflow 1.27.0.7
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
Computer.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 Synergy App 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/IComputer.h"
12#include "deskflow/KeyTypes.h"
13#include "deskflow/MouseTypes.h"
15
16#include <string>
17
18class IClipboard;
20class IEventQueue;
21
22namespace deskflow {
23
25
29class Computer : public IComputer
30{
31public:
32 Computer(IPlatformComputer *platformComputer, IEventQueue *events);
33 Computer(Computer const &) = delete;
34 Computer(Computer &&) = delete;
35 ~Computer() override;
36
37 Computer &operator&(Computer const &) = 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 isOnComputer() const;
230
232
238 bool isLockedToComputer() 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 // IComputer 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_computer;
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 computer
295 IPlatformComputer *m_computer = nullptr;
296
297 // true if computer is being used as a primary computer, false otherwise
298 bool m_isPrimary = false;
299
300 // true if computer is enabled
301 bool m_enabled = false;
302
303 // true if the cursor is on this computer
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 computer
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
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
Clipboard interface.
Definition IClipboard.h:19
Computer interface.
Definition IComputer.h:20
Event queue interface.
Definition IEventQueue.h:29
Computer interface.
Definition IPlatformComputer.h:27
KeyModifierMask getActiveModifiers() const
Get the active modifiers.
Definition Computer.cpp:382
void mouseRelativeMove(int32_t xRel, int32_t yRel) const
Notify of mouse motion.
Definition Computer.cpp:261
void mouseDown(ButtonID id)
Notify of mouse press.
Definition Computer.cpp:245
void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override
Get computer shape.
Definition Computer.cpp:402
void warpCursor(int32_t x, int32_t y)
Warp cursor.
Definition Computer.cpp:201
void setClipboard(ClipboardID, const IClipboard *)
Set clipboard.
Definition Computer.cpp:207
void screensaver(bool activate) const
Activate/deactivate computer saver.
Definition Computer.cpp:217
void leavePrimary()
Definition Computer.cpp:451
Computer(Computer const &)=delete
IPlatformComputer * getPlatformComputer()
Definition Computer.h:277
void enter(KeyModifierMask toggleMask)
Enter computer.
Definition Computer.cpp:134
std::string getSecureInputApp() const
Determine the name of the app causing a secure input state.
Definition Computer.cpp:465
void disablePrimary()
Definition Computer.cpp:429
bool isOnComputer() const
Test if cursor on computer.
Definition Computer.cpp:353
void enterSecondary(KeyModifierMask toggleMask) const
Definition Computer.cpp:446
void enablePrimary()
Definition Computer.cpp:412
KeyModifierMask pollActiveModifiers() const
Get the active modifiers from OS.
Definition Computer.cpp:387
void keyRepeat(KeyID id, KeyModifierMask, int32_t count, KeyButton, const std::string &lang)
Notify of key repeat.
Definition Computer.cpp:234
void disable()
Deactivate computer.
Definition Computer.cpp:114
void grabClipboard(ClipboardID)
Grab clipboard.
Definition Computer.cpp:212
void fakeInputBegin()
Prepare to synthesize input on primary computer.
Definition Computer.cpp:337
void unregisterHotKey(uint32_t id)
Unregister a system hotkey.
Definition Computer.cpp:332
Computer & operator&(Computer &&)=delete
void enterPrimary() const
Definition Computer.cpp:441
void mouseMove(int32_t xAbs, int32_t yAbs)
Notify of mouse motion.
Definition Computer.cpp:255
void setOptions(const OptionsList &options)
Notify of options changes.
Definition Computer.cpp:282
bool getClipboard(ClipboardID id, IClipboard *) const override
Get clipboard.
Definition Computer.cpp:397
int32_t getJumpZoneSize() const
Get jump zone size.
Definition Computer.cpp:368
void mouseUp(ButtonID id)
Notify of mouse release.
Definition Computer.cpp:250
Computer(Computer &&)=delete
void mouseWheel(int32_t xDelta, int32_t yDelta) const
Notify of mouse wheel motion.
Definition Computer.cpp:267
Computer & operator&(Computer const &)=delete
void leaveSecondary()
Definition Computer.cpp:459
void keyUp(KeyID id, KeyModifierMask, KeyButton)
Notify of key release.
Definition Computer.cpp:240
uint32_t registerHotKey(KeyID key, KeyModifierMask mask)
Register a system hotkey.
Definition Computer.cpp:327
void keyDown(KeyID id, KeyModifierMask, KeyButton, const std::string &)
Notify of key press.
Definition Computer.cpp:222
void getCursorCenter(int32_t &x, int32_t &y) const
Get cursor center position.
Definition Computer.cpp:377
void enable()
Activate computer.
Definition Computer.cpp:97
void resetOptions()
Notify of options changes.
Definition Computer.cpp:273
void reconfigure(uint32_t activeSides)
Update configuration.
Definition Computer.cpp:195
void * getEventTarget() const override
Get event target.
Definition Computer.cpp:392
void fakeInputEnd()
Done synthesizing input on primary computer.
Definition Computer.cpp:345
bool leave()
Leave computer.
Definition Computer.cpp:160
bool isLockedToComputer() const
Get computer lock state.
Definition Computer.cpp:358
void setSequenceNumber(uint32_t)
Set clipboard sequence number.
Definition Computer.cpp:322
void disableSecondary()
Definition Computer.cpp:435
void enableSecondary()
Definition Computer.cpp:421
void getCursorPos(int32_t &x, int32_t &y) const override
Get cursor position.
Definition Computer.cpp:407
Computer(IPlatformComputer *platformComputer, IEventQueue *events)
Definition Computer.cpp:48
Definition DaemonApp.h:18