Deskflow 1.26.0.0
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
PlatformScreen.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2026 Deskflow Developers
4 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
5 * SPDX-FileCopyrightText: (C) 2004 Chris Schoeneman
6 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
7 */
8
9#pragma once
10
12
14
20{
21public:
22 explicit PlatformScreen(IEventQueue *events);
23 ~PlatformScreen() override = default;
24
25 // IScreen overrides
26 void *getEventTarget() const override = 0;
27 bool getClipboard(ClipboardID id, IClipboard *) const override = 0;
28 void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override = 0;
29 void getCursorPos(int32_t &x, int32_t &y) const override = 0;
30
31 // IPrimaryScreen overrides
32 void reconfigure(uint32_t activeSides) override = 0;
33 uint32_t activeSides() override = 0;
34 void warpCursor(int32_t x, int32_t y) override = 0;
35 uint32_t registerHotKey(KeyID key, KeyModifierMask mask) override = 0;
36 void unregisterHotKey(uint32_t id) override = 0;
37 void fakeInputBegin() override = 0;
38 void fakeInputEnd() override = 0;
39 int32_t getJumpZoneSize() const override = 0;
40 bool isAnyMouseButtonDown(uint32_t &buttonID) const override = 0;
41 void getCursorCenter(int32_t &x, int32_t &y) const override = 0;
42
43 // ISecondaryScreen overrides
44 void fakeMouseButton(ButtonID id, bool press) override = 0;
45 void fakeMouseMove(int32_t x, int32_t y) override = 0;
46 void fakeMouseRelativeMove(int32_t dx, int32_t dy) const override = 0;
47 void fakeMouseWheel(ScrollDelta delta) const override = 0;
48
49 // IKeyState overrides
50 void updateKeyMap() override;
51 void updateKeyState() override;
53 void fakeKeyDown(KeyID id, KeyModifierMask mask, KeyButton button, const std::string &) override;
54 bool fakeKeyRepeat(KeyID id, KeyModifierMask mask, int32_t count, KeyButton button, const std::string &lang) override;
55 bool fakeKeyUp(KeyButton button) override;
56 void fakeAllKeysUp() override;
57 bool fakeCtrlAltDel() override;
58 bool isKeyDown(KeyButton) const override;
59 KeyModifierMask getActiveModifiers() const override;
60 KeyModifierMask pollActiveModifiers() const override;
61 int32_t pollActiveGroup() const override;
62 void pollPressedKeys(KeyButtonSet &pressedKeys) const override;
63 void clearStaleModifiers() override;
64
65 // IPlatformScreen overrides
66 void enable() override = 0;
67 void disable() override = 0;
68 void enter() override = 0;
69 bool canLeave() override = 0;
70 void leave() override = 0;
71 bool setClipboard(ClipboardID, const IClipboard *) override = 0;
72 void checkClipboards() override = 0;
73 void openScreensaver(bool notify) override = 0;
74 void closeScreensaver() override = 0;
75 void screensaver(bool activate) override = 0;
76 void resetOptions() override = 0;
77 void setOptions(const OptionsList &options) override = 0;
78 void setSequenceNumber(uint32_t) override = 0;
79 bool isPrimary() const override = 0;
80
81protected:
83
87 virtual void updateButtons() = 0;
88
90
94 virtual IKeyState *getKeyState() const = 0;
95
96 // IPlatformScreen overrides
97 void handleSystemEvent(const Event &event) override = 0;
98
102 static std::string sidesMaskToString(uint32_t sides);
103
104 // Delta for a "click"
105 static const auto s_scrollDelta = 120;
106};
uint8_t ClipboardID
Clipboard ID.
Definition ClipboardTypes.h:16
Coordinate ScrollDelta
Definition Coordinate.h:21
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
Event.
Definition Event.h:29
Clipboard interface.
Definition IClipboard.h:19
Event queue interface.
Definition IEventQueue.h:29
std::set< KeyButton > KeyButtonSet
Definition IKeyState.h:51
IKeyState(const IEventQueue *events)
Definition IKeyState.cpp:17
IPlatformScreen(const IEventQueue *events)
Definition IPlatformScreen.h:32
void fakeInputBegin() override=0
Prepare to synthesize input on primary screen.
void setSequenceNumber(uint32_t) override=0
Set clipboard sequence number.
bool getClipboard(ClipboardID id, IClipboard *) const override=0
Get clipboard.
bool isAnyMouseButtonDown(uint32_t &buttonID) const override=0
Test if mouse is pressed.
void updateKeyState() override
Update the key state.
Definition PlatformScreen.cpp:23
virtual IKeyState * getKeyState() const =0
Get the key state.
int32_t pollActiveGroup() const override
Get the active keyboard layout from OS.
Definition PlatformScreen.cpp:76
bool setClipboard(ClipboardID, const IClipboard *) override=0
Set clipboard.
void getCursorPos(int32_t &x, int32_t &y) const override=0
Get cursor position.
void screensaver(bool activate) override=0
Activate/deactivate screen saver.
void clearStaleModifiers() override
Clear stale modifiers.
Definition PlatformScreen.cpp:86
int32_t getJumpZoneSize() const override=0
Get jump zone size.
~PlatformScreen() override=default
void updateKeyMap() override
Update the keyboard map.
Definition PlatformScreen.cpp:18
void fakeKeyDown(KeyID id, KeyModifierMask mask, KeyButton button, const std::string &) override
Fake a key press.
Definition PlatformScreen.cpp:34
void disable() override=0
Disable screen.
void checkClipboards() override=0
Check clipboard owner.
void fakeMouseWheel(ScrollDelta delta) const override=0
Synthesize a mouse wheel event of amount This Implmentation for this method should call applyScrollMo...
void resetOptions() override=0
Notify of options changes.
void warpCursor(int32_t x, int32_t y) override=0
Warp cursor.
void handleSystemEvent(const Event &event) override=0
Handle system event.
bool isPrimary() const override=0
Test if is primary screen.
void setHalfDuplexMask(KeyModifierMask) override
Set half-duplex mask.
Definition PlatformScreen.cpp:29
void enable() override=0
Enable screen.
void getCursorCenter(int32_t &x, int32_t &y) const override=0
Get cursor center position.
void fakeInputEnd() override=0
Done synthesizing input on primary screen.
PlatformScreen(IEventQueue *events)
Definition PlatformScreen.cpp:13
void openScreensaver(bool notify) override=0
Open screen saver.
uint32_t activeSides() override=0
activeSides
void fakeMouseButton(ButtonID id, bool press) override=0
Fake mouse press/release.
void fakeMouseMove(int32_t x, int32_t y) override=0
Fake mouse move.
uint32_t registerHotKey(KeyID key, KeyModifierMask mask) override=0
Register a system hotkey.
void fakeMouseRelativeMove(int32_t dx, int32_t dy) const override=0
Fake mouse move.
void getShape(int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override=0
Get screen shape.
void enter() override=0
Enter screen.
static std::string sidesMaskToString(uint32_t sides)
Definition PlatformScreen.cpp:91
virtual void updateButtons()=0
Update mouse buttons.
void * getEventTarget() const override=0
Get event target.
void unregisterHotKey(uint32_t id) override=0
Unregister a system hotkey.
static const auto s_scrollDelta
Definition PlatformScreen.h:105
bool fakeKeyUp(KeyButton button) override
Fake a key release.
Definition PlatformScreen.cpp:46
void fakeAllKeysUp() override
Fake key releases for all fake pressed keys.
Definition PlatformScreen.cpp:51
void closeScreensaver() override=0
Close screen saver.
void leave() override=0
Leave screen.
bool fakeKeyRepeat(KeyID id, KeyModifierMask mask, int32_t count, KeyButton button, const std::string &lang) override
Fake a key repeat.
Definition PlatformScreen.cpp:39
void reconfigure(uint32_t activeSides) override=0
Update configuration.
void pollPressedKeys(KeyButtonSet &pressedKeys) const override
Get the keys currently pressed from OS.
Definition PlatformScreen.cpp:81
KeyModifierMask pollActiveModifiers() const override
Get the active modifiers from OS.
Definition PlatformScreen.cpp:71
bool isKeyDown(KeyButton) const override
Test if key is pressed.
Definition PlatformScreen.cpp:61
bool fakeCtrlAltDel() override
Fake ctrl+alt+del.
Definition PlatformScreen.cpp:56
KeyModifierMask getActiveModifiers() const override
Get the active modifiers.
Definition PlatformScreen.cpp:66
bool canLeave() override=0
Leave screen.
void setOptions(const OptionsList &options) override=0
Notify of options changes.