Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
AppUtilWindows.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2025 Symless 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
10#include "deskflow/AppUtil.h"
11
12#define WIN32_LEAN_AND_MEAN
13#include "Windows.h" // IWYU pragma: keep
14
15#include <condition_variable>
16#include <mutex>
17#include <thread>
18
19#define ARCH_APP_UTIL AppUtilWindows
20
21class IEventQueue;
22
28
29class AppUtilWindows : public AppUtil
30{
31public:
32 explicit AppUtilWindows(IEventQueue *events);
33 ~AppUtilWindows() override;
34
35 static AppUtilWindows &instance();
36
37 int daemonNTStartup(int, char **);
38 int daemonNTMainLoop(int argc, const char **argv);
39 int run(int argc, char **argv) override;
40 void exitApp(int code) override;
41 void startNode() override;
42 std::vector<std::string> getKeyboardLayoutList() override;
43 std::string getCurrentLanguageCode() override;
44 HKL getCurrentKeyboardLayout() const;
45
46private:
47 AppExitMode m_exitMode;
48 IEventQueue *m_events;
49 std::thread m_eventThread; // NOSONAR - No jthread on Windows
50 bool m_eventThreadRunning = false;
51 std::condition_variable m_eventThreadStartedCond;
52 std::mutex m_eventThreadStartedMutex;
53
54 void eventLoop();
55
56 static BOOL WINAPI consoleHandler(DWORD Event);
57};
AppExitMode
Definition AppUtilWindows.h:24
@ kExitModeNormal
Definition AppUtilWindows.h:25
@ kExitModeDaemon
Definition AppUtilWindows.h:26
static const WSAEVENT FAR DWORD
Definition ArchNetworkWinsock.cpp:54
static const WSAEVENT FAR BOOL
Definition ArchNetworkWinsock.cpp:54
std::string getCurrentLanguageCode() override
Definition AppUtilWindows.cpp:163
static AppUtilWindows & instance()
Definition AppUtilWindows.cpp:129
int daemonNTMainLoop(int argc, const char **argv)
Definition AppUtilWindows.cpp:64
int daemonNTStartup(int, char **)
Definition AppUtilWindows.cpp:89
int run(int argc, char **argv) override
Definition AppUtilWindows.cpp:106
HKL getCurrentKeyboardLayout() const
Definition AppUtilWindows.cpp:176
~AppUtilWindows() override
Definition AppUtilWindows.cpp:45
void startNode() override
Definition AppUtilWindows.cpp:134
std::vector< std::string > getKeyboardLayoutList() override
Definition AppUtilWindows.cpp:139
void exitApp(int code) override
Definition AppUtilWindows.cpp:71
AppUtilWindows(IEventQueue *events)
Definition AppUtilWindows.cpp:29
AppUtil()
Definition AppUtil.cpp:14
Event.
Definition Event.h:27
Event queue interface.
Definition IEventQueue.h:32