mirror of
https://github.com/debauchee/barrier.git
synced 2024-12-28 05:35:52 +03:00
16110acaa2
and on a secondary screen and locked to the screen (via scroll lock) mouse motion is sent as motion deltas. When true and scroll lock is toggled off the mouse is warped to the secondary screen's center so the server knows where it is. This option is intended to support games and other programs that repeatedly warp the mouse to the center of the screen. This change adds general and X11 support but not win32. The option name is "relativeMouseMoves".
101 lines
3.4 KiB
C++
101 lines
3.4 KiB
C++
/*
|
|
* synergy -- mouse and keyboard sharing utility
|
|
* Copyright (C) 2004 Chris Schoeneman
|
|
*
|
|
* This package is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* found in the file COPYING that should have accompanied this file.
|
|
*
|
|
* This package is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef CPLATFORMSCREEN_H
|
|
#define CPLATFORMSCREEN_H
|
|
|
|
#include "IPlatformScreen.h"
|
|
|
|
//! 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.
|
|
*/
|
|
class CPlatformScreen : public IPlatformScreen {
|
|
public:
|
|
CPlatformScreen();
|
|
virtual ~CPlatformScreen();
|
|
|
|
// IScreen overrides
|
|
virtual void* getEventTarget() const = 0;
|
|
virtual bool getClipboard(ClipboardID id, IClipboard*) const = 0;
|
|
virtual void getShape(SInt32& x, SInt32& y,
|
|
SInt32& width, SInt32& height) const = 0;
|
|
virtual void getCursorPos(SInt32& x, SInt32& y) const = 0;
|
|
|
|
// IPrimaryScreen overrides
|
|
virtual void reconfigure(UInt32 activeSides) = 0;
|
|
virtual void warpCursor(SInt32 x, SInt32 y) = 0;
|
|
virtual SInt32 getJumpZoneSize() const = 0;
|
|
virtual bool isAnyMouseButtonDown() const = 0;
|
|
virtual void getCursorCenter(SInt32& x, SInt32& y) const = 0;
|
|
|
|
// ISecondaryScreen overrides
|
|
virtual void fakeMouseButton(ButtonID id, bool press) const = 0;
|
|
virtual void fakeMouseMove(SInt32 x, SInt32 y) const = 0;
|
|
virtual void fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const = 0;
|
|
virtual void fakeMouseWheel(SInt32 delta) const = 0;
|
|
|
|
// IKeyState overrides
|
|
virtual void updateKeys();
|
|
virtual void setHalfDuplexMask(KeyModifierMask);
|
|
virtual void fakeKeyDown(KeyID id, KeyModifierMask mask,
|
|
KeyButton button);
|
|
virtual void fakeKeyRepeat(KeyID id, KeyModifierMask mask,
|
|
SInt32 count, KeyButton button);
|
|
virtual void fakeKeyUp(KeyButton button);
|
|
virtual void fakeToggle(KeyModifierMask modifier);
|
|
virtual bool fakeCtrlAltDel();
|
|
virtual bool isKeyDown(KeyButton) const;
|
|
virtual KeyModifierMask
|
|
getActiveModifiers() const;
|
|
virtual const char* getKeyName(KeyButton) const;
|
|
|
|
// IPlatformScreen overrides
|
|
virtual void enable() = 0;
|
|
virtual void disable() = 0;
|
|
virtual void enter() = 0;
|
|
virtual bool leave() = 0;
|
|
virtual bool setClipboard(ClipboardID, const IClipboard*) = 0;
|
|
virtual void checkClipboards() = 0;
|
|
virtual void openScreensaver(bool notify) = 0;
|
|
virtual void closeScreensaver() = 0;
|
|
virtual void screensaver(bool activate) = 0;
|
|
virtual void resetOptions() = 0;
|
|
virtual void setOptions(const COptionsList& options) = 0;
|
|
virtual void setSequenceNumber(UInt32) = 0;
|
|
virtual bool isPrimary() const = 0;
|
|
|
|
protected:
|
|
//! Update mouse buttons
|
|
/*!
|
|
Subclasses must implement this method to update their internal mouse
|
|
button mapping and, if desired, state tracking.
|
|
*/
|
|
virtual void updateButtons() = 0;
|
|
|
|
//! Get the key state
|
|
/*!
|
|
Subclasses must implement this method to return the platform specific
|
|
key state object that each subclass must have.
|
|
*/
|
|
virtual IKeyState* getKeyState() const = 0;
|
|
|
|
// IPlatformScreen overrides
|
|
virtual void handleSystemEvent(const CEvent& event, void*) = 0;
|
|
};
|
|
|
|
#endif
|