Index: wp-includes/js/media-editor.js
===================================================================
--- wp-includes/js/media-editor.js	(revision 22839)
+++ wp-includes/js/media-editor.js	(working copy)
@@ -491,11 +491,15 @@
 				// If the workflow exists, just open it.
 				if ( workflow ) {
 					workflow.open();
+					$( '.media-modal #upload' ).focus();
 					return;
 				}
 
 				// Initialize the editor's workflow if we haven't yet.
 				wp.media.editor.add( editor );
+
+				// Add focus to modal
+				$( '.media-modal #upload' ).focus();
 			});
 		}
 	};
Index: wp-includes/js/media-views.js
===================================================================
--- wp-includes/js/media-views.js	(revision 22839)
+++ wp-includes/js/media-views.js	(working copy)
@@ -1641,7 +1641,8 @@
 		template: media.template('media-modal'),
 
 		events: {
-			'click .media-modal-backdrop, .media-modal-close' : 'closeHandler'
+			'click .media-modal-backdrop, .media-modal-close' : 'closeHandler',
+			'keyup' : 'keyboard'
 		},
 
 		initialize: function() {
@@ -1707,6 +1708,16 @@
 			// Set and render the content.
 			this.options.$content = ( $content instanceof Backbone.View ) ? $content.$el : $content;
 			return this.render();
+		},
+
+		keyboard: function( event ) {
+
+			if ( 27 !== event.which ) // Esc
+				return;
+
+			this.close();
+
+			event.preventDefault();
 		}
 	});
 
@@ -2365,7 +2376,8 @@
 		className: 'media-menu-item',
 
 		events: {
-			'click': 'click'
+			'click': 'click',
+			'keyup': 'keyboard'
 		},
 
 		click: function() {
@@ -2377,7 +2389,19 @@
 				this.controller.state( options.id );
 		},
 
+		keyboard: function( event ) {
+			if ( 13 !== event.which ) // Enter
+				return;
+
+			this.click();
+
+			event.preventDefault();
+		},
+
 		render: function() {
+			
+			this.$el.attr('tabIndex', '0');
+			
 			var options = this.options;
 
 			if ( options.text )
