Keymaster — простая микро-библиотека для привязки и отвязки шорткатов клавиатуры.
Что хорошо, работает без зависимых библиотек.
Пробуем.
Использование
Просто включите файл keymaster.min.js
в ваше веб-приложение:
1 |
<script src="keymaster.min.js"></script> |
Keymaster полностью независим. Он не требует присутствия каких-либо JavaScript библиотек или фреймворков.
Определение шорткатов
Существует один глобальный метод key
, для привязки шорткатов.
1 2 3 4 5 6 7 |
// определение шортката 'a' key('a', function(){ alert('you pressed a!') }); // возвращаем ложную остановку события и срабатывания браузера key('ctrl+r', function(){ alert('stopped reload!'); return false }); // множественные шорткаты key('?+r, ctrl+r', function(){ }); |
Метод вызывается с двумя аргументами:
shortcut
: строка, которая содержит используемый шорткат, например ctrl+r
scope
: строка, описывающая область действия (или all
)
1 2 3 4 |
key('?+r, ctrl+r', function(event, handler){ console.log(handler.shortcut, handler.scope); }); // "ctrl+r", "all" |
Поддерживаемые клавиши
Keymaster понимает клавиши:
⇧
, shift
, option
, ⌥
, alt
, ctrl
, control
, command
и ⌘
.
Следующие специальные клавиши могут быть использованы для шорткатов:
backspace
, tab
, clear
, enter
, return
, esc
, escape
, space
, up
, down
, left
, right
, home
, end
, pageup
, pagedown
, del
, delete
и с f1
до f19
.
Запросы служебных клавиш
Также вы можете использовать и служебные клавиши.
Например, shift+click
.
Если нажата клавиша shift, тогда key.shift
равна true
.
1 |
if(key.shift) alert('shift is pressed, OMGZ!'); |
Области действия
Если вам нужно изменить область действия шортката, то вы можете это сделать с помощью метода key.setScope
.
1 2 3 4 5 |
// define shortcuts with a scope key('o, enter', 'issues', function(){ /* do something */ }); key('o, enter', 'files', function(){ /* do something else */ }); // set the scope (only 'all' and 'issues' shortcuts will be honored) key.setScope('issues'); // default scope is 'all' |
Примечание
Когда элементы INPUT
, SELECT
или TEXTAREA
в фокусе, тогда Keymaster не работает.
Keymaster работает в любом браузере, где активны события keyup
и keydown
. Сама библиотека протестирована в IE (6+), Safari, Firefox и Chrome.
CoffeeScript
Если вы используете CoffeeScript, то конфигурация шорткатов не будет простой:
1 2 3 4 5 6 7 8 9 |
key 'a', -> alert('you pressed a!') key '?+r, ctrl+r', -> alert 'stopped reload!' off key 'o, enter', 'issues', -> whatevs() alert 'shift is pressed, OMGZ!' if key.shift |
Вот и все!