diff --git a/css/admin.toolbar.css b/css/admin.toolbar.css
index 7d4a349..b47cf1d 100644
--- a/css/admin.toolbar.css
+++ b/css/admin.toolbar.css
@@ -6,7 +6,7 @@
   background: #fff;
 }
 
-.toolbar-tray-horizontal .menu-item:focus {
+.toolbar-tray-horizontal .menu-item a:focus {
   background: #abeae4;
 }
 
@@ -82,6 +82,28 @@
   margin: -40px 0 0 197px;
 }
 
+/* Make the toolbar menu navigable with keyboard */
+ul.toolbar-menu li.menu-item--expanded.focused > ul,
+.toolbar-tray-horizontal ul.toolbar-menu li.menu-item--expanded.focused > ul {
+  display: block;
+  position: absolute;
+  width: 200px;
+  box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.4);
+  z-index: 1;
+}
+
+.toolbar-tray-horizontal ul li.menu-item--expanded .menu-item.focused > ul {
+  display: block;
+}
+.toolbar-tray-horizontal ul li.menu-item--expanded .menu-item.focused ul {
+  margin: -39px 0 0 200px;
+}
+
+.toolbar-tray-horizontal li:hover ul li,
+.toolbar-tray-horizontal li.focused li {
+   float: none;
+ }
+
 .toolbar-tray-horizontal li.hover-intent ul li {
   float: none;
 }
@@ -110,6 +132,10 @@
   float: none !important;
 }
 
+[dir="rtl"] .toolbar-tray-horizontal li:focus ul li {
+  float: none !important;
+}
+
 [dir="rtl"] .toolbar .toolbar-menu ul .toolbar-icon {
   padding-left: 1.3333em;
 }
@@ -118,6 +144,10 @@
   margin: -40px 197px 0 0;
 }
 
+[dir="rtl"] .toolbar-tray-horizontal ul li.menu-item--expanded .menu-item:focus ul {
+  margin: -40px 197px 0 0;
+}
+
 [dir="rtl"] .toolbar-tray-horizontal ul li.menu-item--expanded ul li.menu-item--expanded {
   background-position: center left;
   background-image: url('../misc/icons/0074bd/chevron-left.svg');
diff --git a/js/admin_toolbar.js b/js/admin_toolbar.js
index d2c2e96..39801ec 100644
--- a/js/admin_toolbar.js
+++ b/js/admin_toolbar.js
@@ -2,6 +2,28 @@
   $(document).ready(function () {
     $('a.toolbar-icon').removeAttr('title');
 
+    // Make the toolbar menu navigable with keyboard.
+    $('ul.toolbar-menu li.menu-item--expanded a').on('focusin', function(){
+      $('li.menu-item--expanded').removeClass('focused');
+      $(this).parents('li.menu-item--expanded').addClass('focused');
+    });
+
+    $('ul.toolbar-menu li.menu-item a').keydown(function (e) {
+      if ((e.shiftKey && (e.keyCode || e.which) == 9)) {
+        if ($(this).parent('.menu-item').prev().hasClass('menu-item--expanded')){
+          $(this).parent('.menu-item').prev().addClass('focused');
+        }
+      }
+    });
+
+    $('body').on('click', function(){
+      $('li.menu-item--expanded').removeClass('focused');
+    });
+
+    $('body').hover(function () {
+      $('li.menu-item--expanded').removeClass('focused');
+    });
+
     $('.toolbar-tray-horizontal li.menu-item--expanded, .toolbar-tray-horizontal ul li.menu-item--expanded .menu-item').hoverIntent({
       over: function () {
         // At the current depth, we should delete all "hover-intent" classes.
