Deskflow 1.24.0.365
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
XWindowsUtil.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 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 <cstdint>
11#include <string>
12
13#include <X11/Xlib.h>
14
17{
18public:
20
27 static bool getWindowProperty(
28 Display *, Window window, Atom property, std::string *data, Atom *type, int32_t *format, bool deleteProperty
29 );
30
32
36 static bool setWindowProperty(
37 Display *, Window window, Atom property, const void *data, uint32_t size, Atom type, int32_t format
38 );
39
41
44 static Time getCurrentTime(Display *, Window);
45
47
50 static std::string atomToString(Display *, Atom atom);
51
53
57 static std::string atomsToString(Display *display, const Atom *atom, uint32_t num);
58
60
64 static void convertAtomProperty(std::string &data);
65
67
71 static void appendAtomData(std::string &data, Atom atom);
72
74
78 static void replaceAtomData(std::string &data, uint32_t index, Atom atom);
79
81
85 static void appendTimeData(std::string &data, Time time);
86
88
97 {
98 public:
100 using ErrorHandler = void (*)(Display *, XErrorEvent *, void *userData);
101
105 explicit ErrorLock(Display *);
106 ErrorLock(ErrorLock const &) = delete;
107 ErrorLock(ErrorLock &&) = delete;
108
109 ErrorLock &operator=(ErrorLock const &) = delete;
111
115 ErrorLock(Display *, bool *errorFlag);
116
120 ErrorLock(Display *, ErrorHandler handler, void *userData);
121
122 ~ErrorLock();
123
124 private:
125 void install(ErrorHandler, void *);
126 static int internalHandler(Display *, XErrorEvent *);
127 static void ignoreHandler(Display *, XErrorEvent *, void *);
128 static void saveHandler(Display *, XErrorEvent *, void *);
129
130 private:
131 using XErrorHandler = int (*)(Display *, XErrorEvent *);
132
133 Display *m_display;
134 ErrorHandler m_handler;
135 void *m_userData;
136 XErrorHandler m_oldXHandler;
137 ErrorLock *m_next;
138 static ErrorLock *s_top;
139 };
140
141private:
142 class PropertyNotifyPredicateInfo
143 {
144 public:
145 Window m_window;
146 Atom m_property;
147 };
148
149 static Bool propertyNotifyPredicate(Display *, XEvent *xevent, XPointer arg);
150};
static int void FAR * data
Definition ArchNetworkWinsock.cpp:35
static int type
Definition ArchNetworkWinsock.cpp:45
static int(PASCAL FAR *bind_winsock)(SOCKET s
ErrorLock & operator=(ErrorLock const &)=delete
~ErrorLock()
Definition XWindowsUtil.cpp:283
ErrorLock & operator=(ErrorLock &&)=delete
ErrorLock(ErrorLock &&)=delete
ErrorLock(ErrorLock const &)=delete
void(*)(Display *, XErrorEvent *, void *userData) ErrorHandler
Error handler type.
Definition XWindowsUtil.h:100
ErrorLock(Display *)
Definition XWindowsUtil.cpp:268
X11 utility functions.
Definition XWindowsUtil.h:17
static void appendTimeData(std::string &data, Time time)
Append an Time to property data.
Definition XWindowsUtil.cpp:248
static void convertAtomProperty(std::string &data)
Prepare a property of atoms for use.
Definition XWindowsUtil.cpp:224
static std::string atomsToString(Display *display, const Atom *atom, uint32_t num)
Convert several Atoms to a string.
Definition XWindowsUtil.cpp:200
static void appendAtomData(std::string &data, Atom atom)
Append an Atom to property data.
Definition XWindowsUtil.cpp:238
static bool getWindowProperty(Display *, Window window, Atom property, std::string *data, Atom *type, int32_t *format, bool deleteProperty)
Get property.
Definition XWindowsUtil.cpp:19
static std::string atomToString(Display *, Atom atom)
Convert Atom to its string.
Definition XWindowsUtil.cpp:182
static bool setWindowProperty(Display *, Window window, Atom property, const void *data, uint32_t size, Atom type, int32_t format)
Set property.
Definition XWindowsUtil.cpp:107
static void replaceAtomData(std::string &data, uint32_t index, Atom atom)
Replace an Atom in property data.
Definition XWindowsUtil.cpp:243
static Time getCurrentTime(Display *, Window)
Get X server time.
Definition XWindowsUtil.cpp:148