Support all us-intl dead keys

This commit is contained in:
Simon Howe
2016-07-20 13:17:11 +02:00
parent d506429d8f
commit b8ed8aebf8
2 changed files with 16 additions and 7 deletions

View File

@@ -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) {

View File

@@ -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) {