Index: /CKEditor/trunk/_source/plugins/list/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 7582)
+++ /CKEditor/trunk/_source/plugins/list/plugin.js	(revision 7583)
@@ -974,4 +974,29 @@
 								evt.cancel();
 							}
+							else
+							{
+								var list = path.contains( listNodeNames ), li;
+								// Backspace pressed at the start of list, in first list item. (#9129)
+								if ( list && range.checkBoundaryOfElement( list, CKEDITOR.START ) )
+								{
+									li = path.contains( CKEDITOR.dtd.$listItem );
+
+									// Outdent the list item if:
+									// 1. Inside of empty list item.
+									// 2. No content to merge before.
+									if ( range.checkBoundaryOfElement( li, CKEDITOR.START ) )
+									{
+										previous = list.getPrevious( nonEmpty );
+										if ( range.checkBoundaryOfElement( li, CKEDITOR.END ) ||
+										     !previous ||
+										     // A special case of "no content to merge before"
+										     previous.is( 'table' ) )
+										{
+											editor.execCommand( 'outdent' );
+											evt.cancel();
+										}
+									}
+								}
+							}
 						}
 						else
Index: /CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 7582)
+++ /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 7583)
@@ -82,5 +82,11 @@
 		{
 			var body = range.document.getBody();
-			return !node.is( 'body' ) && body.getChildCount() == 1;
+
+			if ( node.isBlockBoundary() &&
+			     range.checkBoundaryOfElement( body, CKEDITOR.START ) &&
+			     range.checkBoundaryOfElement( body, CKEDITOR.END ) )
+			{
+				return true;
+			}
 		}
 
Index: /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 7582)
+++ /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 7583)
@@ -768,7 +768,7 @@
 						domDocument.getDocumentElement().addClass( domDocument.$.compatMode );
 						// Override keystroke behaviors.
-						editable && domDocument.on( 'keydown', function( evt )
+						editor.on( 'key', function( evt )
 						{
-							var keyCode = evt.data.getKeystroke();
+							var keyCode = evt.data.keyCode;
 
 							// Backspace OR Delete.
@@ -800,5 +800,5 @@
 									editor.fire( 'saveSnapshot' );
 
-									evt.data.preventDefault();
+									evt.cancel();
 								}
 								else
@@ -824,5 +824,5 @@
 										editor.fire( 'saveSnapshot' );
 
-										evt.data.preventDefault();
+										evt.cancel();
 									}
 									else if ( path.blockLimit.is( 'td' ) &&
@@ -844,5 +844,5 @@
 										editor.fire( 'saveSnapshot' );
 
-										evt.data.preventDefault();
+										evt.cancel();
 									}
 
@@ -866,5 +866,5 @@
 										range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd']( body );
 										range.select();
-										evt.data.preventDefault();
+										evt.cancel();
 									}
 								}
