Skip to content

Commit e553a4b

Browse files
committed
Merge branch 'release/v2.1.2'
2 parents 54af52a + 2312c1c commit e553a4b

17 files changed

+88
-70
lines changed

.github/workflows/ci.yaml

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ jobs:
2222
node-version: ${{matrix.node}}
2323
- name: Configure Linux environment
2424
if: ${{matrix.os == 'ubuntu-latest'}}
25-
run: |
26-
sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev g++-4.8 gcc-4.8
27-
export CXX=g++-4.8 && $CXX --version
25+
run: sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev build-essential
2826
- name: Install
2927
run: npm run patch && npm i
3028
- name: Build

.github/workflows/snapshot_release.yaml

+2-6
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ jobs:
1919
node-version: ${{matrix.node}}
2020
- name: Configure Linux environment
2121
if: ${{matrix.os == 'ubuntu-latest'}}
22-
run: |
23-
sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev g++-4.8 gcc-4.8
24-
export CXX=g++-4.8 && $CXX --version
22+
run: sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev build-essential
2523
- name: Install
2624
run: npm run patch && npm i
2725
- name: Build
@@ -53,9 +51,7 @@ jobs:
5351
node-version: 14
5452
- name: Configure Linux environment
5553
if: ${{matrix.os == 'ubuntu-latest'}}
56-
run: |
57-
sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev g++-4.8 gcc-4.8
58-
export CXX=g++-4.8 && $CXX --version
54+
run: sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev build-essential
5955
- name: Install
6056
run: npm run patch && npm i
6157
- name: Publish snapshot release

.github/workflows/tagged_release.yaml

