Deskflow 1.22.0.197
Keyboard and mouse sharing utility
|
Base screen implementation. More...
#include <PlatformScreen.h>
Public Member Functions | |
PlatformScreen (IEventQueue *events, deskflow::ClientScrollDirection scrollDirection=deskflow::ClientScrollDirection::Normal) | |
~PlatformScreen () override=default | |
void * | getEventTarget () const override=0 |
Get event target. | |
bool | getClipboard (ClipboardID id, IClipboard *) const override=0 |
Get clipboard. | |
void | getShape (int32_t &x, int32_t &y, int32_t &width, int32_t &height) const override=0 |
Get screen shape. | |
void | getCursorPos (int32_t &x, int32_t &y) const override=0 |
Get cursor position. | |
void | reconfigure (uint32_t activeSides) override=0 |
Update configuration. | |
uint32_t | activeSides () override=0 |
activeSides | |
void | warpCursor (int32_t x, int32_t y) override=0 |
Warp cursor. | |
uint32_t | registerHotKey (KeyID key, KeyModifierMask mask) override=0 |
Register a system hotkey. | |
void | unregisterHotKey (uint32_t id) override=0 |
Unregister a system hotkey. | |
void | fakeInputBegin () override=0 |
Prepare to synthesize input on primary screen. | |
void | fakeInputEnd () override=0 |
Done synthesizing input on primary screen. | |
int32_t | getJumpZoneSize () const override=0 |
Get jump zone size. | |
bool | isAnyMouseButtonDown (uint32_t &buttonID) const override=0 |
Test if mouse is pressed. | |
void | getCursorCenter (int32_t &x, int32_t &y) const override=0 |
Get cursor center position. | |
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. | |
void | fakeMouseRelativeMove (int32_t dx, int32_t dy) const override=0 |
Fake mouse move. | |
void | fakeMouseWheel (int32_t xDelta, int32_t yDelta) const override=0 |
Fake mouse wheel. | |
void | updateKeyMap () override |
Update the keyboard map. | |
void | updateKeyState () override |
Update the key state. | |
void | setHalfDuplexMask (KeyModifierMask) override |
Set half-duplex mask. | |
void | fakeKeyDown (KeyID id, KeyModifierMask mask, KeyButton button, const std::string &) override |
Fake a key press. | |
bool | fakeKeyRepeat (KeyID id, KeyModifierMask mask, int32_t count, KeyButton button, const std::string &lang) override |
Fake a key repeat. | |
bool | fakeKeyUp (KeyButton button) override |
Fake a key release. | |
void | fakeAllKeysUp () override |
Fake key releases for all fake pressed keys. | |
bool | fakeCtrlAltDel () override |
Fake ctrl+alt+del. | |
bool | isKeyDown (KeyButton) const override |
Test if key is pressed. | |
KeyModifierMask | getActiveModifiers () const override |
Get the active modifiers. | |
KeyModifierMask | pollActiveModifiers () const override |
Get the active modifiers from OS. | |
int32_t | pollActiveGroup () const override |
Get the active keyboard layout from OS. | |
void | pollPressedKeys (KeyButtonSet &pressedKeys) const override |
Get the keys currently pressed from OS. | |
void | enable () override=0 |
Enable screen. | |
void | disable () override=0 |
Disable screen. | |
void | enter () override=0 |
Enter screen. | |
bool | canLeave () override=0 |
Leave screen. | |
void | leave () override=0 |
Leave screen. | |
bool | setClipboard (ClipboardID, const IClipboard *) override=0 |
Set clipboard. | |
void | checkClipboards () override=0 |
Check clipboard owner. | |
void | openScreensaver (bool notify) override=0 |
Open screen saver. | |
void | closeScreensaver () override=0 |
Close screen saver. | |
void | screensaver (bool activate) override=0 |
Activate/deactivate screen saver. | |
void | resetOptions () override=0 |
Notify of options changes. | |
void | setOptions (const OptionsList &options) override=0 |
Notify of options changes. | |
void | setSequenceNumber (uint32_t) override=0 |
Set clipboard sequence number. | |
bool | isPrimary () const override=0 |
Test if is primary screen. | |
Public Member Functions inherited from IPlatformScreen | |
IPlatformScreen (const IEventQueue *events) | |
virtual std::string | getSecureInputApp () const =0 |
Determine the name of the app causing a secure input state. | |
bool | fakeMediaKey (KeyID id) override |
Fake a media key. | |
Public Member Functions inherited from IScreen | |
Public Member Functions inherited from IInterface | |
virtual | ~IInterface ()=default |
Interface destructor does nothing. | |
Public Member Functions inherited from IPrimaryScreen | |
Public Member Functions inherited from ISecondaryScreen | |
Public Member Functions inherited from IKeyState | |
IKeyState (const IEventQueue *events) |
Protected Member Functions | |
virtual void | updateButtons ()=0 |
Update mouse buttons. | |
virtual IKeyState * | getKeyState () const =0 |
Get the key state. | |
void | handleSystemEvent (const Event &event) override=0 |
Handle system event. | |
virtual int32_t | mapClientScrollDirection (int32_t) const |
mapClientScrollDirection Convert scroll according to client scroll directio |
Additional Inherited Members | |
Public Types inherited from IKeyState | |
using | KeyButtonSet = std::set<KeyButton> |
Static Public Attributes inherited from IKeyState | |
static const auto | s_numButtons = 0x200 |
Base screen implementation.
This screen implementation is the superclass of all other screen implementations. It implements a handful of methods and requires subclasses to implement the rest.
PlatformScreen::PlatformScreen | ( | IEventQueue * | events, |
deskflow::ClientScrollDirection | scrollDirection = deskflow::ClientScrollDirection::Normal ) |
|
overridedefault |
|
overridepure virtual |
activeSides
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Leave screen.
Called when the user navigates off the screen. Returns true if the leave can proceed. A typical reason for failure is being unable to install the keyboard and mouse snoopers on a primary screen. Secondary screens should not fail.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Check clipboard owner.
Check ownership of all clipboards and post grab events for any that have changed. This is used as a backup in case the system doesn't reliably report clipboard ownership changes.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Close screen saver.
Close the screen saver. Stop reporting screen saver activation and deactivation and, if the screen saver was disabled by openScreensaver(), enable the screen saver.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Disable screen.
Undoes the operations in enable() and events should no longer be reported.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Enable screen.
Enable the screen, preparing it to report system and user events. For a secondary screen it also means preparing to synthesize events and hiding the cursor.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Enter screen.
Called when the user navigates to this screen.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Fake key releases for all fake pressed keys.
Synthesizes a key release event for every key that is synthetically pressed and updates the key state.
Implements IPlatformScreen.
|
overridevirtual |
Fake ctrl+alt+del.
Synthesize a press of ctrl+alt+del. Return true if processing is complete and false if normal key processing should continue.
Implements IPlatformScreen.
|
overridepure virtual |
Prepare to synthesize input on primary screen.
Prepares the primary screen to receive synthesized input. We do not want to receive this synthesized input as user input so this method ensures that we ignore it. Calls to fakeInputBegin()
may not be nested.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Done synthesizing input on primary screen.
Undoes whatever fakeInputBegin()
did.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Fake a key press.
Synthesizes a key press event and updates the key state.
Implements IPlatformScreen.
|
overridevirtual |
Fake a key repeat.
Synthesizes a key repeat event and updates the key state.
Implements IPlatformScreen.
|
overridevirtual |
Fake a key release.
Synthesizes a key release event and updates the key state.
Implements IPlatformScreen.
|
overridepure virtual |
Fake mouse press/release.
Synthesize a press or release of mouse button id
.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Fake mouse move.
Synthesize a mouse move to the absolute coordinates x
,y.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Fake mouse move.
Synthesize a mouse move to the relative coordinates dx
,dy.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Fake mouse wheel.
Synthesize a mouse wheel event of amount xDelta
and yDelta
.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Get the active modifiers.
Returns the modifiers that are currently active according to our shadowed state.
Implements IPlatformScreen.
|
overridepure virtual |
Get clipboard.
Save the contents of the clipboard indicated by id
and return true iff successful.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Get cursor center position.
Return the cursor center position which is where we park the cursor to compute cursor motion deltas and should be far from the edges of the screen, typically the center.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Get cursor position.
Return the current position of the cursor in x
and y
.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Get event target.
Returns the target used for events created by this object.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Get jump zone size.
Return the jump zone size, the size of the regions on the edges of the screen that cause the cursor to jump to another screen.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
protectedpure virtual |
Get the key state.
Subclasses must implement this method to return the platform specific key state object that each subclass must have.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Get screen shape.
Return the position of the upper-left corner of the screen in x
and y
and the size of the screen in width
and height
.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overrideprotectedpure virtual |
Handle system event.
A platform screen is expected to install a handler for system events in its c'tor like so:
It should remove the handler in its d'tor. Override the handleSystemEvent()
method to process system events. It should post the events IScreen
as appropriate.
A primary screen has further responsibilities. It should post the events in IPrimaryScreen
as appropriate. It should also call onKey()
on its KeyState
whenever a key is pressed or released (but not for key repeats). And it should call updateKeyMap()
on its KeyState
if necessary when the keyboard mapping changes.
The target of all events should be the value returned by getEventTarget()
.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Test if mouse is pressed.
Return true if any mouse button is currently pressed. Ideally, "current" means up to the last processed event but it can mean the current physical mouse button state.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Test if key is pressed.
Returns true iff the given key is down. Half-duplex toggles always return false.
Implements IPlatformScreen.
|
overridepure virtual |
Test if is primary screen.
Return true iff this screen is a primary screen.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Leave screen.
Called when the user navigates off the screen. Should be gated by canLeave().
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
protectedvirtual |
mapClientScrollDirection Convert scroll according to client scroll directio
|
overridepure virtual |
Open screen saver.
Open the screen saver. If notify
is true then this object must send events when the screen saver activates or deactivates until closeScreensaver()
is called. If notify
is false then the screen saver is disabled and restored on closeScreensaver()
.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Get the active keyboard layout from OS.
Returns the active keyboard layout according to the operating system.
Implements IPlatformScreen.
|
overridevirtual |
Get the active modifiers from OS.
Returns the modifiers that are currently active according to the operating system.
Implements IPlatformScreen.
|
overridevirtual |
Get the keys currently pressed from OS.
Adds any keys that are currently pressed according to the operating system to pressedKeys
.
Implements IPlatformScreen.
|
overridepure virtual |
Update configuration.
This is called when the configuration has changed. activeSides
is a bitmask of DirectionMask indicating which sides of the primary screen are linked to clients. Override to handle the possible change in jump zones.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Register a system hotkey.
Registers a system-wide hotkey. The screen should arrange for an event to be delivered to itself when the hot key is pressed or released. When that happens the screen should post a getHotKeyDownEvent()
or getHotKeyUpEvent()
, respectively. The hot key is key key
with exactly the modifiers mask
. Returns 0 on failure otherwise an id that can be used to unregister the hotkey.
A hot key is a set of modifiers and a key, which may itself be a modifier. The hot key is pressed when the hot key's modifiers and only those modifiers are logically down (active) and the key is pressed. The hot key is released when the key is released, regardless of the modifiers.
The hot key event should be generated no matter what window or application has the focus. No other window or application should receive the key press or release events (they can and should see the modifier key events). When the key is a modifier, it's acceptable to allow the user to press the modifiers in any order or to require the user to press the given key last.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Notify of options changes.
Reset all options to their default values.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Activate/deactivate screen saver.
Forcibly activate the screen saver if activate
is true otherwise forcibly deactivate it.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Set clipboard.
Set the contents of the system clipboard indicated by id
.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Set half-duplex mask.
Sets which modifier toggle keys are half-duplex. A half-duplex toggle key doesn't report a key release when toggled on and doesn't report a key press when toggled off.
Implements IPlatformScreen.
|
overridepure virtual |
Notify of options changes.
Set options to given values. Ignore unknown options and don't modify options that aren't given in options
.
Implements IPlatformScreen.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Set clipboard sequence number.
Sets the sequence number to use in subsequent clipboard events.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridepure virtual |
Unregister a system hotkey.
Unregisters a previously registered hot key.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
protectedpure virtual |
Update mouse buttons.
Subclasses must implement this method to update their internal mouse button mapping and, if desired, state tracking.
Implemented in deskflow::EiScreen, MSWindowsScreen, OSXScreen, and XWindowsScreen.
|
overridevirtual |
Update the keyboard map.
Causes the key state to get updated to reflect the current keyboard mapping.
Implements IPlatformScreen.
|
overridevirtual |
Update the key state.
Causes the key state to get updated to reflect the physical keyboard state.
Implements IPlatformScreen.
|
overridepure virtual |
Warp cursor.
Warp the cursor to the absolute coordinates x
,y. Also discard input events up to and including the warp before returning.
Implements IPlatformScreen.
Implemented in MSWindowsScreen, OSXScreen, and XWindowsScreen.