Keymaster.js 快速绑定键盘操作的 JavaScript 库
Keymaster.js 是一个 JavaScript 的库,用户绑定键盘的快捷方式操作,他是一个轻量级的插件,压缩版本不到100K,不依赖任何第三方插件库,能支持多种键盘按钮和组合按键。

使用方法
1、像往常一样,引入 keymaster.js 文件到你的项目中。
<script src="keymaster.js"></script>
Keymaster.js 没有依赖性,完全可以作为独立的。 不干扰任何JavaScript库或。
在实际运行中,你应该使用压缩版,体积更小,你可以运行run通过 UglifyJS 创建keymaster.min.js为你的文件。
定义快捷键
一个全局定义快捷键的方式,key它定义了快捷键,当直接调用。
// define short of 'a'key('a', function(){ alert('you pressed a!') });
// returning false stops the event and prevents default browser events
key('ctrl+r', function(){ alert('stopped reload!'); return false });
// multiple shortcuts that do the same thing
key('⌘+r, ctrl+r', function(){ });
处理方法是用两个参数调用设置,KeyDown event 并对象包含,除其他外,以下两个属性:
shortcut:一个字符串包含快捷键使用,例如按ctrl+rscope:一个字符串(或all)
key('⌘+r, ctrl+r', function(event, handler){ console.log(handler.shortcut, handler.scope);
});
// "ctrl+r", "all"
支持按键
Keymaster.js支持下列修饰符:⇧, shift, option, ⌥, alt, ctrl, control, command, and ⌘。
下列特殊键可以使用快捷键:backspace, tab, clear, enter, return, esc, escape, space, up, down, left, right, home, end, pageup, pagedown, del, delete 和 f1 通过 f19。
修饰键查询
在任何时间点(甚至代码比其他快捷键处理), 可以查询key对于任何按键的状态对象。这可以轻松实现诸如Shift + 单击处理程序。例如,key.shift是true如果当前按下Shift键。
if(key.shift) alert('shift is pressed, OMGZ!');其他关键的查询
在任何时间点(甚至代码比其他快捷键处理), 可以查询key对于任何关键状态对象。这非常有利于游戏开发使用的游戏循环。例如,key.isPressed(77)是true如果M键正压。
if(key.isPressed("M")) alert('M key is pressed, can ya believe it!?');if(key.isPressed(77)) alert('M key is pressed, can ya believe it!?');
你也可以把这些作为一个数组的使用…
key.getPressedKeyCodes()// returns an array of key codes currently pressed
Scopes
如果你想重复使用相同的快捷键在你的单页应用程序独立的地区, Keymaster支持切换。使用key.setscope设置范围的方法。
// define shortcuts with a scopekey('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 不处理任何快捷方式。
你可以改变通过重写key.filter一个新的功能。这个功能是在Keymaster 过程快捷方式称为,与KeyDown事件作为参数。
如果你的函数返回false,那么没有捷径将被处理。
这里是参考的默认实现:
function filter(event){ var tagName = (event.target || event.srcElement).tagName;
return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');
}
如果你只想要一些快捷的工作在一个输入元素,你可以在范围变更key.filter功能。下面是一个实例的实现,设置范围为“input”或“other” 别忘了。true所以任何快捷方式得到处理。
key.filter = function(event){ var tagName = (event.target || event.srcElement).tagName;
key.setScope(/^(INPUT|TEXTAREA|SELECT)$/.test(tagName) ? 'input' : 'other');
return true;
}
然而,一个更强大的处理办法是使用适当的 焦点和模糊事件处理程序在您的输入元素,变化范围在您认为合适的。
任何模式
你可以调用key.noconflict删除key从全球范围和恢复任何功能key定义在Keymaster 加载之前。调用key.noconflict将返回键控key功能。
var k = key.noConflict();k('a', function() { /* ... */ });
key()
// --> TypeError: 'undefined' is not a function
绑定快捷键
类似于定义快捷键,它们可以自由使用key.unbind。
// unbind 'a' handlerkey.unbind('a');
// unbind a key only for a single scope
// when no scope is specified it defaults to the current scope (key.getScope())
key.unbind('o, enter', 'issues');
key.unbind('o, enter', 'files');
CoffeeScript
如果你使用CoffeeScript配置快捷键,简单得不能再简单了:
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
https://github.com/madrobby/keymaster
以上是 Keymaster.js 快速绑定键盘操作的 JavaScript 库 的全部内容, 来源链接: utcz.com/p/232040.html
