GithubHelp home page GithubHelp logo

numpaar's Introduction

Numpaar: NUMber Pad As A Remote

Numpaar is a program that turns your (possibly wireless) number pad into a remote that controls your computer. You can think of it as just another keyboard shortcut program, but it's more powerful and extensible than traditional ones.

This is still a Beta version... Interfaces may be changed in the future.

FEATURES

  • Runs on Linux with X Window System
    • (Tested under Ubuntu Linux)
  • Bind any key on a number pad to any script written in Perl.
  • Automatically change key bindings according to the active window.
  • Stateful key bindings.
  • Object-oriented key binding customization (based on Perl modules).

PREREQUISITES

  • xdotool and libxdo (version 2)
  • libx11 (Xlib)
  • Perl environment
    • Class::Inspector module (provided as libclass-inspector-perl package for Ubuntu)
    • Gtk2 module
    • Pango module

INSTALL

  1. Place the source tree somewhere, say /opt/numpaar/

  2. Build

     $ cd /opt/numpaar
     $ make
    
  3. Set PATH and PERL5LIB to /opt/numpaar and /opt/numpaar/lib, respectively. For example,

     $ echo 'export PATH="/opt/numpaar:$PATH"' >> ~/.profile
     $ echo 'export PERL5LIB="/opt/numpaar/lib:$PERL5LIB"' >> ~/.profile
    
  4. Create configuration file '.numpaar' in your home directory.

     $ cp /opt/numpaar/dot.numpaar.sample ~/.numpaar
    
  5. Edit ~/.numpaar as you like.

HOW TO USE

Simply execute numpaar.

$ numpaar

If you already run numpaar, it is killed.

You can find more detailed document at Numpaar Wiki.

TODO

  • Internationalization.
  • Write document on how to configure Numpaar.
  • Automate installation process.

AUTHOR

Toshio Ito

numpaar's People

Contributors

debug-ito avatar

Stargazers

codechef avatar  avatar

Watchers

 avatar James Cloos avatar Chaz Kasanicky avatar

numpaar's Issues

Add heap interface to Engine

Engine is currently nothing but a blessed hash reference, so it is possible for any user-defined subclass to store its data in this hash.
However, it would be a lot nicer to provide dedicated "heap" object for data storage no matter how the implementation of Engine will be changed in the future.

Engine::getWindowTItle is misleading

The method name "Engine::getWindowTitle" is VERY misleading. Make it getWindowDescription or something.

Also in other part of source code "window title" is often used for what is called "window description" in the tutorial.
This should be fixed as well.

Numpaar::Visgrep should be an independent object

Currently Numpaar::Visgrep is used as a super class of Engines, but it's not necessary at all.
It should be an independent object, and Engines that want to use it should construct and store it in the Engine's heap.

interface Numpaar::Visgrep::clickFromBase is ugly

Taking into account that there will be more comMouse* interfaces, it is better to provide "toAbsolute" or something,
which converts the Visgrep coordinates into the absolute screen coordinates.

Suggestion on Connection::comMouse** interfaces

In numpaar_x protocol, "mouseclick" operation comes with button number argument.
How about button number 0 meaning moving the pointer WITHOUT clicking?
This makes it easy to implement comMouseMove API in Connection object.

Also, comMouseLeftClick, comMouseRightClick, comMouseMiddleClick comMouseScrollUp comMouseScrollDown
might be useful, because most people (including me) do not remember what button number corresponds to each of these functions.
(is it consistent throughout various X Window configurations??)

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.