]> git.parisson.com Git - pdf.js.git/commitdiff
Fix keyboard mapping in viewer
authorJulian Viereck <julian.viereck@gmail.com>
Tue, 10 Apr 2012 16:55:52 +0000 (09:55 -0700)
committerJulian Viereck <julian.viereck@gmail.com>
Thu, 12 Apr 2012 15:05:36 +0000 (08:05 -0700)
web/viewer.js

index 3587c96bdf3c35d3044394bc458e7e5aac926eda..9069ecf6c9bad802ba6b26d822dadf0d488c65dd 100644 (file)
@@ -1456,8 +1456,6 @@ window.addEventListener('pagechange', function pagechange(evt) {
 }, true);
 
 window.addEventListener('keydown', function keydown(evt) {
-  if (evt.ctrlKey || evt.altKey || evt.shiftKey || evt.metaKey)
-    return;
   var curElement = document.activeElement;
   if (curElement && curElement.tagName == 'INPUT')
     return;
@@ -1467,35 +1465,48 @@ window.addEventListener('keydown', function keydown(evt) {
       return; // ignoring if the 'controls' element is focused
     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;
-  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;
-    case 37: // left arrow
-    case 75: // 'k'
-    case 80: // 'p'
-      PDFView.page--;
-      handled = true;
-      break;
-    case 39: // right arrow
-    case 74: // 'j'
-    case 78: // 'n'
-      PDFView.page++;
-      handled = true;
-      break;
+  if (cmd == 0) { // no control key pressed at all.
+    switch (evt.keyCode) {
+      case 37: // left arrow
+      case 75: // 'k'
+      case 80: // 'p'
+        PDFView.page--;
+        handled = true;
+        break;
+      case 39: // right arrow
+      case 74: // 'j'
+      case 78: // 'n'
+        PDFView.page++;
+        handled = true;
+        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) {