Git Product home page Git Product logo

warpd's Introduction

Overview

A small X program which provides a modal keyboard driven interface for cursor manipulation. The program was originally inspired by the mousekeys feature of Kaleidoscope, the firmware for the Keyboardio.

Demo

Hint Mode Alt-Meta-x

Grid Mode Alt-Meta-g

Normal Mode Alt-Meta-c

Dependencies

Linux:

The usual array of X libraries:

  • libxi
  • libxinerama
  • libxft
  • libxfixes
  • libxtst
  • libx11

MacOS:

  • The standard Xcode command line developer tools.

Installation

Make sure you have the appropriate dependencies for your system:

E.G

debian/ubuntu:

sudo apt-get install \
	libxi-dev \
	libxinerama-dev \
	libxft-dev \
	libxfixes-dev \
	libxtst-dev \
	libx11-dev

macos:

xcode-select --install

Then simply do:

make && sudo make install

Quickstart

  1. Run warpd

Hint Mode

  1. Press A-M-x (alt+meta+x) to generate a list of hints
  2. Enter the key sequence associated with the desired target to warp the pointer to that location and enter normal mode.
  3. Use the normal mode movement keys to select the final desination (see Normal Mode).

Grid Mode

  1. Press A-M-g (meta is the command key) to activate the warping process.
  2. Use u,i,j,k to repeatedly navigate to different quadrants.
  3. Press m to left click, , to middle click or . to right click.
  4. See Normal Mode

Normal Mode

  1. Press A-M-c to activate normal mode.
  2. Use the normal movement keys (default hjkl) to adjust the cursor.
  3. Press m to left click, , to middle click or . to right click.
  4. Press escape to quit.

A drag movement can be simulated from any of the above modes by focusing on the source and then pressing the drag_key (default v) which will cause normal mode to be activated for selection of the drag target.

A more comprehensive description can be found in the man page (along with a list of options).

Packages:

warpd is currently available on the following distributions:

Arch

Available as an AUR package (maintained by Matheus Fillipe).

If you are interesting in adding warpd to your distribution's repository please contact me.

Limitations/Bugs

  • No multi monitor support (it may still work by treating the entire display as one giant screen, I haven't tried this). If you use this program and desire this feature feel free to harass me via email or file an issue.

  • Programs which use Xinput and or Xtest for keyboard may not work correctly (e.g synergy). If a specific program which you feel should be working does not please file an issue.

  • This was a small one off c file that ballooned into a small project, I did not originally plan to publish it. Consequently the code is ugly/will eat your face. You have been warned.

Contributions

A special thanks to

  • Pete Fein - For encouragement and early adoption.
  • Matheus Fillipe - For the original border radius patch as well as numerous bug reports and feature requests.
  • The Kaleidoscope/Vimperator projects - For inspiration.

warpd's People

Contributors

aelliott2000 avatar enzime avatar meain avatar rvaiya avatar wearpants avatar

Watchers

 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.