From b8ed8aebf80c199ab0d662dfad022a8d32b5f770 Mon Sep 17 00:00:00 2001 From: Simon Howe Date: Wed, 20 Jul 2016 13:17:11 +0200 Subject: [PATCH] Support all us-intl dead keys --- client/app/scripts/components/app.js | 1 + client/app/scripts/vendor/term.js | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/client/app/scripts/components/app.js b/client/app/scripts/components/app.js index 2568c9ea0..aa07737a4 100644 --- a/client/app/scripts/components/app.js +++ b/client/app/scripts/components/app.js @@ -56,6 +56,7 @@ class App extends React.Component { onKeyUp(ev) { const { showingTerminal } = this.props; + keyPressLog('onKeyUp', 'keyCode', ev.keyCode, ev); // don't get esc in onKeyPress if (ev.keyCode === ESC_KEY_CODE) { diff --git a/client/app/scripts/vendor/term.js b/client/app/scripts/vendor/term.js index ca8c47ade..7af1c5b72 100644 --- a/client/app/scripts/vendor/term.js +++ b/client/app/scripts/vendor/term.js @@ -2756,14 +2756,22 @@ Terminal.prototype.keyDown = function(ev) { case 123: key = '\x1b[24~'; break; - // Special case for US-intl '/" - case 222: - key = '\''; - if (ev.shiftKey) { - key = '"'; - } - break; default: + // Special case for US-intl + // Firefox leaves ev.key empty, Chrome sets it to "Dead" + if (!ev.key || ev.key === 'Dead') { + if (ev.keyCode === 54) { + key = ev.shiftKey ? '^' : '6'; + break; + } else if (ev.keyCode === 192) { + key = ev.shiftKey ? '~' : '`'; + break; + } else if (ev.keyCode === 222) { + key = ev.shiftKey ? '"' : "'"; + break; + } + } + // a-z and space if (ev.ctrlKey) { if (ev.keyCode >= 65 && ev.keyCode <= 90) {