import keysyms from '../core/input/keysymdef.js';
import * as KeyboardUtil from "../core/input/util.js";
+function isIE() {
+ return navigator && !!(/trident/i).exec(navigator.userAgent);
+}
+function isEdge() {
+ return navigator && !!(/edge/i).exec(navigator.userAgent);
+}
+
describe('Helpers', function() {
"use strict";
describe('getKey', function() {
it('should prefer key', function() {
+ if (isIE() || isEdge()) this.skip();
expect(KeyboardUtil.getKey({key: 'a', charCode: 'Š'.charCodeAt(), keyCode: 0x42, which: 0x43})).to.be.equal('a');
});
it('should map legacy values', function() {
describe('Numpad', function() {
it('should handle Numpad numbers', function() {
+ if (isIE() || isEdge()) this.skip();
expect(KeyboardUtil.getKeysym({code: 'Digit5', key: '5', location: 0})).to.be.equal(0x0035);
expect(KeyboardUtil.getKeysym({code: 'Numpad5', key: '5', location: 3})).to.be.equal(0xFFB5);
});
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: 'Delete', location: 3})).to.be.equal(0xFF9F);
});
it('should handle Numpad Decimal key', function() {
+ if (isIE() || isEdge()) this.skip();
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: '.', location: 3})).to.be.equal(0xFFAE);
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: ',', location: 3})).to.be.equal(0xFFAC);
});
import keysyms from '../core/input/keysymdef.js';
import * as KeyboardUtil from '../core/input/util.js';
+function isIE() {
+ return navigator && !!(/trident/i).exec(navigator.userAgent);
+}
+function isEdge() {
+ return navigator && !!(/edge/i).exec(navigator.userAgent);
+}
+
/* jshint newcap: false, expr: true */
describe('Key Event Handling', function() {
"use strict";
describe('Decode Keyboard Events', function() {
it('should decode keydown events', function(done) {
+ if (isIE() || isEdge()) this.skip();
var kbd = new Keyboard({
onKeyEvent: function(keysym, code, down) {
expect(keysym).to.be.equal(0x61);
kbd._handleKeyDown(keyevent('keydown', {code: 'KeyA', key: 'a'}));
});
it('should decode keyup events', function(done) {
+ if (isIE() || isEdge()) this.skip();
var calls = 0;
var kbd = new Keyboard({
onKeyEvent: function(keysym, code, down) {
});
describe('suppress the right events at the right time', function() {
+ beforeEach(function () {
+ if (isIE() || isEdge()) this.skip();
+ });
it('should suppress anything with a valid key', function() {
var kbd = new Keyboard({});
var evt = keyevent('keydown', {code: 'KeyA', key: 'a'});
});
describe('Track Key State', function() {
+ beforeEach(function () {
+ if (isIE() || isEdge()) this.skip();
+ });
it('should send release using the same keysym as the press', function(done) {
var kbd = new Keyboard({
onKeyEvent: function(keysym, code, down) {