+2-6
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ jobs:
2020
node-version: ${{matrix.node}}
2121
- name: Configure Linux environment
2222
if: ${{matrix.os == 'ubuntu-latest'}}
23-
run: |
24-
sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev g++-4.8 gcc-4.8
25-
export CXX=g++-4.8 && $CXX --version
23+
run: sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev build-essential
2624
- name: Install
2725
run: npm run patch && npm i
2826
- name: Build
@@ -54,9 +52,7 @@ jobs:
5452
node-version: 14
5553
- name: Configure Linux environment
5654
if: ${{matrix.os == 'ubuntu-latest'}}
57-
run: |
58-
sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev g++-4.8 gcc-4.8
59-
export CXX=g++-4.8 && $CXX --version
55+
run: sudo apt-get install -y cmake libx11-dev zlib1g-dev libpng-dev libxtst-dev build-essential
6056
- name: Install
6157
run: npm run patch && npm i
6258
- name: Publish tagged release

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## 2.1.2
6+
7+
- Maintenance: Upgrade CI [(#56)](https://github.com/nut-tree/libnut/issues/56)
8+
- Enhancement: Fix compiler warnings [(#58)](https://github.com/nut-tree/libnut/issues/58)
9+
- Enhancement: Windows: Support for HDPI displays [(#59)](https://github.com/nut-tree/libnut/issues/59)
10+
- Enhancement: macOS: Support for M1 chips [(PR #50)](https://github.com/nut-tree/libnut/pull/50)
11+
- Enhancement: Remove static keyboard delay [(PR #64)](https://github.com/nut-tree/libnut/pull/64)
512
## 2.1.1
613

714
- Enhancement: Snapshot releases [(#4)](https://github.com/nut-tree/libnut/issues/4)

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
3737
set(CMAKE_CXX_FLAGS "-Wall -Wparentheses -Winline -Wbad-function-cast -Wdisabled-optimization -Wextra")
3838
else()
3939
message(STATUS "MSVC compiler in use")
40-
set(CMAKE_CXX_FLAGS "/Wall /W4")
40+
set(CMAKE_CXX_FLAGS "/Wall /W4 /EHsc")
4141
endif()
4242

4343
add_compile_definitions(NAPI_CPP_EXCEPTIONS)

README.md

-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
## Disclaimer
2-
3-
This project if based on [octaImage/robotjs](https://github.com/octalmage/robotjs) and is used internally at [nut-tree/nut.js](https://github.com/nut-tree/nut.js).
4-
51
## Building
62

73
Please ensure you have the required dependencies before installing:

package-lock.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"name": "libnut",
3-
"version": "2.1.1",
3+
"version": "2.1.2",
44
"description": "libnut is an N-API module for desktop automation with node",
55
"main": "index.js",
66
"typings": "index.d.ts",
77
"scripts": {
88
"clean": "cmake-js clean",
99
"patch": "node ./patch-packagename.js",
1010
"build:debug": "cmake-js rebuild --debug",
11-
"build:release": "cmake-js rebuild",
11+
"build:release": "cmake-js rebuild --CDCMAKE_OSX_ARCHITECTURES=\"arm64;x86_64\"",
1212
"prepublishOnly": "npm run build:release",
1313
"publish:next": "npm publish --tag next"
1414
},

src/MMBitmap.c

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ void destroyMMBitmap(MMBitmapRef bitmap)
3636

3737
void destroyMMBitmapBuffer(char * bitmapBuffer, void * hint)
3838
{
39+
(void)hint;
3940
if (bitmapBuffer != NULL)
4041
{
4142
free(bitmapBuffer);

src/MMBitmap.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ MMBitmapRef copyMMBitmapFromPortion(MMBitmapRef source, MMRect rect);
4747
#define MMBitmapPointInBounds(image, p) ((p).x < (image)->width && \
4848
(p).y < (image)->height)
4949
#define MMBitmapRectInBounds(image, r) \
50-
(((r).origin.x + (r).size.width <= (image)->width) && \
51-
((r).origin.y + (r).size.height <= (image)->height))
50+
(((r).origin.x + (r).size.width <= (int64_t)(image)->width) && \
51+
((r).origin.y + (r).size.height <= (int64_t)(image)->height))
5252

5353
#define MMBitmapGetBounds(image) MMRectMake(0, 0, image->width, image->height)
5454

src/buffer_finalizer.h

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class BufferFinalizer
44
public:
55
void operator()(Napi::Env env, T *data)
66
{
7+
(void)env;
78
if (data != nullptr)
89
{
910
delete data;

src/deadbeef_rand.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ uint32_t deadbeef_generate_seed(void)
2323
{
2424
uint32_t t = (uint32_t)time(NULL);
2525
uint32_t c = (uint32_t)clock();
26-
return (t << 24) ^ (c << 11) ^ t ^ (size_t) &c;
26+
return (uint32_t)((t << 24) ^ (c << 11) ^ t ^ (size_t) &c);
2727
}

src/main.cc

+19-17
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,6 @@ Napi::Number _keyTap(const Napi::CallbackInfo &info)
483483
break;
484484
default:
485485
tapKeyCode(key, flags);
486-
microsleep(keyboardDelay);
487486
}
488487

489488
return Napi::Number::New(env, 1);
@@ -496,7 +495,7 @@ Napi::Number _keyToggle(const Napi::CallbackInfo &info)
496495
MMKeyFlags flags = MOD_NONE;
497496
MMKeyCode key;
498497

499-
bool down;
498+
bool down = false;
500499

501500
//Get arguments from JavaScript.
502501
std::string keyName = info[0].As<Napi::String>();
@@ -552,7 +551,6 @@ Napi::Number _keyToggle(const Napi::CallbackInfo &info)
552551
break;
553552
default:
554553
toggleKeyCode(key, down, flags);
555-
microsleep(keyboardDelay);
556554
}
557555

558556
return Napi::Number::New(env, 1);
@@ -576,7 +574,7 @@ Napi::Number _typeStringDelayed(const Napi::CallbackInfo &info)
576574
std::string stringToType = info[0].As<Napi::String>();
577575
size_t cpm = info[1].As<Napi::Number>().Int32Value();
578576

579-
typeStringDelayed(stringToType.c_str(), cpm);
577+
typeStringDelayed(stringToType.c_str(), (unsigned int)cpm);
580578

581579
return Napi::Number::New(env, 1);
582580
}
@@ -613,8 +611,8 @@ Napi::Object _getScreenSize(const Napi::CallbackInfo &info)
613611

614612
//Create our return object.
615613
Napi::Object obj = Napi::Object::New(env);
616-
obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, displaySize.width));
617-
obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, displaySize.height));
614+
obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, (double)displaySize.width));
615+
obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, (double)displaySize.height));
618616

619617
return obj;
620618
}
@@ -660,7 +658,7 @@ Napi::Number _highlight(const Napi::CallbackInfo &info)
660658
y = info[1].As<Napi::Number>().Int32Value();
661659
width = info[2].As<Napi::Number>().Int32Value();
662660
height = info[3].As<Napi::Number>().Int32Value();
663-
duration = info[4].As<Napi::Number>().Int64Value();
661+
duration = (int)info[4].As<Napi::Number>().Int64Value();
664662
opacity = info[5].As<Napi::Number>().FloatValue();
665663

666664
highlight(x, y, width, height, duration, opacity);
@@ -673,7 +671,7 @@ Napi::Number _getActiveWindow(const Napi::CallbackInfo &info) {
673671
Napi::Env env = info.Env();
674672

675673
WindowHandle windowHandle = getActiveWindow();
676-
return Napi::Number::New(env, windowHandle);
674+
return Napi::Number::New(env, (double)windowHandle);
677675
}
678676

679677
Napi::Array _getWindows(const Napi::CallbackInfo &info) {
@@ -683,7 +681,7 @@ Napi::Array _getWindows(const Napi::CallbackInfo &info) {
683681
auto arr = Napi::Array::New(env, windowHandles.size());
684682

685683
for (size_t idx = 0; idx < windowHandles.size(); ++idx) {
686-
arr[idx] = windowHandles[idx];
684+
arr[(uint32_t)idx] = windowHandles[idx];
687685
}
688686

689687
return arr;
@@ -696,10 +694,10 @@ Napi::Object _getWindowRect(const Napi::CallbackInfo &info) {
696694
MMRect windowRect = getWindowRect(windowHandle);
697695

698696
Napi::Object obj = Napi::Object::New(env);
699-
obj.Set(Napi::String::New(env, "x"), Napi::Number::New(env, windowRect.origin.x));
700-
obj.Set(Napi::String::New(env, "y"), Napi::Number::New(env, windowRect.origin.y));
701-
obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, windowRect.size.width));
702-
obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, windowRect.size.height));
697+
obj.Set(Napi::String::New(env, "x"), Napi::Number::New(env, (double)windowRect.origin.x));
698+
obj.Set(Napi::String::New(env, "y"), Napi::Number::New(env, (double)windowRect.origin.y));
699+
obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, (double)windowRect.size.width));
700+
obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, (double)windowRect.size.height));
703701

