Skip to content

Instantly share code, notes, and snippets.

@ccampbell
Created October 13, 2012 17:24
Show Gist options
  • Save ccampbell/3885446 to your computer and use it in GitHub Desktop.
Save ccampbell/3885446 to your computer and use it in GitHub Desktop.
Extends mousetrap.js to add global bindings that still work in form fields. Just include this js after mousetrap.
/**
* adds a bindGlobal method to Mousetrap that allows you to
* bind specific keyboard shortcuts that will still work
* inside a text input field
*
* usage:
* Mousetrap.bindGlobal('ctrl+s', _saveChanges);
*/
Mousetrap = (function(Mousetrap) {
var _global_callbacks = {},
_original_stop_callback = Mousetrap.stopCallback;
Mousetrap.stopCallback = function(e, element, combo) {
if (_global_callbacks[combo]) {
return false;
}
return _original_stop_callback(e, element, combo);
};
Mousetrap.bindGlobal = function(keys, callback, action) {
Mousetrap.bind(keys, callback, action);
if (keys instanceof Array) {
for (var i = 0; i < keys.length; i++) {
_global_callbacks[keys[i]] = true;
}
return;
}
_global_callbacks[keys] = true;
};
return Mousetrap;
}) (Mousetrap);
Mousetrap=function(a){var d={},e=a.stopCallback;a.stopCallback=function(b,c,a){return d[a]?!1:e(b,c,a)};a.bindGlobal=function(b,c,e){a.bind(b,c,e);if(b instanceof Array)for(c=0;c<b.length;c++)d[b[c]]=!0;else d[b]=!0};return a}(Mousetrap);
@harry-008
Copy link

hi,
on text field , when i press a or shift+a or g + a etc and it will convert into some other word . you can say translator.
how to do this on text field .

@sshmyg
Copy link

sshmyg commented Sep 15, 2017

Doesn't work macOS, chrome latest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment