GithubHelp home page GithubHelp logo

node-uinput's Introduction

node-uinput

Linux uinput nodejs wrapper

Installation

npm install uinput

Example

Say hello BYE

var uinput = require('uinput');

var setup_options = {
    EV_KEY : [ uinput.KEY_H, uinput.KEY_E, uinput.KEY_L, uinput.KEY_O,
               uinput.KEY_CAPSLOCK, uinput.KEY_B, uinput.KEY_Y, uinput.KEY_SPACE ]
}

uinput.setup(setup_options, function(err, stream) {
    if (err) {
        throw(err);
    }

    var create_options = {
        name : 'myuinput',
        id : {
            bustype : uinput.BUS_VIRTUAL,
            vendor : 0x1,
            product : 0x1,
            version : 1
        }
    };

    uinput.create(stream, create_options, function(err) {
        if (err) {
            throw(err);
        }

        setTimeout(function() {
            uinput.key_event(stream, uinput.KEY_H, function(err) {
                if (err) {
                    throw(err);
                }

                uinput.key_event(stream, uinput.KEY_E, function(err) {
                    if (err) {
                        throw(err);
                    }

                    uinput.key_event(stream, uinput.KEY_L, function(err) {
                        if (err) {
                            throw(err);
                        }

                        uinput.key_event(stream, uinput.KEY_L, function(err) {
                            if (err) {
                                throw(err);
                            }

                            uinput.key_event(stream, uinput.KEY_O, function(err) {
                                if (err) {
                                    throw(err);
                                }
                            });
                        });
                    });
                });
            });
        }, 2000);

        setTimeout(function() {
            var keys = [ uinput.KEY_SPACE, uinput.KEY_CAPSLOCK, uinput.KEY_B, uinput.KEY_Y, uinput.KEY_E ];
            uinput.emit_combo(stream, keys, function(err) {
                if (err) throw(err);
            });
        }, 3000);
    });
});

API

uinput.setup(options, callback)

  • options Object
    • event_type where event_type can be EV_KEY, EV_ABS, EV_REL, etc. and it's an Array with the different events we want the uinput device to handle
  • callback Function called when the setup operation ends
    • error Error
    • stream WritableStream to the uinput device.

It configures the uinput device we are about to create.

uinput.create(stream, options, callback)

  • stream WritableStream
  • options Object. See uinput_user_dev definition in linux/uinput.h
    • name String with the name of the device
    • id Object
      • bustype Number
      • vendor Number
      • product Number
      • version Number
    • ff_effects_max Number
    • absmax Array of Numbers of size: uinput.ABS_CNT
    • absmin Array of Numbers of size: uinput.ABS_CNT
    • absfuzz Array of Numbers of size: uinput.ABS_CNT
    • absflat Array of Numbers of size: uinput.ABS_CNT
  • callback Function called when the creation operation ends
    • error Error

It creates the uinput device.

send_event(stream, type, code, value, callback)

  • stream WritableStream
  • type Number
  • code Number
  • value Number
  • callback Function

It sends an event to the uinput device.

key_event(stream, code, callback)

  • stream WritableStream
  • code Number
  • callback Function

Wrapper over send_event to simulate key presses and mouse clicks.

emit_combo(stream, code, callback)

  • stream WritableStream
  • code Array with any combination of keys
  • callback Function

It sends an event to the uinput device with the combination keys generated.

node-uinput's People

Contributors

davidjandara avatar msabwat avatar santigimeno avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.