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/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.49",
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
- info.GetReturnValue().Set(New<String>(XKeysymToString(keysym)).ToLocalChecked());
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
@@ -18,6 +18,7 @@ private:
18
18
  static NAN_METHOD(Constructor);
19
19
  static NAN_METHOD(KeycodeToKeysym);
20
20
  static NAN_METHOD(KeysymToString);
21
+ static NAN_METHOD(GetActiveKeysToKeycodeList);
21
22
  };
22
23
 
23
24
  #endif // NODE_XDOTOOL_KEYBOARD_H_
@@ -3,8 +3,6 @@
3
3
 
4
4
  #include "XService.h"
5
5
 
6
- #include <boost/optional.hpp>
7
-
8
6
  class XScreenshooter : public XService {
9
7
  public:
10
8
  XScreenshooter(Display*, Window);
@@ -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
- if(!value->Int32Value(Nan::GetCurrentContext()).To(out_n)) {
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
+ }
@@ -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
@@ -6,7 +6,3 @@ using v8::Isolate;
6
6
  using Nan::New;
7
7
 
8
8
  XService::XService(Display* display): display(display) {}
9
-
10
- Display* XService::GetDisplay() {
11
- return display;
12
- }
package/src/XService.h CHANGED
@@ -6,10 +6,9 @@
6
6
 
7
7
  class XService : public Nan::ObjectWrap, public ResourceManager {
8
8
  public:
9
+ Display* display;
9
10
  explicit XService(Display*);
10
- Display* GetDisplay();
11
11
  protected:
12
- Display* display;
13
12
  };
14
13
 
15
14
  #endif // NODE_XDOTOOL_X_SERVICE_H_
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]->Int32Value(GetCurrentContext()).To(&screen)) {
48
- std::cerr << "Empty value for screen" << std::endl;
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
- auto delay = info[2]->Int32Value(Nan::GetCurrentContext()).ToChecked();
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
@@ -1,5 +1,4 @@
1
1
  #include <nan.h>
2
- #include <nan_object_wrap.h>
3
2
 
4
3
  #include "Screenshooter.h"
5
4
  #include "Keyboard.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
@@ -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->GetDisplay()), screenshooter(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->GetDisplay()), keyboard(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
+ }
@@ -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