xdotool 1.0.49 → 1.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +9 -6
- package/build/cmake-js/CMakeFiles/3.22.1/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/build/cmake-js/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/cmake-build-debug/CMakeFiles/3.21.1/CompilerIdC/CMakeCCompilerId.c +807 -0
- package/cmake-build-debug/CMakeFiles/3.21.1/CompilerIdCXX/CMakeCXXCompilerId.cpp +795 -0
- package/out/xdo.d.ts +4 -0
- package/out/xdo.d.ts.map +1 -1
- package/out/xdo.js +6 -0
- package/package.json +1 -2
- package/src/Keyboard.cpp +12 -2
- package/src/Keyboard.h +1 -0
- package/src/Screenshooter.h +0 -2
- package/src/TypeConverter.cpp +10 -3
- package/src/TypeConverter.h +1 -0
- package/src/XService.cpp +0 -4
- package/src/XService.h +1 -2
- package/src/XdoTool.cpp +38 -12
- package/src/XdoTool.h +2 -0
- package/src/main.cpp +0 -1
- package/src/tasks/GetActiveKeysToKeycodeList.cpp +25 -0
- package/src/tasks/GetActiveKeysToKeycodeList.h +19 -0
- package/src/tasks/GetFocusedWindow.cpp +20 -0
- package/src/tasks/GetFocusedWindow.h +17 -0
- package/src/tasks/GetImage.cpp +1 -1
- package/src/tasks/QueryKeymap.cpp +1 -1
- package/src/tasks/Sync.cpp +17 -0
- package/src/tasks/Sync.h +19 -0
package/out/xdo.d.ts
CHANGED
|
@@ -57,6 +57,7 @@ export interface XdoTool {
|
|
|
57
57
|
enterText: (win: string, text: string, delay: number, callback: XdoCallback<void>) => void;
|
|
58
58
|
searchWindows: (search: IXdoSearch, callback: XdoCallback<string[]>) => void;
|
|
59
59
|
getViewportDimensions: (screen: number, callback: XdoCallback<IXdoViewportDimensions>) => void;
|
|
60
|
+
getFocusedWindow: (callback: XdoCallback<XWindow>) => void;
|
|
60
61
|
/**
|
|
61
62
|
* Get the PID owning a window. Not all applications support this.
|
|
62
63
|
* It looks at the _NET_WM_PID property of the window.
|
|
@@ -64,6 +65,7 @@ export interface XdoTool {
|
|
|
64
65
|
* @return the process id or 0 if no pid found.
|
|
65
66
|
*/
|
|
66
67
|
getWindowPID: (window: XWindow, callback: XdoCallback<number>) => void;
|
|
68
|
+
sync: (callback: XdoCallback<void>) => void;
|
|
67
69
|
activateWindow: (window: XWindow, callback: XdoCallback<void>) => void;
|
|
68
70
|
windowHasProperty: (window: XWindow, property: string, callback: XdoCallback<boolean>) => void;
|
|
69
71
|
}
|
|
@@ -87,6 +89,8 @@ export default class XdoToolAsync extends AsyncWrapper {
|
|
|
87
89
|
private readonly xdo;
|
|
88
90
|
constructor(xdo: XdoTool);
|
|
89
91
|
windowHasProperty(window: XWindow, property: string): Promise<boolean>;
|
|
92
|
+
getFocusedWindow(): Promise<XWindow>;
|
|
93
|
+
sync(): Promise<void>;
|
|
90
94
|
enterText(window: XWindow, text: string, delay: number): Promise<void>;
|
|
91
95
|
sendKeysequence(window: XWindow, sequence: string, delay: number): Promise<void>;
|
|
92
96
|
activateWindow(window: XWindow): Promise<void>;
|
package/out/xdo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xdo.d.ts","sourceRoot":"","sources":["../typescript/xdo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"xdo.d.ts","sourceRoot":"","sources":["../typescript/xdo.ts"],"names":[],"mappings":"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"}
|
package/out/xdo.js
CHANGED
|
@@ -17,6 +17,12 @@ class XdoToolAsync extends AsyncWrapper_1.default {
|
|
|
17
17
|
windowHasProperty(window, property) {
|
|
18
18
|
return new Promise((resolve, reject) => (this.xdo.windowHasProperty(window, property, this.resolveOrReject(resolve, reject))));
|
|
19
19
|
}
|
|
20
|
+
getFocusedWindow() {
|
|
21
|
+
return new Promise((resolve, reject) => (this.xdo.getFocusedWindow(this.resolveOrReject(resolve, reject))));
|
|
22
|
+
}
|
|
23
|
+
sync() {
|
|
24
|
+
return new Promise((resolve, reject) => (this.xdo.sync(this.resolveOrReject(resolve, reject))));
|
|
25
|
+
}
|
|
20
26
|
enterText(window, text, delay) {
|
|
21
27
|
return new Promise((resolve, reject) => (this.xdo.enterText(window, text, delay, this.resolveOrReject(resolve, reject))));
|
|
22
28
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xdotool",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.54",
|
|
4
4
|
"description": "C++ bindings for Node.js to handle X11 using the full power of libxdo.",
|
|
5
5
|
"main": "./out/index.js",
|
|
6
6
|
"typings": "./out/index.d.ts",
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
"@types/node": "^12.12.12",
|
|
29
29
|
"sarg": "^4.0.2",
|
|
30
30
|
"ts-node": "^8.5.2",
|
|
31
|
-
"typedoc": "^0.15.3",
|
|
32
31
|
"typescript": "4.3.x"
|
|
33
32
|
},
|
|
34
33
|
"dependencies": {
|
package/src/Keyboard.cpp
CHANGED
|
@@ -32,7 +32,8 @@ void XKeyboard::Init(Local<Object>exports) {
|
|
|
32
32
|
{ "constructor", Constructor },
|
|
33
33
|
{ "queryKeymap", QueryKeymap },
|
|
34
34
|
{ "keycodeToKeysym", KeycodeToKeysym },
|
|
35
|
-
{ "keysymToString", KeysymToString }
|
|
35
|
+
{ "keysymToString", KeysymToString },
|
|
36
|
+
{ "getActiveKeysToKeycodeList", GetActiveKeysToKeycodeList }
|
|
36
37
|
};
|
|
37
38
|
Set(
|
|
38
39
|
exports,
|
|
@@ -62,7 +63,12 @@ NAN_METHOD(XKeyboard::KeysymToString) {
|
|
|
62
63
|
Nan::ThrowError("First argument must be a valid keysym");
|
|
63
64
|
return;
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
+
char* result = XKeysymToString(keysym);
|
|
67
|
+
if(!result) {
|
|
68
|
+
Nan::ThrowError(std::string("Keysym " + std::to_string(keysym) + " does not exist").c_str());
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
info.GetReturnValue().Set(New<String>(result).ToLocalChecked());
|
|
66
72
|
}
|
|
67
73
|
|
|
68
74
|
NAN_METHOD(XKeyboard::Constructor) {
|
|
@@ -100,3 +106,7 @@ Local<Value> XKeyboard::GetBuffer() {
|
|
|
100
106
|
}
|
|
101
107
|
return Nan::New(arrayBuffer);
|
|
102
108
|
}
|
|
109
|
+
|
|
110
|
+
NAN_METHOD(XKeyboard::GetActiveKeysToKeycodeList) {
|
|
111
|
+
|
|
112
|
+
}
|
package/src/Keyboard.h
CHANGED
package/src/Screenshooter.h
CHANGED
package/src/TypeConverter.cpp
CHANGED
|
@@ -9,6 +9,7 @@ using v8::Local;
|
|
|
9
9
|
using v8::Value;
|
|
10
10
|
using v8::Object;
|
|
11
11
|
using v8::Int32;
|
|
12
|
+
using v8::Number;
|
|
12
13
|
using v8::Uint32;
|
|
13
14
|
using v8::Isolate;
|
|
14
15
|
|
|
@@ -75,9 +76,7 @@ bool TypeConverter::GetInt32(Local<Object> obj, const char* prop, int32_t* out_n
|
|
|
75
76
|
if(value->IsUndefined() || !value->IsInt32()) {
|
|
76
77
|
return false;
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
std::cerr << "Received empty value for property name: " << prop << std::endl;
|
|
80
|
-
}
|
|
79
|
+
*out_n = Nan::To<Int32>(value).ToLocalChecked()->Value();
|
|
81
80
|
return true;
|
|
82
81
|
}
|
|
83
82
|
|
|
@@ -106,3 +105,11 @@ bool TypeConverter::GetUint32(Local<Value> val, uint32_t& out) {
|
|
|
106
105
|
out = To<Uint32>(val).ToLocalChecked()->Value();
|
|
107
106
|
return true;
|
|
108
107
|
}
|
|
108
|
+
|
|
109
|
+
bool TypeConverter::GetDouble(v8::Local<v8::Value> val, double& out) {
|
|
110
|
+
if(!val->IsNumber()) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
out = Nan::To<v8::Number>(val).ToLocalChecked()->Value();
|
|
114
|
+
return true;
|
|
115
|
+
}
|
package/src/TypeConverter.h
CHANGED
|
@@ -11,6 +11,7 @@ public:
|
|
|
11
11
|
static bool GetString(v8::Local<v8::Object>, const char*, char**);
|
|
12
12
|
static bool GetInt32(v8::Local<v8::Object>, const char*, int32_t*);
|
|
13
13
|
static bool GetInt32(v8::Local<v8::Value>, int32_t&);
|
|
14
|
+
static bool GetDouble(v8::Local<v8::Value>, double&);
|
|
14
15
|
static bool GetUint32(v8::Local<v8::Value> val, uint32_t&);
|
|
15
16
|
static bool GetBool(v8::Local<v8::Object>, const char*, bool*);
|
|
16
17
|
static bool GetWindow(v8::Local<v8::Value> value, Window&);
|
package/src/XService.cpp
CHANGED
package/src/XService.h
CHANGED
package/src/XdoTool.cpp
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
#include "ClassCreator.h"
|
|
12
12
|
#include "TypeConverter.h"
|
|
13
13
|
#include "XdoToolTaskWorker.h"
|
|
14
|
+
#include "tasks/Sync.h"
|
|
15
|
+
#include "tasks/GetFocusedWindow.h"
|
|
14
16
|
|
|
15
17
|
#include <iostream>
|
|
16
18
|
|
|
@@ -38,14 +40,10 @@ XdoTool::~XdoTool() {
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
NAN_METHOD(XdoTool::GetViewportDimensions) {
|
|
41
|
-
if(!info[0]->IsNumber()) {
|
|
42
|
-
Nan::ThrowError("First argument must be a valid number");
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
43
|
int screen;
|
|
47
|
-
if(!info[0]
|
|
48
|
-
|
|
44
|
+
if(!TypeConverter::GetInt32(info[0], screen)){
|
|
45
|
+
Nan::ThrowError("First argument must be a valid integer");
|
|
46
|
+
return;
|
|
49
47
|
}
|
|
50
48
|
XdoTool* tool;
|
|
51
49
|
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
@@ -58,22 +56,26 @@ NAN_METHOD(XdoTool::GetViewportDimensions) {
|
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
NAN_METHOD(XdoTool::SendKeysequence) {
|
|
61
|
-
XdoTool* tool;
|
|
59
|
+
XdoTool* tool = nullptr;
|
|
60
|
+
char* keySequence = nullptr;
|
|
61
|
+
Window window;
|
|
62
|
+
int32_t delay;
|
|
62
63
|
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
63
64
|
Nan::ThrowError("Method called in invalid context");
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
|
-
Window window;
|
|
67
67
|
if(!TypeConverter::GetWindow(info[0],window)) {
|
|
68
68
|
Nan::ThrowError("First argument must be a valid window identifier");
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
|
-
char* keySequence;
|
|
72
71
|
if(!TypeConverter::GetString(info[1], &keySequence)) {
|
|
73
72
|
Nan::ThrowError("Second parameter must be a valid string");
|
|
74
73
|
return;
|
|
75
74
|
}
|
|
76
|
-
|
|
75
|
+
if(!TypeConverter::GetInt32(info[2], delay)) {
|
|
76
|
+
Nan::ThrowError("Third parameter must be a valid integer");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
77
79
|
auto callback = new Callback(To<Function>(info[3]).ToLocalChecked());
|
|
78
80
|
auto task = new XdoToolTask_SendKeysequence(tool->xdo, window, keySequence, delay);
|
|
79
81
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
@@ -183,6 +185,17 @@ NAN_METHOD(XdoTool::EnterText) {
|
|
|
183
185
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
184
186
|
}
|
|
185
187
|
|
|
188
|
+
NAN_METHOD(XdoTool::GetFocusedWindow) {
|
|
189
|
+
XdoTool* tool;
|
|
190
|
+
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
191
|
+
Nan::ThrowError("Method called in invalid context");
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
auto task = new XdoToolTask_GetFocusedWindow(tool->xdo);
|
|
195
|
+
auto callback = new Callback(To<Function>(info[0]).ToLocalChecked());
|
|
196
|
+
AsyncQueueWorker(new XdoToolTaskWorker(callback,task));
|
|
197
|
+
}
|
|
198
|
+
|
|
186
199
|
void XdoTool::Init(Local<Object> exports) {
|
|
187
200
|
std::map<std::string, FunctionCallback> methods {
|
|
188
201
|
{ "constructor", Constructor },
|
|
@@ -190,7 +203,9 @@ void XdoTool::Init(Local<Object> exports) {
|
|
|
190
203
|
{ "searchWindows", SearchWindows },
|
|
191
204
|
{ "getWindowPID", GetWindowPID },
|
|
192
205
|
{ "moveMouse", MoveMouse },
|
|
206
|
+
{ "getFocusedWindow", GetFocusedWindow },
|
|
193
207
|
{ "enterText", EnterText },
|
|
208
|
+
{ "sync", Sync },
|
|
194
209
|
{ "sendKeysequence", SendKeysequence },
|
|
195
210
|
{ "windowHasProperty", WindowHasProperty },
|
|
196
211
|
{ "activateWindow", ActivateWindow },
|
|
@@ -304,4 +319,15 @@ NAN_METHOD(XdoTool::GetMouseLocation) {
|
|
|
304
319
|
auto task = new XdoToolTask_GetMouseLocation(tool->xdo);
|
|
305
320
|
auto callback = new Nan::Callback(Nan::To<Function>(info[0]).ToLocalChecked());
|
|
306
321
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
307
|
-
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
NAN_METHOD(XdoTool::Sync) {
|
|
325
|
+
XdoTool* tool;
|
|
326
|
+
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
327
|
+
Nan::ThrowError("Method called in invalid context");
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
auto task = new XdoToolTask_Sync(tool->xdo->xdpy);
|
|
331
|
+
auto callback = new Nan::Callback(Nan::To<Function>(info[0]).ToLocalChecked());
|
|
332
|
+
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
333
|
+
}
|
package/src/XdoTool.h
CHANGED
|
@@ -15,12 +15,14 @@ private:
|
|
|
15
15
|
static NAN_METHOD(Constructor);
|
|
16
16
|
static NAN_METHOD(SearchWindows);
|
|
17
17
|
static NAN_METHOD(GetWindowPID);
|
|
18
|
+
static NAN_METHOD(GetFocusedWindow);
|
|
18
19
|
static NAN_METHOD(GetMouseLocation);
|
|
19
20
|
static NAN_METHOD(SendKeysequence);
|
|
20
21
|
static NAN_METHOD(GetViewportDimensions);
|
|
21
22
|
static NAN_METHOD(MoveMouse);
|
|
22
23
|
static NAN_METHOD(ActivateWindow);
|
|
23
24
|
static NAN_METHOD(EnterText);
|
|
25
|
+
static NAN_METHOD(Sync);
|
|
24
26
|
static NAN_METHOD(WindowHasProperty);
|
|
25
27
|
};
|
|
26
28
|
|
package/src/main.cpp
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by victor on 7/22/21.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#include "GetActiveKeysToKeycodeList.h"
|
|
6
|
+
|
|
7
|
+
using v8::Local;
|
|
8
|
+
using v8::Value;
|
|
9
|
+
|
|
10
|
+
void GetActiveKeysToKeycodeList::Execute() {
|
|
11
|
+
if(xdo_get_active_keys_to_keycode_list(xdo,&keys,&key_count) !=XDO_SUCCESS){
|
|
12
|
+
SetFailure("Failed to get active keys to keycode list");
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
GetActiveKeysToKeycodeList::GetActiveKeysToKeycodeList(XKeyboard* kbd):
|
|
17
|
+
XTask(kbd->display),
|
|
18
|
+
kbd(kbd)
|
|
19
|
+
{
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
Local<Value> GetActiveKeysToKeycodeList::GetResult() {
|
|
24
|
+
return Nan::Null();
|
|
25
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#ifndef NODE_XDOTOOL_GETACTIVEKEYSTOKEYCODELIST_H
|
|
2
|
+
#define NODE_XDOTOOL_GETACTIVEKEYSTOKEYCODELIST_H
|
|
3
|
+
|
|
4
|
+
#include "../XTask.h"
|
|
5
|
+
#include "../Keyboard.h"
|
|
6
|
+
|
|
7
|
+
class GetActiveKeysToKeycodeList : public XTask {
|
|
8
|
+
public:
|
|
9
|
+
explicit GetActiveKeysToKeycodeList(XKeyboard*);
|
|
10
|
+
void Execute() override;
|
|
11
|
+
v8::Local<v8::Value> GetResult() override;
|
|
12
|
+
private:
|
|
13
|
+
XKeyboard* kbd;
|
|
14
|
+
xdo_t* xdo;
|
|
15
|
+
charcodemap_t* keys;
|
|
16
|
+
int key_count;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
#endif //NODE_XDOTOOL_GETACTIVEKEYSTOKEYCODELIST_H
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#include "GetFocusedWindow.h"
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
XdoToolTask_GetFocusedWindow::XdoToolTask_GetFocusedWindow(xdo_t* xdo):
|
|
5
|
+
XdoToolTask(xdo),
|
|
6
|
+
result(0)
|
|
7
|
+
{}
|
|
8
|
+
|
|
9
|
+
void XdoToolTask_GetFocusedWindow::Execute() {
|
|
10
|
+
if(xdo_get_focused_window_sane(xdo,&result) != XDO_SUCCESS) {
|
|
11
|
+
SetFailure("Failed to get focused window");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
v8::Local<v8::Value> XdoToolTask_GetFocusedWindow::GetResult() {
|
|
16
|
+
return Nan::New<v8::Number>(result);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#ifndef NODE_XDOTOOL_GETFOCUSEDWINDOW_H
|
|
2
|
+
#define NODE_XDOTOOL_GETFOCUSEDWINDOW_H
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#include "../XdoToolTask.h"
|
|
6
|
+
|
|
7
|
+
class XdoToolTask_GetFocusedWindow : public XdoToolTask {
|
|
8
|
+
public:
|
|
9
|
+
explicit XdoToolTask_GetFocusedWindow(xdo_t*);
|
|
10
|
+
void Execute() override;
|
|
11
|
+
v8::Local<v8::Value> GetResult() override;
|
|
12
|
+
private:
|
|
13
|
+
Window result;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
#endif //NODE_XDOTOOL_GETFOCUSEDWINDOW_H
|
package/src/tasks/GetImage.cpp
CHANGED
|
@@ -4,7 +4,7 @@ using v8::Local;
|
|
|
4
4
|
using v8::Value;
|
|
5
5
|
using v8::ArrayBuffer;
|
|
6
6
|
|
|
7
|
-
XdoToolTask_GetImage::XdoToolTask_GetImage(XScreenshooter* screenshooter): XTask(screenshooter->
|
|
7
|
+
XdoToolTask_GetImage::XdoToolTask_GetImage(XScreenshooter* screenshooter): XTask(screenshooter->display), screenshooter(screenshooter) {
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
void XdoToolTask_GetImage::Execute() {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
using v8::Local;
|
|
6
6
|
using v8::Value;
|
|
7
7
|
|
|
8
|
-
XTask_QueryKeymap::XTask_QueryKeymap(XKeyboard* keyboard): XTask(keyboard->
|
|
8
|
+
XTask_QueryKeymap::XTask_QueryKeymap(XKeyboard* keyboard): XTask(keyboard->display), keyboard(keyboard) {
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
void XTask_QueryKeymap::Execute() {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by victor on 7/22/21.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#include "Sync.h"
|
|
6
|
+
|
|
7
|
+
void XdoToolTask_Sync::Execute() {
|
|
8
|
+
XSync(display,0);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
v8::Local<v8::Value> XdoToolTask_Sync::GetResult() {
|
|
12
|
+
return Nan::Undefined();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
XdoToolTask_Sync::XdoToolTask_Sync(Display* display) : XTask(display){
|
|
16
|
+
|
|
17
|
+
}
|
package/src/tasks/Sync.h
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by victor on 7/22/21.
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#ifndef NODE_XDOTOOL_SYNC_H
|
|
6
|
+
#define NODE_XDOTOOL_SYNC_H
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#include "../XTask.h"
|
|
10
|
+
|
|
11
|
+
class XdoToolTask_Sync : public XTask {
|
|
12
|
+
public:
|
|
13
|
+
explicit XdoToolTask_Sync(Display*);
|
|
14
|
+
void Execute() override;
|
|
15
|
+
v8::Local<v8::Value> GetResult() override;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#endif //NODE_XDOTOOL_SYNC_H
|