Browse Source

Really fix the keyboard handling

Julian Viereck 13 years ago
parent
commit
e8b18ef167
  1. 63
      web/viewer.js

63
web/viewer.js

@ -1456,6 +1456,43 @@ window.addEventListener('pagechange', function pagechange(evt) { @@ -1456,6 +1456,43 @@ window.addEventListener('pagechange', function pagechange(evt) {
}, true);
window.addEventListener('keydown', function keydown(evt) {
var cmd = 0;
if (evt.ctrlKey) cmd |= 1;
if (evt.altKey) cmd |= 2;
if (evt.shiftKey) cmd |= 4;
if (evt.metaKey) cmd |= 8;
var handled = false;
// First, handle the key bindings that are independent whether an input
// control is selected or not.
if (cmd == 1 || cmd == 8) { // either CTRL or META key.
switch (evt.keyCode) {
case 61: // FF/Mac '='
case 107: // FF '+' and '='
case 187: // Chrome '+'
PDFView.zoomIn();
handled = true;
break;
case 109: // FF '-'
case 189: // Chrome '-'
PDFView.zoomOut();
handled = true;
break;
case 48: // '0'
PDFView.parseScale(kDefaultScale, true);
handled = true;
break;
}
}
if (handled) {
evt.preventDefault();
return;
}
// Some shortcuts should not get handled if a control/input element
// is selected.
var curElement = document.activeElement;
if (curElement && curElement.tagName == 'INPUT')
return;
@ -1466,13 +1503,6 @@ window.addEventListener('keydown', function keydown(evt) { @@ -1466,13 +1503,6 @@ window.addEventListener('keydown', function keydown(evt) {
curElement = curElement.parentNode;
}
var cmd = 0;
if (evt.ctrlKey) cmd |= 1;
if (evt.altKey) cmd |= 2;
if (evt.shiftKey) cmd |= 4;
if (evt.metaKey) cmd |= 8;
var handled = false;
if (cmd == 0) { // no control key pressed at all.
switch (evt.keyCode) {
case 37: // left arrow
@ -1489,25 +1519,6 @@ window.addEventListener('keydown', function keydown(evt) { @@ -1489,25 +1519,6 @@ window.addEventListener('keydown', function keydown(evt) {
break;
}
}
else if (cmd == 1 || cmd == 8) { // either CTRL or META key.
switch (evt.keyCode) {
case 61: // FF/Mac '='
case 107: // FF '+' and '='
case 187: // Chrome '+'
PDFView.zoomIn();
handled = true;
break;
case 109: // FF '-'
case 189: // Chrome '-'
PDFView.zoomOut();
handled = true;
break;
case 48: // '0'
PDFView.parseScale(kDefaultScale, true);
handled = true;
break;
}
}
if (handled) {
evt.preventDefault();

Loading…
Cancel
Save