Skip to content

Commit 47ff4a2

Browse files
committed
fixes keyTap not releasing. allows for multiple keypresses or keytaps in a row by adding sleep function. adds missing keys
1 parent 527f9d9 commit 47ff4a2

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

src/robotjs.cc

+34-5
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,18 @@ int CheckKeyCodes(char* k, MMKeyCode *key) {
175175
{
176176
*key = K_ALT;
177177
}
178-
else if (strcmp(k, "cmd") == 0)
178+
else if (strcmp(k, "command") == 0)
179179
{
180180
*key = K_META;
181181
}
182+
else if (strcmp(k, "control") == 0)
183+
{
184+
*key = K_CONTROL;
185+
}
186+
else if (strcmp(k, "shift") == 0)
187+
{
188+
*key = K_SHIFT;
189+
}
182190
else if (strcmp(k, "backspace") == 0)
183191
{
184192
*key = K_BACKSPACE;
@@ -248,18 +256,39 @@ int CheckKeyFlags(char* f, MMKeyFlags* flags) {
248256
if (!flags) return -1;
249257

250258
if (strcmp(f, "alt") == 0) {
251-
*flags = K_ALT;
259+
*flags = MOD_ALT;
252260
}
253-
else if(strcmp(f, "cmd") == 0) {
261+
else if(strcmp(f, "command") == 0) {
254262
*flags = MOD_META;
255263
}
264+
else if(strcmp(f, "control") == 0) {
265+
*flags = MOD_CONTROL;
266+
}
267+
else if(strcmp(f, "shift") == 0) {
268+
*flags = MOD_SHIFT;
269+
}
270+
else if(strcmp(f, "none") == 0) {
271+
*flags = MOD_NONE;
272+
}
256273
else {
257274
return -2;
258275
}
259276

260277
return 0;
261278
}
262279

280+
int mssleep(unsigned long millisecond)
281+
{
282+
struct timespec req;
283+
time_t sec=(int)(millisecond/1000);
284+
millisecond=millisecond-(sec*1000);
285+
req.tv_sec=sec;
286+
req.tv_nsec=millisecond*1000000L;
287+
while(nanosleep(&req,&req)==-1)
288+
continue;
289+
return 1;
290+
}
291+
263292
NAN_METHOD(keyTap)
264293
{
265294
NanScope();
@@ -308,6 +337,7 @@ NAN_METHOD(keyTap)
308337
break;
309338
default:
310339
tapKeyCode(key, flags);
340+
mssleep(10);
311341
}
312342

313343
NanReturnValue(NanNew("1"));
@@ -337,8 +367,6 @@ NAN_METHOD(keyToggle)
337367
break;
338368
case 2:
339369
f = NULL;
340-
case 1:
341-
f = NULL;
342370
break;
343371
default:
344372
return NanThrowError("Invalid number of arguments.");
@@ -366,6 +394,7 @@ NAN_METHOD(keyToggle)
366394
break;
367395
default:
368396
toggleKeyCode(key, down, flags);
397+
mssleep(10);
369398
}
370399

371400
NanReturnValue(NanNew("1"));

0 commit comments

Comments
 (0)