19#define WIN32_LEAN_AND_MEAN
88 void leave(HKL keyLayout);
114 void setShape(int32_t
x, int32_t
y, int32_t width, int32_t height, int32_t xCenter, int32_t yCenter,
bool isMultimon);
188 HWND m_foregroundWindow;
190 bool m_hasRelativeRestorePosition =
false;
191 int32_t m_relativeRestoreX = 0;
192 int32_t m_relativeRestoreY = 0;
194 using Desks = std::map<std::wstring, Desk *>;
197 HCURSOR createBlankCursor()
const;
198 void destroyCursor(HCURSOR cursor)
const;
199 ATOM createDeskWindowClass(
bool isPrimary)
const;
200 void destroyClass(ATOM windowClass)
const;
201 HWND createWindow(ATOM windowClass,
const wchar_t *
name)
const;
202 void destroyWindow(HWND)
const;
205 void deskMouseMove(int32_t
x, int32_t
y)
const;
206 void deskMouseRelativeMove(int32_t dx, int32_t dy)
const;
207 void saveRelativeRestorePosition(Desk *desk)
const;
208 bool restoreRelativeCursorPosition(Desk *desk)
const;
209 void deskEnter(Desk *desk);
210 void deskLeave(Desk *desk, HKL keyLayout);
211 void deskThread(
const void *vdesk);
214 Desk *addDesk(
const std::wstring &
name, HDESK hdesk);
217 bool isDeskAccessible(
const Desk *desk)
const;
218 void handleCheckDesk();
221 void waitForDesk()
const;
222 void sendMessage(UINT, WPARAM, LPARAM)
const;
225 HWND getForegroundWindow()
const;
228 HDESK openInputDesktop();
229 void closeDesktop(HDESK);
230 std::wstring getDesktopName(HDESK);
233 static LRESULT CALLBACK primaryDeskProc(HWND, UINT, WPARAM, LPARAM);
234 static LRESULT CALLBACK secondaryDeskProc(HWND, UINT, WPARAM, LPARAM);
255 int32_t m_xCenter = 0;
256 int32_t m_yCenter = 0;
259 bool m_multimon =
false;
267 bool m_screensaverNotify =
false;
270 Desk *m_activeDesk =
nullptr;
271 std::wstring m_activeDeskName;
283 bool m_leaveForegroundOption;
284 bool m_relativeMouseMoves =
false;
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:28
static const WSAEVENT FAR DWORD
Definition ArchNetworkWinsock.cpp:55
static void FAR int int flags
Definition ArchNetworkWinsock.cpp:38
uint8_t ButtonID
Mouse button ID.
Definition MouseTypes.h:16
std::vector< uint32_t > OptionsList
Definition OptionTypes.h:26
int y
Definition ServerConfig.cpp:24
int x
Definition ServerConfig.cpp:23
Condition variable.
Definition CondVar.h:121
Definition EventQueueTimer.h:12
Event.
Definition Event.h:43
Event queue interface.
Definition IEventQueue.h:29
Job interface.
Definition IJob.h:16
Screen saver interface.
Definition IScreenSaver.h:16
void enter()
Notify of entering a desk.
Definition MSWindowsDesks.cpp:171
void fakeInputEnd()
Stop ignoring user input.
Definition MSWindowsDesks.cpp:233
void fakeMouseWheel(int32_t xDelta, int32_t yDelta) const
Fake mouse wheel.
Definition MSWindowsDesks.cpp:313
MSWindowsDesks(bool isPrimary, bool useHooks, const IScreenSaver *screensaver, IEventQueue *events, IJob *updateKeys)
Constructor.
Definition MSWindowsDesks.cpp:113
void leave(HKL keyLayout)
Notify of leaving a desk.
Definition MSWindowsDesks.cpp:176
void disable()
Disable desk tracking.
Definition MSWindowsDesks.cpp:156
void fakeMouseButton(ButtonID id, bool press)
Fake mouse press/release.
Definition MSWindowsDesks.cpp:251
void fakeInputBegin()
Start ignoring user input.
Definition MSWindowsDesks.cpp:228
void setOptions(const OptionsList &options)
Notify of options changes.
Definition MSWindowsDesks.cpp:190
void enable()
Enable desk tracking.
Definition MSWindowsDesks.cpp:139
void updateKeys()
Update the key state.
Definition MSWindowsDesks.cpp:202
void resetOptions()
Notify of options changes.
Definition MSWindowsDesks.cpp:181
void fakeMouseRelativeMove(int32_t dx, int32_t dy) const
Fake mouse move.
Definition MSWindowsDesks.cpp:308
void fakeMouseMove(int32_t x, int32_t y) const
Fake mouse move.
Definition MSWindowsDesks.cpp:303
void fakeKeyEvent(WORD virtualKey, WORD scanCode, DWORD flags, bool isAutoRepeat) const
Fake key press/release.
Definition MSWindowsDesks.cpp:246
void installScreensaverHooks(bool install)
Install/uninstall screensaver hooks.
Definition MSWindowsDesks.cpp:220
~MSWindowsDesks()
Definition MSWindowsDesks.cpp:131
void setShape(int32_t x, int32_t y, int32_t width, int32_t height, int32_t xCenter, int32_t yCenter, bool isMultimon)
Tell desk about new size.
Definition MSWindowsDesks.cpp:207
void getCursorPos(int32_t &x, int32_t &y) const
Get cursor position.
Definition MSWindowsDesks.cpp:238
Mutual exclusion.
Definition Mutex.h:22
Thread handle.
Definition Thread.h:33