Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lautis/bacontrap
Keyboard shortcuts with Bacon.js
https://github.com/lautis/bacontrap
Last synced: 21 days ago
JSON representation
Keyboard shortcuts with Bacon.js
- Host: GitHub
- URL: https://github.com/lautis/bacontrap
- Owner: lautis
- License: mit
- Created: 2013-07-21T18:30:34.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2019-03-13T20:33:18.000Z (over 5 years ago)
- Last Synced: 2024-05-08T18:31:14.761Z (7 months ago)
- Language: JavaScript
- Homepage: http://lautis.github.io/bacontrap
- Size: 103 KB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Bacontrap [![Build Status](https://travis-ci.org/lautis/bacontrap.svg?branch=master)](https://travis-ci.org/lautis/bacontrap)
[Mousetrap](https://github.com/ccampbell/mousetrap) inspired keyboard
shortcuts implemented with [Bacon.js](https://github.com/raimohanska/bacon.js).Unlike Mousetrap, Bacontrap is not a standalone library: Bacon.js and
jQuery/Zepto are dependencies. Since these provide functionality for
Bacontrap, the library itself is even smaller than Mousetrap.## Installation
Via NPM:
$ npm install bacontrap --save
## Usage
```javascript
const Bacontrap = require('Bacontrap');
Bacontrap.bind('4').onValue(function() { console.log('4'); });
Bacontrap.bind('?').onValue(function() { console.log('show shortcuts!'); });
Bacontrap.bind('esc').onValue({ console.log('escape'); });// combinations
Bacontrap.bind('command+shift+k').onValue(function() { console.log('command shift k'); });Bacontrap.bind(['command+k', 'ctrl+k']).onValue(function(event) {
console.log('command k or control k');// prevent default browser behaviour
event.preventDefault();
// and stop event from bubbling
event.stopPropagation();
// return value is used by Bacon to control stream end
return Bacon.more;
});// gmail style sequences
Bacontrap.bind('g i').onValue(function() { console.log('go to inbox'); });
Bacontrap.bind('* a').onValue(function() { console.log('select all'); });// shift+letter = LETTER
Bacontrap.bind('G').onValue(function() { console.log('shift+g'); });
Bacontrap.bind('shift+g').onValue(function() { console.log('also triggered'); });// konami code!
Bacontrap.bind('up up down down left right left right b a enter').onValue(function() {
console.log('konami code');
});
```## Hacking
The build process runs on [gulp](http://gulpjs.com). Assuming npm is installed,
dependencies can be installed by running$ npm install
After that, you can run use local gulp from `./node_modules/.bin/gulp` or
have it installed globally with$ npm install -g gulp
Then you should be able to run tests with
$ gulp test
To continously run tests after file changes use
$ gulp watch
There's also a gulp task for compiling distributable JS files.
$ gulp dist
## TODO
* Test with Internet Explorer
* Escape as modifier key
* Maybe support for different key events (keydown/keyup)
* Keyboard shortcuts using cmd/ctrl are not triggered on Google Chrome, but using
these is probably a bad idea anyway
* Pressing modifier keys do not interrupt shortcut sequences