mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-05-18 13:28:12 -04:00
41 lines
1002 B
JavaScript
41 lines
1002 B
JavaScript
let shortcuts = {};
|
|
let lastKeyPressed = '';
|
|
let lastKeyPressTime = 0;
|
|
|
|
document.addEventListener('keydown', handleKeyPress);
|
|
|
|
export function handleKeyPress(event) {
|
|
if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {
|
|
return;
|
|
}
|
|
|
|
const currentTime = new Date().getTime();
|
|
const key = event.key.toLowerCase();
|
|
|
|
if (currentTime - lastKeyPressTime > 1000) {
|
|
lastKeyPressed = '';
|
|
}
|
|
|
|
lastKeyPressed += key;
|
|
lastKeyPressTime = currentTime;
|
|
|
|
const shortcut = shortcuts[lastKeyPressed];
|
|
if (shortcut) {
|
|
event.preventDefault();
|
|
shortcut.dotNetHelper.invokeMethodAsync('Invoke', lastKeyPressed);
|
|
lastKeyPressed = '';
|
|
}
|
|
}
|
|
|
|
export function registerShortcut(keys, dotNetHelper) {
|
|
shortcuts[keys.toLowerCase()] = { dotNetHelper: dotNetHelper };
|
|
}
|
|
|
|
export function unregisterShortcut(keys) {
|
|
delete shortcuts[keys.toLowerCase()];
|
|
}
|
|
|
|
export function unregisterAllShortcuts() {
|
|
shortcuts = {};
|
|
}
|