Index: src/js/_enqueues/admin/post.js
===================================================================
--- src/js/_enqueues/admin/post.js	(revision 58366)
+++ src/js/_enqueues/admin/post.js	(working copy)
@@ -434,25 +434,6 @@
 		$previewField.val('');
 	});
 
-	// This code is meant to allow tabbing from Title to Post content.
-	$('#title').on( 'keydown.editor-focus', function( event ) {
-		var editor;
-
-		if ( event.keyCode === 9 && ! event.ctrlKey && ! event.altKey && ! event.shiftKey ) {
-			editor = typeof tinymce != 'undefined' && tinymce.get('content');
-
-			if ( editor && ! editor.isHidden() ) {
-				editor.focus();
-			} else if ( $textarea.length ) {
-				$textarea.trigger( 'focus' );
-			} else {
-				return;
-			}
-
-			event.preventDefault();
-		}
-	});
-
 	// Auto save new posts after a title is typed.
 	if ( $( '#auto_draft' ).val() ) {
 		$( '#title' ).on( 'blur', function() {
Index: src/js/_enqueues/vendor/tinymce/plugins/wordpress/plugin.js
===================================================================
--- src/js/_enqueues/vendor/tinymce/plugins/wordpress/plugin.js	(revision 58366)
+++ src/js/_enqueues/vendor/tinymce/plugins/wordpress/plugin.js	(working copy)
@@ -1074,6 +1074,15 @@
 			}
 		} );
 
+		editor.on( 'keydown', function( event ) {
+			if ( event.keyCode === 9 && event.shiftKey ) {
+				var toolbar = editor.theme.panel.find( '.toolbar:not(.menubar)' )[0];
+				if ( toolbar ) {
+					toolbar.focus( true );
+				}
+			}
+		});
+
 		editor.on( 'nodechange', function( event ) {
 			var collapsed = editor.selection.isCollapsed();
 
Index: src/js/_enqueues/wp/editor/base.js
===================================================================
--- src/js/_enqueues/wp/editor/base.js	(revision 58366)
+++ src/js/_enqueues/wp/editor/base.js	(working copy)
@@ -28,7 +28,7 @@
 				 *
 				 * @return {void}
 				 */
-				$$( document ).on( 'click', function( event ) {
+				$$( document ).on( 'click keydown', function( event ) {
 					var id, mode,
 						target = $$( event.target );
 
@@ -35,7 +35,7 @@
 					if ( target.hasClass( 'wp-switch-editor' ) ) {
 						id = target.attr( 'data-wp-editor-id' );
 						mode = target.hasClass( 'switch-tmce' ) ? 'tmce' : 'html';
-						switchEditor( id, mode );
+						switchEditor( id, mode, event );
 					}
 				});
 			}
@@ -70,9 +70,10 @@
 		 *
 		 * @param {string} id The id of the editor you want to change the editor mode for. Default: `content`.
 		 * @param {string} mode The mode you want to switch to. Default: `toggle`.
+		 * @param {Event}  event DOM Event triggering the switch.
 		 * @return {void}
 		 */
-		function switchEditor( id, mode ) {
+		function switchEditor( id, mode, event ) {
 			id = id || 'content';
 			mode = mode || 'toggle';
 
@@ -79,6 +80,8 @@
 			var editorHeight, toolbarHeight, iframe,
 				editor = tinymce.get( id ),
 				wrap = $$( '#wp-' + id + '-wrap' ),
+				htmlSwitch = wrap.find( '.switch-tmce' ),
+				tmceSwitch = wrap.find( '.switch-html' ),
 				$textarea = $$( '#' + id ),
 				textarea = $textarea[0];
 
@@ -90,6 +93,7 @@
 				}
 			}
 
+			var isKeyboardActivation = ( event.which === 13 || event.which === 32 ) ? true : false;
 			if ( 'tmce' === mode || 'tinymce' === mode ) {
 				// If the editor is visible we are already in `tinymce` mode.
 				if ( editor && ! editor.isHidden() ) {
@@ -103,16 +107,7 @@
 
 				editorHeight = parseInt( textarea.style.height, 10 ) || 0;
 
-				var keepSelection = false;
-				if ( editor ) {
-					keepSelection = editor.getParam( 'wp_keep_scroll_position' );
-				} else {
-					keepSelection = window.tinyMCEPreInit.mceInit[ id ] &&
-									window.tinyMCEPreInit.mceInit[ id ].wp_keep_scroll_position;
-				}
-
-				if ( keepSelection ) {
-					// Save the selection.
+				if ( ! isKeyboardActivation ) {
 					addHTMLBookmarkInTextAreaContent( $textarea );
 				}
 
@@ -130,8 +125,8 @@
 						}
 					}
 
-					if ( editor.getParam( 'wp_keep_scroll_position' ) ) {
-						// Restore the selection.
+					// Restore the selection.
+					if ( ! isKeyboardActivation ) {
 						focusHTMLBookmarkInVisualEditor( editor );
 					}
 				} else {
@@ -139,6 +134,8 @@
 				}
 
 				wrap.removeClass( 'html-active' ).addClass( 'tmce-active' );
+				tmceSwitch.attr( 'aria-pressed', false );
+				htmlSwitch.attr( 'aria-pressed', true );
 				$textarea.attr( 'aria-hidden', true );
 				window.setUserSetting( 'editor', 'tinymce' );
 
@@ -168,9 +165,7 @@
 
 					var selectionRange = null;
 
-					if ( editor.getParam( 'wp_keep_scroll_position' ) ) {
-						selectionRange = findBookmarkedPosition( editor );
-					}
+					selectionRange = findBookmarkedPosition( editor );
 
 					editor.hide();
 
@@ -184,6 +179,8 @@
 				}
 
 				wrap.removeClass( 'tmce-active' ).addClass( 'html-active' );
+				tmceSwitch.attr( 'aria-pressed', true );
+				htmlSwitch.attr( 'aria-pressed', false );
 				$textarea.attr( 'aria-hidden', false );
 				window.setUserSetting( 'editor', 'html' );
 			}
@@ -520,7 +517,7 @@
 		 * Focuses the selection markers in Visual mode.
 		 *
 		 * The method checks for existing selection markers inside the editor DOM (Visual mode)
-		 * and create a selection between the two nodes using the DOM `createRange` selection API
+		 * and create a selection between the two nodes using the DOM `createRange` selection API.
 		 *
 		 * If there is only a single node, select only the single node through TinyMCE's selection API
 		 *
@@ -545,9 +542,7 @@
 				}
 			}
 
