diff --git a/README.md b/README.md index 180381a..d669d83 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,58 @@ # ninwa -node input watcher \ No newline at end of file +node input watcher + +## requirements + +- node.js +- yarn +- evtest + +## setup + +- clone the project +`git clone https://git.velvettear.de/velvettear/ninwa.git` + +- enter the project directory +`cd ninwa` + +- installed required modules +`yarn install` + +- modify `config.json` according to your needs + +- execute ninwa +`node ninwa.js` + +## systemd + +**for security reasons it is highly recommended to not run ninwa with root permissions!** + +- create a new system user +`useradd -r -s /usr/bin/nologin ninwa` + +- symlink the provided systemd-service file and modify it according to your needs +`ln -s /path/to/ninwa/ninwa.service /etc/systemd/system/ninwa.service` + +- reload systemd-services +`systemctl daemon-reload` + +- enable and start the ninwa as a systemd-service +`systemctl enable --now ninwa` + +## configuration + +configuration is done entirely within the file `config.json`. + +### log: [*object*] +- level: [*string*] verbosity of the log; either `debug`, `info`, `warning` or `error` +- timestamp: [*string*] format string for the timestamp; review [moment.js](https://momentjs.com/docs/#/displaying/format/) for further information + +### watchers: [*object-array*] +- device: [*string*] name of or path to an input device; ninwa automatically tries to locate the device in `/dev/input` and `/dev/input/by-id/` if only a name is given +- keys: [*object-array*] + - key: [*string*] name of the key + - type: [*string*] type of the key event; either `keyup`, `keydown` or `keyhold` + - delay: [*number*] time in milliseconds until the key will be registered again (mostly useful for keyhold-events) + - command: [*string*] command to execute on key press + - args: [*string-array*] arguments to pass to the executed command \ No newline at end of file