Deskflow 1.24.0.365
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();
38 int daemonNTMainLoop();
39 int run() 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:55
static const WSAEVENT FAR BOOL
Definition ArchNetworkWinsock.cpp:55
std::string getCurrentLanguageCode() override
Definition AppUtilWindows.cpp:156
static AppUtilWindows & instance()
Definition AppUtilWindows.cpp:122
int run() override
Definition AppUtilWindows.cpp:104
HKL getCurrentKeyboardLayout() const
Definition AppUtilWindows.cpp:169
~AppUtilWindows() override
Definition AppUtilWindows.cpp:43
void startNode() override
Definition AppUtilWindows.cpp:127
int daemonNTMainLoop()
Definition AppUtilWindows.cpp:62
std::vector< std::string > getKeyboardLayoutList() override
Definition AppUtilWindows.cpp:132
void exitApp(int code) override
Definition AppUtilWindows.cpp:69
AppUtilWindows(IEventQueue *events)
Definition AppUtilWindows.cpp:27
int daemonNTStartup()
Definition AppUtilWindows.cpp:87
AppUtil()
Definition AppUtil.cpp:14
Event.
Definition Event.h:29
Event queue interface.
Definition IEventQueue.h:29