shortcut-key-js
Version:
js按键,组合键监听
35 lines (28 loc) • 1.03 kB
JavaScript
import { formatKey2Unit } from './index.js';
// 维护当前按键监听的回调函数映射
const listenerMaps = {};
// 根据回调函数获取事件监听的相关信息
export const getItem = function(keyCombination, fn) {
const _keyCombination = formatKey2Unit(keyCombination).join('+')
for (let key in listenerMaps) {
if (listenerMaps[key].combination === _keyCombination && listenerMaps[key].callback === fn) return [key, listenerMaps[key]];
}
return [];
}
// 添加一条回调函数记录
export function setItem(keyCombination, callback, data) {
listenerMaps[`key_${Math.random().toString(16).slice(-6)}`] = {
...data,
callback,
combination: formatKey2Unit(keyCombination).join('+')
};
}
// 移除一条回调函数记录
export function removeItem(keyCombination, callback) {
const listener = getItem(keyCombination, callback);
if (listener.length === 2) {
delete listenerMaps[listener[0]];
}
return listener;
}
export default { setItem, getItem, removeItem };