From 837aeb240f1a67dd6b772cc1f836641455ed60a0 Mon Sep 17 00:00:00 2001 From: mxb Date: Fri, 15 Mar 2019 20:08:10 +0100 Subject: [PATCH 1/5] Added keycode to package.json --- package-lock.json | 9 +++++++-- package.json | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a7d1254..c774c053 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "Rambox", - "version": "0.6.3", + "version": "0.6.4", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1862,7 +1862,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -3105,6 +3105,11 @@ "verror": "1.10.0" } }, + "keycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", + "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" + }, "klaw": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", diff --git a/package.json b/package.json index aedf6ef1..97d0ace5 100644 --- a/package.json +++ b/package.json @@ -189,6 +189,7 @@ "electron-log": "^2.2.17", "electron-store": "^2.0.0", "electron-updater": "^3.1.2", + "keycode": "^2.2.0", "mime": "^2.3.1", "request": "^2.88.0", "request-promise": "^4.2.2", From 7ee9e1c2efdd58c9f52b8e01810a8ed2c2f94dd7 Mon Sep 17 00:00:00 2001 From: mxb Date: Fri, 15 Mar 2019 20:09:18 +0100 Subject: [PATCH 2/5] Simply allowing keyMap to be accessed from eveywhere --- app/Application.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Application.js b/app/Application.js index 23138070..a095352f 100644 --- a/app/Application.js +++ b/app/Application.js @@ -24,7 +24,7 @@ Ext.define('Rambox.Application', { totalServicesLoaded: 0 ,totalNotifications: 0 } - + ,xtype : 'application-controller' ,launch: function () { // Prevent track if the user have disabled this option (default: false) if ( !ipc.sendSync('sendStatistics') ) { @@ -60,7 +60,7 @@ Ext.define('Rambox.Application', { if ( require('electron').remote.process.argv.indexOf('--without-update') === -1 ) Rambox.app.checkUpdate(true); // Add shortcuts to switch services using CTRL + Number - var map = new Ext.util.KeyMap({ + document.keyMapping = new Ext.util.KeyMap({ target: document ,binding: [ { From 5807007e485f9c6026437f4eccc805f522ff69a1 Mon Sep 17 00:00:00 2001 From: mxb Date: Fri, 15 Mar 2019 20:09:58 +0100 Subject: [PATCH 3/5] Simply allowing keyMap to be accessed from everywhere --- app/Application.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Application.js b/app/Application.js index a095352f..a8195530 100644 --- a/app/Application.js +++ b/app/Application.js @@ -24,7 +24,6 @@ Ext.define('Rambox.Application', { totalServicesLoaded: 0 ,totalNotifications: 0 } - ,xtype : 'application-controller' ,launch: function () { // Prevent track if the user have disabled this option (default: false) if ( !ipc.sendSync('sendStatistics') ) { From d71fc7b177af475ba1194f987f2cb644c8be3d90 Mon Sep 17 00:00:00 2001 From: mxb Date: Fri, 15 Mar 2019 20:10:14 +0100 Subject: [PATCH 4/5] Now directly handling key events from webview --- app/ux/WebView.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/ux/WebView.js b/app/ux/WebView.js index adeb9d13..e8a73cca 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -454,6 +454,29 @@ Ext.define('Rambox.ux.WebView',{ webview.executeJavaScript(js_inject); }); + webview.getWebContents().on('before-input-event', (event, input) => { + if (input.type !== 'keyDown') { // event used by default + return; + } + // because keyCode property is not passed + const keycode = require('keycode') + // Create a fake KeyboardEvent from the data provided + var emulatedKeyboardEvent = new KeyboardEvent('keydown', { + code: input.code, + key: input.key, + shiftKey: input.shift, + altKey: input.alt, + ctrlKey: input.control, + metaKey: input.meta, + repeat: input.isAutoRepeat, + keyCode: keycode(input.key) //get real key code + }); + emulatedKeyboardEvent.getKey = function() { + return this.keyCode || this.charCode // fake function, normally used by Ext.js, simply returning keyCode + } + document.keyMapping.handleTargetEvent(emulatedKeyboardEvent) // we directly trigger handleTargetEvent. That's a private method normally. We can't fire the event directly with document.dispatch, unfortunately + + }); webview.addEventListener('ipc-message', function(event) { var channel = event.channel; From a4f5ec66d308149c19a7a77f08f62a229daccf2d Mon Sep 17 00:00:00 2001 From: mxb Date: Thu, 21 Mar 2019 18:36:14 +0100 Subject: [PATCH 5/5] Replaced keycode to keycodes, better lib --- app/ux/WebView.js | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/ux/WebView.js b/app/ux/WebView.js index e8a73cca..a35b0a0c 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -459,7 +459,7 @@ Ext.define('Rambox.ux.WebView',{ return; } // because keyCode property is not passed - const keycode = require('keycode') + const keycode = require('keycodes') // Create a fake KeyboardEvent from the data provided var emulatedKeyboardEvent = new KeyboardEvent('keydown', { code: input.code, diff --git a/package-lock.json b/package-lock.json index c774c053..0687a9a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3105,10 +3105,10 @@ "verror": "1.10.0" } }, - "keycode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", - "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" + "keycodes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/keycodes/-/keycodes-1.0.0.tgz", + "integrity": "sha512-ukEttiO9Sjb/dj29GQw3/mVXyI3575QTtvetCJfBrVjytESKefRHCt7GUmruvFwWIUqvMD9p5uk7Y3y//4B+hw==" }, "klaw": { "version": "1.3.1", diff --git a/package.json b/package.json index 97d0ace5..28098a78 100644 --- a/package.json +++ b/package.json @@ -189,7 +189,7 @@ "electron-log": "^2.2.17", "electron-store": "^2.0.0", "electron-updater": "^3.1.2", - "keycode": "^2.2.0", + "keycodes": "^1.0.0", "mime": "^2.3.1", "request": "^2.88.0", "request-promise": "^4.2.2",