diff --git a/htrace-webapp/src/main/web/app/search_results_view.js b/htrace-webapp/src/main/web/app/search_results_view.js
index 0a11eaa..318b78d 100644
--- a/htrace-webapp/src/main/web/app/search_results_view.js
+++ b/htrace-webapp/src/main/web/app/search_results_view.js
@@ -271,6 +271,7 @@
     var view = this;
     $("#resultsCanvas").off("mousedown");
     $("#resultsCanvas").on("mousedown", function(e) {
+      $("#resultsCanvas").focus();
       view.handleMouseDown(e);
     });
     $("#resultsCanvas").off("mouseup");
@@ -289,6 +290,21 @@
     $("#resultsCanvas").on("dblclick", function(e) {
       view.handleDblclick(e);
     });
+    // Keyboard events.  These events only fire if the canvas has focus.  So if
+    // you press delete when entering a time in the time dialog box, this will
+    // not fire.  Etc.
+    $("#resultsCanvas").off("keyup");
+    $("#resultsCanvas").on("keyup", function(e) {
+      if (e.keyCode == 46) { // delete key
+        view.clearHandler(false);
+        return false;
+      } else if (e.keyCode == 90) { // z key
+        view.zoomHandler();
+        return false;
+      } else {
+        return true;
+      }
+    });
     $("#resultsCanvas").off("contextmenu");
     $("#resultsCanvas").on("contextmenu", function(e) {
       return false;
@@ -302,6 +318,7 @@
     $("#resultsCanvas").off("mouseout");
     $("#resultsCanvas").off("mousemove");
     $("#resultsCanvas").off("dblclick");
+    $("#resultsCanvas").off("keyup");
     $("#resultsCanvas").off("contextmenu");
     Backbone.View.prototype.remove.apply(this, arguments);
   },
@@ -353,7 +370,7 @@
     // caller should invoke render()
   },
 
-  clearHandler: function() {
+  clearHandler: function(clearAllIfNoneSelected) {
     console.log("invoking clearHandler.");
     var toDelete = []
     var noneSelected = true;
@@ -386,6 +403,9 @@
         toDelete.push(model);
       }
     }
+    if (noneSelected && (!clearAllIfNoneSelected)) {
+      return;
+    }
     ids = [];
     for (var i = 0; i < toDelete.length; i++) {
       ids.push(toDelete[i].get("spanId"));
diff --git a/htrace-webapp/src/main/web/app/search_view.js b/htrace-webapp/src/main/web/app/search_view.js
index ffdba4c..aeb4273 100644
--- a/htrace-webapp/src/main/web/app/search_view.js
+++ b/htrace-webapp/src/main/web/app/search_view.js
@@ -48,7 +48,7 @@
   clearHandler: function(e){
     e.preventDefault();
 
-    this.resultsView.clearHandler();
+    this.resultsView.clearHandler(true);
   },
 
   doSearch: function(showDebug){
diff --git a/htrace-webapp/src/main/web/index.html b/htrace-webapp/src/main/web/index.html
index fccbded..29a899b 100644
--- a/htrace-webapp/src/main/web/index.html
+++ b/htrace-webapp/src/main/web/index.html
@@ -158,7 +158,8 @@
     </script>
 
     <script id="search-results-view-template" type="text/template">
-      <canvas id="resultsCanvas" class="htrace-canvas">
+      <!-- tabindex=1 is needed or else the canvas can never gain mouse focus on Chrome. -->
+      <canvas id="resultsCanvas" class="htrace-canvas" tabindex="1">
         <h2>Sorry, your browser does not support the HTML5 canvas element.  Please
         upgrade to a newer browser.</h2>
       </canvas>