-			if ( editor.getParam( 'wp_keep_scroll_position' ) ) {
-				scrollVisualModeToStartElement( editor, startNode );
-			}
+			scrollVisualModeToStartElement( editor, startNode );
 
 			removeSelectionMarker( startNode );
 			removeSelectionMarker( endNode );
Index: src/wp-admin/edit-form-advanced.php
===================================================================
--- src/wp-admin/edit-form-advanced.php	(revision 58366)
+++ src/wp-admin/edit-form-advanced.php	(working copy)
@@ -621,13 +621,11 @@
 		array(
 			'_content_editor_dfw' => $_content_editor_dfw,
 			'drag_drop_upload'    => true,
-			'tabfocus_elements'   => 'content-html,save-post',
 			'editor_height'       => 300,
 			'tinymce'             => array(
 				'resize'                  => false,
 				'wp_autoresize_on'        => $_wp_editor_expand,
 				'add_unload_trigger'      => false,
-				'wp_keep_scroll_position' => ! $is_IE,
 			),
 		)
 	);
Index: src/wp-includes/class-wp-editor.php
===================================================================
--- src/wp-includes/class-wp-editor.php	(revision 58366)
+++ src/wp-includes/class-wp-editor.php	(working copy)
@@ -188,10 +188,12 @@
 				if ( 'html' !== $default_editor ) {
 					$default_editor = 'tinymce';
 				}
+				$tmce_active = ( 'html' === $default_editor ) ? ' aria-pressed="true"' : '';
+				$html_active = ( 'html' === $default_editor ) ? '' : ' aria-pressed="true"';
 
-				$buttons .= '<button type="button" id="' . $editor_id_attr . '-tmce" class="wp-switch-editor switch-tmce"' .
+				$buttons .= '<button type="button" id="' . $editor_id_attr . '-tmce"' . $html_active . ' class="wp-switch-editor switch-tmce"' .
 					' data-wp-editor-id="' . $editor_id_attr . '">' . _x( 'Visual', 'Name for the Visual editor tab' ) . "</button>\n";
-				$buttons .= '<button type="button" id="' . $editor_id_attr . '-html" class="wp-switch-editor switch-html"' .
+				$buttons .= '<button type="button" id="' . $editor_id_attr . '-html"' . $tmce_active . ' class="wp-switch-editor switch-html"' .
 					' data-wp-editor-id="' . $editor_id_attr . '">' . _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ) . "</button>\n";
 			} else {
 				$default_editor = 'tinymce';
@@ -1113,7 +1115,6 @@
 			'end_container_on_empty_block' => true,
 			'wpeditimage_html5_captions'   => true,
 			'wp_lang_attr'                 => get_bloginfo( 'language' ),
-			'wp_keep_scroll_position'      => false,
 			'wp_shortcut_labels'           => wp_json_encode( $shortcut_labels ),
 		);
 
Index: src/wp-includes/css/editor.css
===================================================================
--- src/wp-includes/css/editor.css	(revision 58366)
+++ src/wp-includes/css/editor.css	(working copy)
@@ -1140,12 +1140,6 @@
 	color: #1d2327;
 }
 
-.wp-switch-editor:active,
-.html-active .switch-html:focus,
-.tmce-active .switch-tmce:focus {
-	box-shadow: none;
-}
-
 .wp-switch-editor:active {
 	background-color: #f6f7f7;
 	box-shadow: none;
