25 lines
810 B
JavaScript
25 lines
810 B
JavaScript
window.moonCoreKeyBinds = {
|
|
storage: {},
|
|
|
|
registerHotkey: function (key, modifier, action, dotNetObjRef) {
|
|
|
|
const hotkeyListener = async (event) => {
|
|
if (event.code === key && (!modifier || event[modifier + 'Key'])) {
|
|
event.preventDefault();
|
|
|
|
await dotNetObjRef.invokeMethodAsync("OnHotkeyPressed", action);
|
|
}
|
|
};
|
|
|
|
this.storage[`${key}${modifier}`] = hotkeyListener;
|
|
window.addEventListener('keydown', hotkeyListener);
|
|
},
|
|
|
|
unregisterHotkey: function (key, modifier) {
|
|
const listenerKey = `${key}${modifier}`;
|
|
if (this.storage[listenerKey]) {
|
|
window.removeEventListener('keydown', this.storage[listenerKey]);
|
|
delete this.storage[listenerKey];
|
|
}
|
|
}
|
|
} |