mousetrapjs 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +6 -8
- data/lib/mousetrapjs/version.rb +1 -1
- data/mousetrapjs.gemspec +2 -2
- data/vendor/assets/javascripts/mousetrap.js +59 -25
- metadata +5 -4
data/README.md
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# MousetrapJS
|
2
|
+
Mousetrap is a simple library for handling keyboard shortcuts in Javascript, with no external dependencies.
|
3
|
+
Documentation can be found in [here](http://craig.is/killing/mice).
|
4
|
+
|
2
5
|
|
3
6
|
## Installation
|
4
7
|
|
@@ -16,15 +19,10 @@ Or install it yourself as:
|
|
16
19
|
|
17
20
|
## Usage
|
18
21
|
|
19
|
-
|
22
|
+
Just add this line to your `application.js` file
|
23
|
+
|
20
24
|
```
|
21
25
|
//= require mousetrap
|
22
26
|
```
|
23
27
|
|
24
|
-
|
25
|
-
|
26
|
-
1. Fork it
|
27
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
28
|
-
3. Commit your changes (`git commit -am 'Added some feature'`)
|
29
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
30
|
-
5. Create new Pull Request
|
28
|
+
Thanks to [ccampbel](https://github.com/ccampbell/mousetrap) for the hard work.
|
data/lib/mousetrapjs/version.rb
CHANGED
data/mousetrapjs.gemspec
CHANGED
@@ -4,8 +4,8 @@ require File.expand_path('../lib/mousetrapjs/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Luiz Eduardo Kowalski"]
|
6
6
|
gem.email = ["luizeduardokowalski@gmail.com"]
|
7
|
-
gem.description = %q{Gem for Mousetrap
|
8
|
-
gem.summary = %q{
|
7
|
+
gem.description = %q{Gem for Mousetrap, a simple library for handling keyboard shortcuts in Javascript}
|
8
|
+
gem.summary = %q{Mousetrap is a simple library for handling keyboard shortcuts in Javascript}
|
9
9
|
gem.homepage = "https://github.com/luizkowalski/mousetrapjs"
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
@@ -16,7 +16,7 @@
|
|
16
16
|
* Mousetrap is a simple keyboard shortcut library for Javascript with
|
17
17
|
* no external dependencies
|
18
18
|
*
|
19
|
-
* @
|
19
|
+
* @version 1.1.1
|
20
20
|
* @url craig.is/killing/mice
|
21
21
|
*/
|
22
22
|
window.Mousetrap = (function() {
|
@@ -24,6 +24,10 @@ window.Mousetrap = (function() {
|
|
24
24
|
/**
|
25
25
|
* mapping of special keycodes to their corresponding keys
|
26
26
|
*
|
27
|
+
* everything in this dictionary cannot use keypress events
|
28
|
+
* so it has to be here to map to the correct keycodes for
|
29
|
+
* keyup/keydown events
|
30
|
+
*
|
27
31
|
* @type {Object}
|
28
32
|
*/
|
29
33
|
var _MAP = {
|
@@ -53,7 +57,9 @@ window.Mousetrap = (function() {
|
|
53
57
|
|
54
58
|
/**
|
55
59
|
* mapping for special characters so they can support
|
56
|
-
*
|
60
|
+
*
|
61
|
+
* this dictionary is only used incase you want to bind a
|
62
|
+
* keyup or keydown event to one of these keys
|
57
63
|
*
|
58
64
|
* @type {Object}
|
59
65
|
*/
|
@@ -82,6 +88,8 @@ window.Mousetrap = (function() {
|
|
82
88
|
*
|
83
89
|
* this is so you can use keyup events with these keys
|
84
90
|
*
|
91
|
+
* note that this will only work reliably on US keyboards
|
92
|
+
*
|
85
93
|
* @type {Object}
|
86
94
|
*/
|
87
95
|
_SHIFT_MAP = {
|
@@ -183,8 +191,8 @@ window.Mousetrap = (function() {
|
|
183
191
|
/**
|
184
192
|
* loop through to map numbers on the numeric keypad
|
185
193
|
*/
|
186
|
-
for (i =
|
187
|
-
_MAP[i] = i
|
194
|
+
for (i = 0; i <= 9; ++i) {
|
195
|
+
_MAP[i + 96] = i;
|
188
196
|
}
|
189
197
|
|
190
198
|
/**
|
@@ -204,7 +212,7 @@ window.Mousetrap = (function() {
|
|
204
212
|
}
|
205
213
|
|
206
214
|
/**
|
207
|
-
* takes the event and returns the
|
215
|
+
* takes the event and returns the key character
|
208
216
|
*
|
209
217
|
* @param {Event} e
|
210
218
|
* @return {string}
|
@@ -268,14 +276,15 @@ window.Mousetrap = (function() {
|
|
268
276
|
function _resetSequences(do_not_reset) {
|
269
277
|
do_not_reset = do_not_reset || {};
|
270
278
|
|
271
|
-
var active_sequences = false
|
279
|
+
var active_sequences = false,
|
280
|
+
key;
|
272
281
|
|
273
|
-
for (
|
274
|
-
if (
|
275
|
-
|
282
|
+
for (key in _sequence_levels) {
|
283
|
+
if (do_not_reset[key]) {
|
284
|
+
active_sequences = true;
|
276
285
|
continue;
|
277
286
|
}
|
278
|
-
|
287
|
+
_sequence_levels[key] = 0;
|
279
288
|
}
|
280
289
|
|
281
290
|
if (!active_sequences) {
|
@@ -329,7 +338,7 @@ window.Mousetrap = (function() {
|
|
329
338
|
// if this is a keypress event that means that we need to only
|
330
339
|
// look at the character, otherwise check the modifiers as
|
331
340
|
// well
|
332
|
-
if (action
|
341
|
+
if (action == 'keypress' || _modifiersMatch(modifiers, callback.modifiers)) {
|
333
342
|
|
334
343
|
// remove is used so if you change your mind and call bind a
|
335
344
|
// second time with a new function the first one is overwritten
|
@@ -373,13 +382,38 @@ window.Mousetrap = (function() {
|
|
373
382
|
}
|
374
383
|
|
375
384
|
/**
|
376
|
-
*
|
385
|
+
* actually calls the callback function
|
386
|
+
*
|
387
|
+
* if your callback function returns false this will use the jquery
|
388
|
+
* convention - prevent default and stop propogation on the event
|
389
|
+
*
|
390
|
+
* @param {Function} callback
|
391
|
+
* @param {Event} e
|
392
|
+
* @returns void
|
393
|
+
*/
|
394
|
+
function _fireCallback(callback, e) {
|
395
|
+
if (callback(e) === false) {
|
396
|
+
if (e.preventDefault) {
|
397
|
+
e.preventDefault();
|
398
|
+
}
|
399
|
+
|
400
|
+
if (e.stopPropagation) {
|
401
|
+
e.stopPropagation();
|
402
|
+
}
|
403
|
+
|
404
|
+
e.returnValue = false;
|
405
|
+
e.cancelBubble = true;
|
406
|
+
}
|
407
|
+
}
|
408
|
+
|
409
|
+
/**
|
410
|
+
* handles a character key event
|
377
411
|
*
|
378
412
|
* @param {string} character
|
379
413
|
* @param {Event} e
|
380
414
|
* @returns void
|
381
415
|
*/
|
382
|
-
function
|
416
|
+
function _handleCharacter(character, e) {
|
383
417
|
|
384
418
|
// if this event should not happen stop here
|
385
419
|
if (_stop(e)) {
|
@@ -404,14 +438,14 @@ window.Mousetrap = (function() {
|
|
404
438
|
|
405
439
|
// keep a list of which sequences were matches for later
|
406
440
|
do_not_reset[callbacks[i]['seq']] = 1;
|
407
|
-
callbacks[i].callback
|
441
|
+
_fireCallback(callbacks[i].callback, e);
|
408
442
|
continue;
|
409
443
|
}
|
410
444
|
|
411
445
|
// if there were no sequence matches but we are still here
|
412
|
-
// that means this is a regular match so we should fire
|
446
|
+
// that means this is a regular match so we should fire that
|
413
447
|
if (!processed_sequence_callback && !_inside_sequence) {
|
414
|
-
callbacks[i].callback
|
448
|
+
_fireCallback(callbacks[i].callback, e);
|
415
449
|
}
|
416
450
|
}
|
417
451
|
|
@@ -431,7 +465,7 @@ window.Mousetrap = (function() {
|
|
431
465
|
*/
|
432
466
|
function _handleKey(e) {
|
433
467
|
|
434
|
-
//
|
468
|
+
// normalize e.which for key events
|
435
469
|
// @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion
|
436
470
|
e.which = typeof e.which == "number" ? e.which : e.keyCode;
|
437
471
|
|
@@ -442,12 +476,12 @@ window.Mousetrap = (function() {
|
|
442
476
|
return;
|
443
477
|
}
|
444
478
|
|
445
|
-
if (e.type
|
479
|
+
if (e.type == 'keyup' && _ignore_next_keyup == character) {
|
446
480
|
_ignore_next_keyup = false;
|
447
481
|
return;
|
448
482
|
}
|
449
483
|
|
450
|
-
|
484
|
+
_handleCharacter(character, e);
|
451
485
|
}
|
452
486
|
|
453
487
|
/**
|
@@ -468,7 +502,7 @@ window.Mousetrap = (function() {
|
|
468
502
|
*
|
469
503
|
* @returns void
|
470
504
|
*/
|
471
|
-
function
|
505
|
+
function _resetSequenceTimer() {
|
472
506
|
clearTimeout(_reset_timer);
|
473
507
|
_reset_timer = setTimeout(_resetSequences, 1000);
|
474
508
|
}
|
@@ -515,7 +549,7 @@ window.Mousetrap = (function() {
|
|
515
549
|
|
516
550
|
// modifier keys don't work as expected with keypress,
|
517
551
|
// switch to keydown
|
518
|
-
if (action
|
552
|
+
if (action == 'keypress' && modifiers.length) {
|
519
553
|
action = 'keydown';
|
520
554
|
}
|
521
555
|
|
@@ -553,7 +587,7 @@ window.Mousetrap = (function() {
|
|
553
587
|
var _increaseSequence = function(e) {
|
554
588
|
_inside_sequence = action;
|
555
589
|
++_sequence_levels[combo];
|
556
|
-
|
590
|
+
_resetSequenceTimer();
|
557
591
|
},
|
558
592
|
|
559
593
|
/**
|
@@ -564,7 +598,7 @@ window.Mousetrap = (function() {
|
|
564
598
|
* @returns void
|
565
599
|
*/
|
566
600
|
_callbackAndReset = function(e) {
|
567
|
-
callback
|
601
|
+
_fireCallback(callback, e);
|
568
602
|
|
569
603
|
// we should ignore the next key up if the action is key down
|
570
604
|
// or keypress. this is so if you finish a sequence and
|
@@ -684,9 +718,9 @@ window.Mousetrap = (function() {
|
|
684
718
|
}
|
685
719
|
|
686
720
|
// start!
|
721
|
+
_addEvent(document, 'keypress', _handleKey);
|
687
722
|
_addEvent(document, 'keydown', _handleKey);
|
688
723
|
_addEvent(document, 'keyup', _handleKey);
|
689
|
-
_addEvent(document, 'keypress', _handleKey);
|
690
724
|
|
691
725
|
return {
|
692
726
|
|
@@ -720,7 +754,7 @@ window.Mousetrap = (function() {
|
|
720
754
|
* the keycombo+action has to be exactly the same as
|
721
755
|
* it was defined in the bind method
|
722
756
|
*
|
723
|
-
*
|
757
|
+
* TODO: actually remove this from the _callbacks dictionary instead
|
724
758
|
* of binding an empty function
|
725
759
|
*
|
726
760
|
* @param {string|Array} keys
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mousetrapjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,9 +9,10 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-12 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description: Gem for Mousetrap
|
14
|
+
description: Gem for Mousetrap, a simple library for handling keyboard shortcuts in
|
15
|
+
Javascript
|
15
16
|
email:
|
16
17
|
- luizeduardokowalski@gmail.com
|
17
18
|
executables: []
|
@@ -50,5 +51,5 @@ rubyforge_project:
|
|
50
51
|
rubygems_version: 1.8.22
|
51
52
|
signing_key:
|
52
53
|
specification_version: 3
|
53
|
-
summary:
|
54
|
+
summary: Mousetrap is a simple library for handling keyboard shortcuts in Javascript
|
54
55
|
test_files: []
|