当前位置: 首页 > 工具软件 > Keys.js > 使用案例 >

Keys.js(web快捷键)官方使用说明

高夜洛
2023-12-01

Keys由三个类时金字塔的Classes组成,从最小的单元(Key)开始到全局Document的事件管理器(Bindings)。

包括:key、combo、Bindings

  • key

这个Class管理键盘上单个物理按键的信息。可以使用key.akey['Num Lock']引用给定的实例。理论上不需要手动创建Key的新实例,因为键盘上的所有键都已经定义了静态实例。

  • Combo

这个Class管理键盘上物理组合键信息。具体地说,一个任何类型的物理键,以及特殊按键(SHIFT、ALT、meta等)的任意组合。Combo是将keypress事件中按下的键与希望对其执行行为的组合中所需的键相匹配(由Bindings类管理)。

可以使用以下变量轻松创建组合:

// Single key
var combo = new Combo(Key.A);
// Single meta key
var combo = new Combo(Key.A, Key.CTRL);
// Multiple meta keys, constructor called as a variadic function
var combo = new Combo(Key.A, Key.CTRL, Key.SHIFT);
// Multiple meta keys passed as an array
var combo = new Combo(Key.A, [ Key.CTRL, Key.SHIFT ]);
  • Bindings

这个class管理Action到组合的映射。如果找到一个匹配键的组合键,则按Event创建一个组合键,执行该组合和事件类型的任何处理程序(您可以为keydown/keyup使用不同的处理程序)。

注意:页面上只能有一个Bindings实例,否则将遇到重复/删除事件。

Bindings提供了一个简单的API,用于获取组合和绑定行为。首先,必须使用add创建keybinding:

var bindings = new Bindings();
// 典型的binding语法
bindings.add('displayAlert', new Combo(Key.A, Key.CTRL, Key.SHIFT));
bindings.add('toggle', new Combo(Key.S, Key.CTRL, Key.META));
// 一个事件绑定多个bindings
bindings.add('anotherEvent', new Combo(Key.D, Key.META), new Combo(Key.D, Key.SHIFT));

绑定添加行为Bingings.registerHandler. 您还可以为一个事件添加多个处理程序(例如,一个用于撤消逻辑的处理程序,一个用于执行实际操作的处理程序)。

var displayAlert = function() { alert('Hello!'); };
// Inferred binding name and eventType syntax
bindings.registerHandler(displayAlert);
// Inferred eventType syntax
bindings.registerHandler('displayAlert', function(ev) { alert('Hello!'); });
// Full syntax
bindings.registerHandler('displayAlert', 'keypress', function(ev) { alert('Hello!'); });

反向注册Bindings.unregisterHandler.

// Unregister handler for a given name/function pair
bindings.unregisterHandler('displayAlert', displayAlert);
// Unregister handler for a specific event
bindings.unregisterHandler('keyup', 'displayAlert');
// Unregister all handlers with a given name
bindings.unregisterHandler('displayAlert');

If you have toggle-like behavior you'd like to implement, you are in luck! Register your toggle using registerToggle:

可以非常方便的实现类似Toggle的行为,使用registerToggle注册您的切换:

var toggleOn = function() { console.log('Lights on!'); };
var toggleOff = function() { console.log('Lights off!'); };
bindings.registerToggle('toggle', toggleOn, toggleOff);

注意: Toggle从Off位置开始生效。

 类似资料: