node input watcher
| .vscode | ||
| libs | ||
| .gitignore | ||
| config.json | ||
| ninwa.js | ||
| ninwa.service | ||
| package.json | ||
| README.md | ||
ninwa
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.jsonaccording 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,warningorerror - timestamp: [string] format string for the timestamp; review moment.js for further information
socket: [object]
- location: [string] path to the socket file; defaults to
/tmp/ninwa.sock
watchers: [object-array]
- device: [string] name of or path to an input device; ninwa automatically tries to locate the device in
/dev/inputand/dev/input/by-id/if only a name is given - restart: [boolean] restart watcher on close
- grep: [string] pre-filter evtest's output with grep
- keys: [object-array]
- key: [string] name of the key
- type: [string] type of the key event; either
keyup,keydownorkeyhold - 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; variables
{{ key }}and{{ type }}used in args will be replaced