704702
return obj;
705703
}
@@ -758,14 +756,18 @@ Napi::Object _captureScreen(const Napi::CallbackInfo &info)
758756
}
759757

760758
MMBitmapRef bitmap = copyMMBitmapFromDisplayInRect(MMRectMake(x, y, w, h));
759+
760+
if (bitmap == NULL) {
761+
throw Napi::Error::New(env, "Error: Failed to capture screen");
762+
}
761763

762-
uint32_t bufferSize = bitmap->bytewidth * bitmap->height;
764+
uint32_t bufferSize = (uint32_t)(bitmap->bytewidth * bitmap->height);
763765
Napi::Buffer<char> buffer = Napi::Buffer<char>::New(env, (char *)bitmap->imageBuffer, bufferSize, finalizer);
764766

765767
Napi::Object obj = Napi::Object::New(env);
766-
obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, bitmap->width));
767-
obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, bitmap->height));
768-
obj.Set(Napi::String::New(env, "byteWidth"), Napi::Number::New(env, bitmap->bytewidth));
768+
obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, (double)bitmap->width));
769+
obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, (double)bitmap->height));
770+
obj.Set(Napi::String::New(env, "byteWidth"), Napi::Number::New(env, (double)bitmap->bytewidth));
769771
obj.Set(Napi::String::New(env, "bitsPerPixel"), Napi::Number::New(env, bitmap->bitsPerPixel));
770772
obj.Set(Napi::String::New(env, "bytesPerPixel"), Napi::Number::New(env, bitmap->bytesPerPixel));
771773
obj.Set(Napi::String::New(env, "image"), buffer);

src/win32/keypress.c

+5-3
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void win32KeyEvent(int key, MMKeyFlags flags)
6161

6262
INPUT keyboardInput;
6363
keyboardInput.type = INPUT_KEYBOARD;
64-
keyboardInput.ki.wScan = scan;
64+
keyboardInput.ki.wScan = (WORD)scan;
6565
keyboardInput.ki.dwFlags = KEYEVENTF_SCANCODE | flags;
6666
keyboardInput.ki.time = 0;
6767
SendInput(1, &keyboardInput, sizeof(keyboardInput));
@@ -167,9 +167,11 @@ void typeString(const char *str)
167167
c3 = (*str++) & 0x3F;
168168
n = ((c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3;
169169
}
170+
else
171+
continue; /* ignore invalid UTF-8 */
170172

171-
toggleUniKey(n, true);
172-
toggleUniKey(n, false);
173+
toggleUniKey((char)n, true);
174+
toggleUniKey((char)n, false);
173175
}
174176
}
175177

src/win32/mouse.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@
2626
*/
2727
void moveMouse(MMPoint point)
2828
{
29-
SetCursorPos (point.x, point.y);
29+
SetCursorPos ((int)point.x, (int)point.y);
3030
}
3131

3232
void dragMouse(MMPoint point, const MMMouseButton button)
3333
{
34+
(void)button;
3435
moveMouse(point);
3536
}
3637

0 commit comments

Comments
 (0)