src/js/libs/mousetrap-global-bind.js
changeset 1033 c20df1c080e6
child 1057 3f20f286d43e
equal deleted inserted replaced
1032:74ac0be7655c 1033:c20df1c080e6
       
     1 /**
       
     2  * adds a bindGlobal method to Mousetrap that allows you to
       
     3  * bind specific keyboard shortcuts that will still work
       
     4  * inside a text input field
       
     5  *
       
     6  * usage:
       
     7  * Mousetrap.bindGlobal('ctrl+s', _saveChanges);
       
     8  */
       
     9 /* global Mousetrap:true */
       
    10 Mousetrap = (function(Mousetrap) {
       
    11     var _globalCallbacks = {},
       
    12         _originalStopCallback = Mousetrap.stopCallback;
       
    13 
       
    14     Mousetrap.stopCallback = function(e, element, combo, sequence) {
       
    15         if (_globalCallbacks[combo] || _globalCallbacks[sequence]) {
       
    16             return false;
       
    17         }
       
    18 
       
    19         return _originalStopCallback(e, element, combo);
       
    20     };
       
    21 
       
    22     Mousetrap.bindGlobal = function(keys, callback, action) {
       
    23         Mousetrap.bind(keys, callback, action);
       
    24 
       
    25         if (keys instanceof Array) {
       
    26             for (var i = 0; i < keys.length; i++) {
       
    27                 _globalCallbacks[keys[i]] = true;
       
    28             }
       
    29             return;
       
    30         }
       
    31 
       
    32         _globalCallbacks[keys] = true;
       
    33     };
       
    34 
       
    35     return Mousetrap;
       
    36 }) (Mousetrap);