xdotool 1.0.50 → 1.0.55
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/.history/src/XdoTool_20220115190446.cpp +350 -0
- package/.history/src/XdoTool_20220115190504.cpp +350 -0
- package/.history/src/XdoTool_20220115190619.cpp +350 -0
- package/.history/src/tasks/ActivateWindow_20210721132815.h +15 -0
- package/.history/src/tasks/ActivateWindow_20210721133108.cpp +23 -0
- package/.history/src/tasks/ActivateWindow_20220115190504.cpp +23 -0
- package/.history/src/tasks/ActivateWindow_20220115190504.h +15 -0
- package/.history/src/tasks/ActivateWindow_20220115190527.h +19 -0
- package/.history/src/tasks/ActivateWindow_20220115190528.cpp +23 -0
- package/.history/src/tasks/GetViewportDimensions_20210721132156.h +17 -0
- package/.history/src/tasks/GetViewportDimensions_20210721132157.cpp +26 -0
- package/.history/src/tasks/GetViewportDimensions_20220115190619.cpp +26 -0
- package/.history/src/tasks/GetViewportDimensions_20220115190622.cpp +26 -0
- package/.history/src/tasks/GetViewportDimensions_20220115190623.h +21 -0
- 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/Keyboard.js +1 -1
- package/out/Screenshooter.d.ts +2 -2
- package/out/Screenshooter.d.ts.map +1 -1
- package/out/Screenshooter.js +3 -3
- package/out/xdo.d.ts +22 -12
- package/out/xdo.d.ts.map +1 -1
- package/out/xdo.js +12 -3
- package/package.json +2 -3
- package/src/Keyboard.cpp +6 -1
- 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 +48 -8
- package/src/XdoTool.h +3 -0
- package/src/main.cpp +0 -1
- package/src/tasks/ActivateWindow.cpp +3 -3
- package/src/tasks/ActivateWindow.h +6 -2
- 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/GetViewportDimensions.cpp +3 -3
- package/src/tasks/GetViewportDimensions.h +6 -2
- package/src/tasks/GetWindowSize.cpp +19 -0
- package/src/tasks/GetWindowSize.h +22 -0
- package/src/tasks/QueryKeymap.cpp +1 -1
- package/src/tasks/Sync.cpp +17 -0
- package/src/tasks/Sync.h +19 -0
package/out/Keyboard.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const AsyncWrapper_1 = tslib_1.__importDefault(require("./AsyncWrapper"));
|
|
4
|
+
const AsyncWrapper_1 = (0, tslib_1.__importDefault)(require("./AsyncWrapper"));
|
|
5
5
|
const xdo_1 = require("./xdo");
|
|
6
6
|
class KeyboardAsync extends AsyncWrapper_1.default {
|
|
7
7
|
constructor(xdo) {
|
package/out/Screenshooter.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import AsyncWrapper from "./AsyncWrapper";
|
|
2
|
-
import { XdoCallback, XdoTool,
|
|
2
|
+
import { XdoCallback, XdoTool, XID } from "./xdo";
|
|
3
3
|
export interface XScreenshooter {
|
|
4
4
|
getImage: (callback: XdoCallback<ArrayBuffer>) => void;
|
|
5
5
|
}
|
|
6
6
|
export default class ScreenshooterAsync extends AsyncWrapper {
|
|
7
7
|
#private;
|
|
8
|
-
constructor(xdo: XdoTool, window?:
|
|
8
|
+
constructor(xdo: XdoTool, window?: XID);
|
|
9
9
|
getImage(): Promise<ArrayBuffer>;
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=Screenshooter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screenshooter.d.ts","sourceRoot":"","sources":["../typescript/Screenshooter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEH,WAAW,EACX,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"Screenshooter.d.ts","sourceRoot":"","sources":["../typescript/Screenshooter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEH,WAAW,EACX,OAAO,EACP,GAAG,EACN,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CAC1D;AAED,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,YAAY;;gBAErC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG;IAItC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;CAO1C"}
|
package/out/Screenshooter.js
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
var _ScreenshooterAsync_ss;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const AsyncWrapper_1 = tslib_1.__importDefault(require("./AsyncWrapper"));
|
|
5
|
+
const AsyncWrapper_1 = (0, tslib_1.__importDefault)(require("./AsyncWrapper"));
|
|
6
6
|
const xdo_1 = require("./xdo");
|
|
7
7
|
class ScreenshooterAsync extends AsyncWrapper_1.default {
|
|
8
8
|
constructor(xdo, window) {
|
|
9
9
|
super();
|
|
10
10
|
_ScreenshooterAsync_ss.set(this, void 0);
|
|
11
|
-
tslib_1.__classPrivateFieldSet(this, _ScreenshooterAsync_ss, new xdo_1.Screenshooter(xdo, window), "f");
|
|
11
|
+
(0, tslib_1.__classPrivateFieldSet)(this, _ScreenshooterAsync_ss, new xdo_1.Screenshooter(xdo, window), "f");
|
|
12
12
|
}
|
|
13
13
|
getImage() {
|
|
14
|
-
return new Promise((resolve, reject) => (tslib_1.__classPrivateFieldGet(this, _ScreenshooterAsync_ss, "f").getImage(this.resolveOrReject(resolve, reject))));
|
|
14
|
+
return new Promise((resolve, reject) => ((0, tslib_1.__classPrivateFieldGet)(this, _ScreenshooterAsync_ss, "f").getImage(this.resolveOrReject(resolve, reject))));
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
exports.default = ScreenshooterAsync;
|
package/out/xdo.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import AsyncWrapper from "./AsyncWrapper";
|
|
2
2
|
import { XScreenshooter } from "./Screenshooter";
|
|
3
|
-
export declare type
|
|
3
|
+
export declare type XID = unknown;
|
|
4
4
|
export interface IXdoViewportDimensions {
|
|
5
5
|
width: number;
|
|
6
6
|
height: number;
|
|
@@ -50,22 +50,29 @@ export interface IMoveMouseOptions {
|
|
|
50
50
|
screen_num?: number;
|
|
51
51
|
}
|
|
52
52
|
export declare type XdoCallback<T> = (err: Error | undefined, value: T) => void;
|
|
53
|
+
export interface IWindowSize {
|
|
54
|
+
width: number;
|
|
55
|
+
height: number;
|
|
56
|
+
}
|
|
53
57
|
export interface XdoTool {
|
|
54
58
|
getMouseLocation: (callback: XdoCallback<IMouseLocation>) => void;
|
|
55
|
-
sendKeysequence: (window:
|
|
59
|
+
sendKeysequence: (window: XID, sequence: string, delay: number, callback: XdoCallback<void>) => void;
|
|
60
|
+
getWindowSize: (window: XID, callback: XdoCallback<IWindowSize>) => void;
|
|
56
61
|
moveMouse: (opts: IMoveMouseOptions, callback: XdoCallback<void>) => void;
|
|
57
|
-
enterText: (win:
|
|
62
|
+
enterText: (win: XID, text: string, delay: number, callback: XdoCallback<void>) => void;
|
|
58
63
|
searchWindows: (search: IXdoSearch, callback: XdoCallback<string[]>) => void;
|
|
59
64
|
getViewportDimensions: (screen: number, callback: XdoCallback<IXdoViewportDimensions>) => void;
|
|
65
|
+
getFocusedWindow: (callback: XdoCallback<XID>) => void;
|
|
60
66
|
/**
|
|
61
67
|
* Get the PID owning a window. Not all applications support this.
|
|
62
68
|
* It looks at the _NET_WM_PID property of the window.
|
|
63
69
|
*
|
|
64
70
|
* @return the process id or 0 if no pid found.
|
|
65
71
|
*/
|
|
66
|
-
getWindowPID: (window:
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
getWindowPID: (window: XID, callback: XdoCallback<number>) => void;
|
|
73
|
+
sync: (callback: XdoCallback<void>) => void;
|
|
74
|
+
activateWindow: (window: XID, callback: XdoCallback<void>) => void;
|
|
75
|
+
windowHasProperty: (window: XID, property: string, callback: XdoCallback<boolean>) => void;
|
|
69
76
|
}
|
|
70
77
|
export interface XKeyboard {
|
|
71
78
|
queryKeymap: (callback: XdoCallback<ArrayBuffer>) => void;
|
|
@@ -77,7 +84,7 @@ export interface IXdoTool {
|
|
|
77
84
|
new (): XdoTool;
|
|
78
85
|
};
|
|
79
86
|
Screenshooter: {
|
|
80
|
-
new (xdo: XdoTool, window?:
|
|
87
|
+
new (xdo: XdoTool, window?: XID): XScreenshooter;
|
|
81
88
|
};
|
|
82
89
|
Keyboard: {
|
|
83
90
|
new (xdo: XdoTool): XKeyboard;
|
|
@@ -86,16 +93,19 @@ export interface IXdoTool {
|
|
|
86
93
|
export default class XdoToolAsync extends AsyncWrapper {
|
|
87
94
|
private readonly xdo;
|
|
88
95
|
constructor(xdo: XdoTool);
|
|
89
|
-
windowHasProperty(window:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
windowHasProperty(window: XID, property: string): Promise<boolean>;
|
|
97
|
+
getFocusedWindow(): Promise<XID>;
|
|
98
|
+
sync(): Promise<void>;
|
|
99
|
+
enterText(window: XID, text: string, delay: number): Promise<void>;
|
|
100
|
+
sendKeysequence(window: XID, sequence: string, delay: number): Promise<void>;
|
|
101
|
+
activateWindow(window: XID): Promise<void>;
|
|
93
102
|
moveMouse(opts: IMoveMouseOptions): Promise<void>;
|
|
94
103
|
getWindowPID(window: string): Promise<number>;
|
|
95
104
|
getViewportDimensions(screen: number): Promise<IXdoViewportDimensions>;
|
|
105
|
+
getWindowSize(window: XID): Promise<IWindowSize>;
|
|
96
106
|
getMouseLocation(): Promise<IMouseLocation>;
|
|
97
107
|
searchWindows(search: IXdoSearch): Promise<string[]>;
|
|
98
108
|
}
|
|
99
|
-
declare const XdoTool: new () => XdoTool, Screenshooter: new (xdo: XdoTool, window?:
|
|
109
|
+
declare const XdoTool: new () => XdoTool, Screenshooter: new (xdo: XdoTool, window?: XID) => XScreenshooter, Keyboard: new (xdo: XdoTool) => XKeyboard;
|
|
100
110
|
export { XdoTool as XdoToolBindings, Screenshooter, Keyboard };
|
|
101
111
|
//# sourceMappingURL=xdo.d.ts.map
|
package/out/xdo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xdo.d.ts","sourceRoot":"","sources":["../typescript/xdo.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,oBAAY,
|
|
1
|
+
{"version":3,"file":"xdo.d.ts","sourceRoot":"","sources":["../typescript/xdo.ts"],"names":[],"mappings":"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"}
|
package/out/xdo.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Keyboard = exports.Screenshooter = exports.XdoToolBindings = exports.IXdoSearchRequire = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const bindings_1 = tslib_1.__importDefault(require("bindings"));
|
|
6
|
-
const AsyncWrapper_1 = tslib_1.__importDefault(require("./AsyncWrapper"));
|
|
5
|
+
const bindings_1 = (0, tslib_1.__importDefault)(require("bindings"));
|
|
6
|
+
const AsyncWrapper_1 = (0, tslib_1.__importDefault)(require("./AsyncWrapper"));
|
|
7
7
|
var IXdoSearchRequire;
|
|
8
8
|
(function (IXdoSearchRequire) {
|
|
9
9
|
IXdoSearchRequire[IXdoSearchRequire["SearchAny"] = 0] = "SearchAny";
|
|
@@ -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
|
}
|
|
@@ -35,6 +41,9 @@ class XdoToolAsync extends AsyncWrapper_1.default {
|
|
|
35
41
|
getViewportDimensions(screen) {
|
|
36
42
|
return new Promise((resolve, reject) => (this.xdo.getViewportDimensions(screen, this.resolveOrReject(resolve, reject))));
|
|
37
43
|
}
|
|
44
|
+
getWindowSize(window) {
|
|
45
|
+
return new Promise((resolve, reject) => (this.xdo.getWindowSize(window, this.resolveOrReject(resolve, reject))));
|
|
46
|
+
}
|
|
38
47
|
getMouseLocation() {
|
|
39
48
|
return new Promise((resolve, reject) => (this.xdo.getMouseLocation(this.resolveOrReject(resolve, reject))));
|
|
40
49
|
}
|
|
@@ -43,7 +52,7 @@ class XdoToolAsync extends AsyncWrapper_1.default {
|
|
|
43
52
|
}
|
|
44
53
|
}
|
|
45
54
|
exports.default = XdoToolAsync;
|
|
46
|
-
const { XdoTool, Screenshooter, Keyboard } = bindings_1.default({
|
|
55
|
+
const { XdoTool, Screenshooter, Keyboard } = (0, bindings_1.default)({
|
|
47
56
|
try: [
|
|
48
57
|
['module_root', 'build', 'cmake-js', 'Debug', 'bindings'],
|
|
49
58
|
['module_root', 'build', 'cmake-js', 'Release', 'bindings']
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xdotool",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.55",
|
|
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,8 +28,7 @@
|
|
|
28
28
|
"@types/node": "^12.12.12",
|
|
29
29
|
"sarg": "^4.0.2",
|
|
30
30
|
"ts-node": "^8.5.2",
|
|
31
|
-
"
|
|
32
|
-
"typescript": "4.3.x"
|
|
31
|
+
"typescript": "4.5.x"
|
|
33
32
|
},
|
|
34
33
|
"dependencies": {
|
|
35
34
|
"bindings": "^1.5.0",
|
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,
|
|
@@ -105,3 +106,7 @@ Local<Value> XKeyboard::GetBuffer() {
|
|
|
105
106
|
}
|
|
106
107
|
return Nan::New(arrayBuffer);
|
|
107
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,9 @@
|
|
|
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"
|
|
16
|
+
#include "tasks/GetWindowSize.h"
|
|
14
17
|
|
|
15
18
|
#include <iostream>
|
|
16
19
|
|
|
@@ -38,21 +41,33 @@ XdoTool::~XdoTool() {
|
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
NAN_METHOD(XdoTool::GetViewportDimensions) {
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
int screen;
|
|
45
|
+
if(!TypeConverter::GetInt32(info[0], screen)){
|
|
46
|
+
Nan::ThrowError("First argument must be a valid integer");
|
|
43
47
|
return;
|
|
44
48
|
}
|
|
49
|
+
XdoTool* tool;
|
|
50
|
+
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
51
|
+
Nan::ThrowError("Method called in invalid context");
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
auto task = new tasks::GetViewportDimensions(tool->xdo, screen);
|
|
55
|
+
auto callback = new Callback(To<Function>(info[1]).ToLocalChecked());
|
|
56
|
+
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
57
|
+
}
|
|
45
58
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
59
|
+
NAN_METHOD(XdoTool::GetWindowSize) {
|
|
60
|
+
XID window;
|
|
61
|
+
if(!TypeConverter::GetWindow(info[0], window)){
|
|
62
|
+
Nan::ThrowError("First argument must be a valid integer");
|
|
63
|
+
return;
|
|
49
64
|
}
|
|
50
65
|
XdoTool* tool;
|
|
51
66
|
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
52
67
|
Nan::ThrowError("Method called in invalid context");
|
|
53
68
|
return;
|
|
54
69
|
}
|
|
55
|
-
auto task = new
|
|
70
|
+
auto task = new tasks::GetWindowSize(tool->xdo, window);
|
|
56
71
|
auto callback = new Callback(To<Function>(info[1]).ToLocalChecked());
|
|
57
72
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
58
73
|
}
|
|
@@ -156,7 +171,7 @@ NAN_METHOD(XdoTool::ActivateWindow) {
|
|
|
156
171
|
Nan::ThrowError("Method called in invalid context");
|
|
157
172
|
return;
|
|
158
173
|
}
|
|
159
|
-
auto task = new
|
|
174
|
+
auto task = new tasks::ActivateWindow(tool->xdo, window);
|
|
160
175
|
auto callback = new Callback(To<Function>(info[1]).ToLocalChecked());
|
|
161
176
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
162
177
|
}
|
|
@@ -187,6 +202,17 @@ NAN_METHOD(XdoTool::EnterText) {
|
|
|
187
202
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
188
203
|
}
|
|
189
204
|
|
|
205
|
+
NAN_METHOD(XdoTool::GetFocusedWindow) {
|
|
206
|
+
XdoTool* tool;
|
|
207
|
+
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
208
|
+
Nan::ThrowError("Method called in invalid context");
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
auto task = new XdoToolTask_GetFocusedWindow(tool->xdo);
|
|
212
|
+
auto callback = new Callback(To<Function>(info[0]).ToLocalChecked());
|
|
213
|
+
AsyncQueueWorker(new XdoToolTaskWorker(callback,task));
|
|
214
|
+
}
|
|
215
|
+
|
|
190
216
|
void XdoTool::Init(Local<Object> exports) {
|
|
191
217
|
std::map<std::string, FunctionCallback> methods {
|
|
192
218
|
{ "constructor", Constructor },
|
|
@@ -194,7 +220,10 @@ void XdoTool::Init(Local<Object> exports) {
|
|
|
194
220
|
{ "searchWindows", SearchWindows },
|
|
195
221
|
{ "getWindowPID", GetWindowPID },
|
|
196
222
|
{ "moveMouse", MoveMouse },
|
|
223
|
+
{ "getFocusedWindow", GetFocusedWindow },
|
|
197
224
|
{ "enterText", EnterText },
|
|
225
|
+
{ "sync", Sync },
|
|
226
|
+
{ "getWindowSize", GetWindowSize },
|
|
198
227
|
{ "sendKeysequence", SendKeysequence },
|
|
199
228
|
{ "windowHasProperty", WindowHasProperty },
|
|
200
229
|
{ "activateWindow", ActivateWindow },
|
|
@@ -308,4 +337,15 @@ NAN_METHOD(XdoTool::GetMouseLocation) {
|
|
|
308
337
|
auto task = new XdoToolTask_GetMouseLocation(tool->xdo);
|
|
309
338
|
auto callback = new Nan::Callback(Nan::To<Function>(info[0]).ToLocalChecked());
|
|
310
339
|
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
311
|
-
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
NAN_METHOD(XdoTool::Sync) {
|
|
343
|
+
XdoTool* tool;
|
|
344
|
+
if(!TypeConverter::Unwrap(info.This(),&tool)) {
|
|
345
|
+
Nan::ThrowError("Method called in invalid context");
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
auto task = new XdoToolTask_Sync(tool->xdo->xdpy);
|
|
349
|
+
auto callback = new Nan::Callback(Nan::To<Function>(info[0]).ToLocalChecked());
|
|
350
|
+
AsyncQueueWorker(new XdoToolTaskWorker(callback, task));
|
|
351
|
+
}
|
package/src/XdoTool.h
CHANGED
|
@@ -15,12 +15,15 @@ private:
|
|
|
15
15
|
static NAN_METHOD(Constructor);
|
|
16
16
|
static NAN_METHOD(SearchWindows);
|
|
17
17
|
static NAN_METHOD(GetWindowPID);
|
|
18
|
+
static NAN_METHOD(GetWindowSize);
|
|
19
|
+
static NAN_METHOD(GetFocusedWindow);
|
|
18
20
|
static NAN_METHOD(GetMouseLocation);
|
|
19
21
|
static NAN_METHOD(SendKeysequence);
|
|
20
22
|
static NAN_METHOD(GetViewportDimensions);
|
|
21
23
|
static NAN_METHOD(MoveMouse);
|
|
22
24
|
static NAN_METHOD(ActivateWindow);
|
|
23
25
|
static NAN_METHOD(EnterText);
|
|
26
|
+
static NAN_METHOD(Sync);
|
|
24
27
|
static NAN_METHOD(WindowHasProperty);
|
|
25
28
|
};
|
|
26
29
|
|
package/src/main.cpp
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
using v8::Local;
|
|
4
4
|
using v8::Value;
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
tasks::ActivateWindow::ActivateWindow(
|
|
7
7
|
xdo_t* xdo,
|
|
8
8
|
Window window
|
|
9
9
|
): XdoToolTask(xdo), window(window) {}
|
|
10
10
|
|
|
11
|
-
void
|
|
11
|
+
void tasks::ActivateWindow::Execute() {
|
|
12
12
|
if(xdo_activate_window(xdo, window) != XDO_SUCCESS) {
|
|
13
13
|
SetFailure("Failed to activate window");
|
|
14
14
|
return;
|
|
@@ -18,6 +18,6 @@ void XdoToolTask_ActivateWindow::Execute() {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
Local<Value>
|
|
21
|
+
Local<Value> tasks::ActivateWindow::GetResult() {
|
|
22
22
|
return Nan::Undefined();
|
|
23
23
|
}
|
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
#include "../XdoToolTask.h"
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
namespace tasks {
|
|
7
|
+
|
|
8
|
+
class ActivateWindow : public XdoToolTask {
|
|
7
9
|
public:
|
|
8
|
-
|
|
10
|
+
ActivateWindow(xdo_t*, Window);
|
|
9
11
|
void Execute() override;
|
|
10
12
|
v8::Local<v8::Value> GetResult() override;
|
|
11
13
|
private:
|
|
12
14
|
Window window;
|
|
13
15
|
};
|
|
14
16
|
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
#endif // NODE_XDOTOOL_ACTIVATE_WINDOW_TASK_H_
|
|
@@ -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() {
|
|
@@ -8,17 +8,17 @@ using v8::Local;
|
|
|
8
8
|
using v8::Value;
|
|
9
9
|
using v8::Object;
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
tasks::GetViewportDimensions::GetViewportDimensions(xdo_t* xdo, int screen): XdoToolTask(xdo), screen(screen) {
|
|
12
12
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
void
|
|
15
|
+
void tasks::GetViewportDimensions::Execute() {
|
|
16
16
|
if(xdo_get_viewport_dimensions(xdo, &width, &height, screen) != XDO_SUCCESS) {
|
|
17
17
|
SetFailure("Failed to get viewport dimensions");
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
Local<Value>
|
|
21
|
+
Local<Value> tasks::GetViewportDimensions::GetResult() {
|
|
22
22
|
Local<Object> obj = New<Object>();
|
|
23
23
|
Set(obj, New<String>("width").ToLocalChecked(), New<Number>(width));
|
|
24
24
|
Set(obj, New<String>("height").ToLocalChecked(), New<Number>(height));
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
#include "../XdoToolTask.h"
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
namespace tasks {
|
|
7
|
+
|
|
8
|
+
class GetViewportDimensions : public XdoToolTask {
|
|
7
9
|
public:
|
|
8
|
-
|
|
10
|
+
GetViewportDimensions(xdo_t*, int);
|
|
9
11
|
void Execute() override;
|
|
10
12
|
v8::Local<v8::Value> GetResult() override;
|
|
11
13
|
private:
|
|
@@ -14,4 +16,6 @@ private:
|
|
|
14
16
|
unsigned int height;
|
|
15
17
|
};
|
|
16
18
|
|
|
19
|
+
}
|
|
20
|
+
|
|
17
21
|
#endif // NODE_XDOTOOL_GET_VIEWPORT_DIMENSIONS_H_
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#include "GetWindowSize.h"
|
|
2
|
+
|
|
3
|
+
tasks::GetWindowSize::GetWindowSize(xdo_t* xdo, XID id): XdoToolTask(xdo),id(id) {
|
|
4
|
+
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
void tasks::GetWindowSize::Execute() {
|
|
8
|
+
status = xdo_get_window_size(xdo,id,&width,&height);
|
|
9
|
+
if(status != XDO_SUCCESS){
|
|
10
|
+
SetFailure("Failed to get window size");
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
v8::Local<v8::Value> tasks::GetWindowSize::GetResult() {
|
|
15
|
+
auto obj = Nan::New<v8::Object>();
|
|
16
|
+
Nan::Set(obj,Nan::New("width").ToLocalChecked(),Nan::New<v8::Uint32>(width));
|
|
17
|
+
Nan::Set(obj,Nan::New("height").ToLocalChecked(),Nan::New<v8::Uint32>(height));
|
|
18
|
+
return obj;
|
|
19
|
+
}
|