keyhawk
Version:
Create keybinds easily with single and multi key support
57 lines (42 loc) • 1.35 kB
JavaScript
import Keyhawk from '../keyhawk.js';
let keyhawk;
describe('Creating Keybinds', () => {
beforeEach(() => keyhawk = new Keyhawk());
afterEach(() => keyhawk = null);
it('should set the keys of the keybind to true when pressed', done => {
const jump = keyhawk.keybind(keyhawk.KEY.SPACE, keyhawk.KEY.W, keyhawk.KEY.SEVEN);
simKey(' ');
simKey('w');
simKey('7');
setTimeout(() => {
chai.expect(keyhawk._pressed).to.deep.equal({ ' ': true, w: true, 7: true });
done();
}, 1000);
});
it('should set the keys of the keybind to false when released after being pressed', done => {
const jump = keyhawk.keybind(keyhawk.KEY.SPACE, keyhawk.KEY.W, keyhawk.KEY.SEVEN);
simKey(' ');
simKey('w');
simKey('7');
simKey(' ', 'keyup');
simKey('w', 'keyup');
simKey('7', 'keyup');
setTimeout(() => {
chai.expect(keyhawk._pressed).to.deep.equal({ ' ': false, w: false, 7: false });
done();
}, 1000);
});
});
/**
* Simulate the user pressing a key.
*
* @param {string} key The key to simulate.
* @param {string} [type=keydown] The event to simulate.
*/
function simKey(key, type = 'keydown') {
const event = document.createEvent('HTMLEvents');
event.initEvent(type, true, false);
event.key = key;
document.dispatchEvent(event);
}