Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rubinders/nodehotkey
This is an autohotkey like library built for NodeJS.
https://github.com/rubinders/nodehotkey
autohotkey automation clipboard hotkey hotstring keyboard macro macros mouse nodehotkey robot robot-js
Last synced: 14 days ago
JSON representation
This is an autohotkey like library built for NodeJS.
- Host: GitHub
- URL: https://github.com/rubinders/nodehotkey
- Owner: RubinderS
- License: mit
- Created: 2019-02-27T09:46:02.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-06T19:31:29.000Z (almost 2 years ago)
- Last Synced: 2024-10-12T23:45:30.378Z (about 1 month ago)
- Topics: autohotkey, automation, clipboard, hotkey, hotstring, keyboard, macro, macros, mouse, nodehotkey, robot, robot-js
- Language: TypeScript
- Homepage:
- Size: 148 KB
- Stars: 11
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
![GitHub](https://img.shields.io/github/license/rubinder25/NodeHotKey.svg?style=flat-square)
![GitHub package.json version](https://img.shields.io/github/package-json/v/Rubinder25/NodeHotKey.svg?style=flat-square)# NodeHotKey
https://github.com/Rubinder25/NodeHotKey
https://www.npmjs.com/package/nodehotkey
This is an autohotkey like library for NodeJs## Features
1. Make global Macros and assign hotkeys to trigger them
2. Make global hotstrings to expand text as you type it
3. Catch global keyboard/mouse events in your code
4. Operate keyboard, mouse and clipboard from code
# Usage
## Install
`npm install nodehotkey --save`
follow this page to install dependencies for robot-js on your platform: http://getrobot.net/docs/usage.html## import
`import { NodeHotKey } from 'nodehotkey';`
## Initialize the object
```javascript
let nhk = new NodeHotKey({});
```
Currently, we are passing an empty object. A Macro Config object can be passed to the constructor in order to create AutoHotkey like macros.
Please refer to the next section for this.## Macro
Macros are pre-defined steps that can be triggered by either pressing hotkeys or typing hotstrings. These can be defined as JavaScript objects.
### A sample macro looks like this
```javascript
let macroConfig = {
'Name of the Macro': {
hotkeys: [kc._CONTROL, kc._E],
steps: [
{ type: 'This Macro can be triggered by pressing CTRL+E\n' },
{ type: "Wait for 3 secs then press ',' " },
{ wait: 3000 },
{ click: kc._COMMA },
{ func: tools => {
tools.type('Run JavaScript functions by pressing hotkeys');
}
}
]
}
}
```
we can then pass this macroConfig to constructor of NodeHotKey like this:-
```javascript
let nhk = new NodeHotKey(macroConfig);
nhk.startListening();
```For more sample Marco configs check out **[MacroSamples_NodeHotKey](https://github.com/Rubinder25/MacroSamples_NodeHotKey)**.
## Events
```javascript
nhk.on(nhk.eventTypes.keyPressed, (eventData) => {
console.log('KeyPressed ', eventData.keyCode);
});
```
## Functions
following are the utility functions present in the package:-
```javascript
import { pressKey, releaseKey, click,
type, paste, wait, setClipboardText,
getClipboardText, matchCurrentWindowTitle } from 'nodehotkey';
```
## Putting it all together```javascript
import { NodeHotKey, pressKey,releaseKey, KEYCODES as kc } from 'nodehotkey';// press key
pressKey(kc._A);
releaseKey(kc._A);let macroConfig = {
'Name of the Macro': {
hotkeys: [kc._CONTROL, kc._E],
steps: [
{ type: 'This Macro can be triggered by pressing CTRL+E\n' },
{ type: "Wait for 3 secs then press ',' " },
{ wait: 3000 },
{ click: kc._COMMA },
{ func: tools => {
tools.type('Run JavaScript functions by pressing hotkeys');
}
}
]
}
}let nhk = new NodeHotKey(macroConfig);
nhk.startListening();
nhk.on(nhk.eventTypes.keyPressed, (eventData) => {
console.log('KeyPressed ', eventData.keyCode);
});// nhk.stopListening(); // terminates the program
```
## Sample Macros
https://github.com/Rubinder25/MacroSamples_NodeHotKey> email: [email protected]
## License
MIT**Note:** currently Node V10 is not supported