Handle broken Oculus browser keyboard events
It sets KeyboardEvent.key to "Unidentified" for all non-character keys, which means we must ignore it and use the legacy handling to figure out the key pressed.
This commit is contained in:
parent
fca48df85d
commit
ab2fd41693
|
@ -67,7 +67,7 @@ export function getKeycode(evt) {
|
||||||
// Get 'KeyboardEvent.key', handling legacy browsers
|
// Get 'KeyboardEvent.key', handling legacy browsers
|
||||||
export function getKey(evt) {
|
export function getKey(evt) {
|
||||||
// Are we getting a proper key value?
|
// Are we getting a proper key value?
|
||||||
if (evt.key !== undefined) {
|
if ((evt.key !== undefined) && (evt.key !== 'Unidentified')) {
|
||||||
// Mozilla isn't fully in sync with the spec yet
|
// Mozilla isn't fully in sync with the spec yet
|
||||||
switch (evt.key) {
|
switch (evt.key) {
|
||||||
case 'OS': return 'Meta';
|
case 'OS': return 'Meta';
|
||||||
|
|
|
@ -108,6 +108,8 @@ describe('Helpers', function () {
|
||||||
});
|
});
|
||||||
it('should use charCode if no key', function () {
|
it('should use charCode if no key', function () {
|
||||||
expect(KeyboardUtil.getKey({charCode: 'Š'.charCodeAt(), keyCode: 0x42, which: 0x43})).to.be.equal('Š');
|
expect(KeyboardUtil.getKey({charCode: 'Š'.charCodeAt(), keyCode: 0x42, which: 0x43})).to.be.equal('Š');
|
||||||
|
// Broken Oculus browser
|
||||||
|
expect(KeyboardUtil.getKey({charCode: 'Š'.charCodeAt(), keyCode: 0x42, which: 0x43, key: 'Unidentified'})).to.be.equal('Š');
|
||||||
});
|
});
|
||||||
it('should return Unidentified when it cannot map the key', function () {
|
it('should return Unidentified when it cannot map the key', function () {
|
||||||
expect(KeyboardUtil.getKey({keycode: 0x42})).to.be.equal('Unidentified');
|
expect(KeyboardUtil.getKey({keycode: 0x42})).to.be.equal('Unidentified');
|
||||||
|
|
Loading…
Reference in New Issue