Send combination keysyms for some Japanese keys
Windows doesn't give us stable symbols for a bunch of Japanese IM keys, instead alternating between two symbols. This state is not synchronised with the IM running on the remote server so to have stable behaviour we have to collapse these multiple symbols in to a single keysym.
This commit is contained in:
committed by
Lauri Kasanen
parent
102257cb32
commit
4fda2526f4
@@ -248,5 +248,38 @@ describe('Helpers', function () {
|
||||
expect(KeyboardUtil.getKeysym({code: 'NumpadDecimal', key: ',', location: 3})).to.be.equal(0xFFAC);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Japanese IM keys on Windows', function () {
|
||||
let origNavigator;
|
||||
beforeEach(function () {
|
||||
// window.navigator is a protected read-only property in many
|
||||
// environments, so we need to redefine it whilst running these
|
||||
// tests.
|
||||
origNavigator = Object.getOwnPropertyDescriptor(window, "navigator");
|
||||
|
||||
Object.defineProperty(window, "navigator", {value: {}});
|
||||
if (window.navigator.platform !== undefined) {
|
||||
// Object.defineProperty() doesn't work properly in old
|
||||
// versions of Chrome
|
||||
this.skip();
|
||||
}
|
||||
|
||||
window.navigator.platform = "Windows";
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
if (origNavigator !== undefined) {
|
||||
Object.defineProperty(window, "navigator", origNavigator);
|
||||
}
|
||||
});
|
||||
|
||||
const keys = { 'Zenkaku': 0xff2a, 'Hankaku': 0xff2a,
|
||||
'Romaji': 0xff24, 'KanaMode': 0xff24 };
|
||||
for (let [key, keysym] of Object.entries(keys)) {
|
||||
it(`should fake combined key for ${key} on Windows`, function () {
|
||||
expect(KeyboardUtil.getKeysym({code: 'FakeIM', key: key})).to.be.equal(keysym);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user