Skip to content

Instantly share code, notes, and snippets.

@ViniciusFXavier
Last active March 21, 2021 06:01
Show Gist options
  • Save ViniciusFXavier/12dcc86e9fceb455c6f06e5f0e702cb6 to your computer and use it in GitHub Desktop.
Save ViniciusFXavier/12dcc86e9fceb455c6f06e5f0e702cb6 to your computer and use it in GitHub Desktop.
Double Keypress Detection
document.addEventListener('dblkeypress', function (event) {
console.log('event: ', event);
console.log('----Works----');
}, false);
var dblkeypressConfig = {
lastKeyCode: null,
lastFiredTime: null,
interval: 500, // 500(slow) or 350(medium) or 100(fast) or 50(impossible)
clear: function () {
dblkeypressConfig.lastKeyCode = dblkeypressConfig.lastFiredTime = null;
}
}
var dblkeypressEvent = document.createEvent('Event');
dblkeypressEvent.initEvent('dblkeypress', true, true);
document.addEventListener('keyup', function (event) {
var keyCode = event.keyCode || event.which;
var milliSeconds = (new Date).getTime();
if(dblkeypressConfig.lastFiredTime !== null && (dblkeypressConfig.lastFiredTime + dblkeypressConfig.interval) < milliSeconds) {
dblkeypressConfig.clear();
}
if (dblkeypressConfig.lastKeyCode !== null && dblkeypressConfig.lastKeyCode === keyCode) {
this.dispatchEvent(dblkeypressEvent);
}
dblkeypressConfig.lastKeyCode = keyCode;
dblkeypressConfig.lastFiredTime = milliSeconds;
}, false);
var keysPressed = {};
document.addEventListener('keydown', (event) => {
keysPressed[event.key] = true;
if (keysPressed['Control'] && event.key == 'c') {
console.log('keysPressed: ', keysPressed);
}
});
document.addEventListener('keyup', (event) => {
delete keysPressed[event.key];
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment