Index: _source/plugins/sourcearea/plugin.js
===================================================================
--- _source/plugins/sourcearea/plugin.js	(revision 3207)
+++ _source/plugins/sourcearea/plugin.js	(working copy)
@@ -74,6 +74,33 @@
 							// Set the <textarea> value.
 							this.loadData( data );
 
+							// Adds handlers for tab and shift-tab.
+							textarea.on( 'keydown', function( evt )
+								{
+									if ( evt.data.$.keyCode != 9 )
+										return;
+
+									if ( evt.data.$.metaKey || evt.data.$.ctrlKey || evt.data.$.altKey )
+										return;
+
+									if ( evt.data.$.shiftKey )
+									{
+										if ( !editor.config.shiftTabFocus )
+											return;
+
+										CKEDITOR.document.getById( editor.config.shiftTabFocus ).focus();
+									}
+									else
+									{
+										if ( !editor.config.tabFocus )
+											return;
+
+										CKEDITOR.document.getById( editor.config.tabFocus ).focus();
+									}
+
+									evt.data.preventDefault();
+								} );
+
 							editor.mode = 'source';
 							editor.fire( 'mode' );
 						},
Index: _source/plugins/wysiwygarea/plugin.js
===================================================================
--- _source/plugins/wysiwygarea/plugin.js	(revision 3207)
+++ _source/plugins/wysiwygarea/plugin.js	(working copy)
@@ -259,6 +259,33 @@
 
 						isLoadingData = false;
 
+						// Adds handlers for tab and shift-tab.
+						domDocument.on( 'keydown', function( evt )
+							{
+								if ( evt.data.$.keyCode != 9 )
+									return;
+
+								if ( evt.data.$.metaKey || evt.data.$.ctrlKey || evt.data.$.altKey )
+									return;
+
+								if ( evt.data.$.shiftKey )
+								{
+									if ( !editor.config.shiftTabFocus )
+										return;
+
+									CKEDITOR.document.getById( editor.config.shiftTabFocus ).focus();
+								}
+								else
+								{
+									if ( !editor.config.tabFocus )
+										return;
+
+									CKEDITOR.document.getById( editor.config.tabFocus ).focus();
+								}
+
+								evt.data.preventDefault();
+							} );
+
 						if ( isPendingFocus )
 							editor.focus();
 					};
Index: _source/core/config.js
===================================================================
--- _source/core/config.js	(revision 3207)
+++ _source/core/config.js	(working copy)
@@ -185,10 +185,29 @@
 	 * @type Number
 	 * @default 10000
 	 * @example
-	 * config.baseFloatZIndex = 2000
+	 * config.baseFloatZIndex = 2000;
 	 */
-	baseFloatZIndex : 10000
+	baseFloatZIndex : 10000,
 
+	/**
+	 * The id of the element to put focus on after user pressed Tab in editing
+	 * area.
+	 * @type String
+	 * @default null
+	 * @example
+	 * config.tabFocus = "nextInput";
+	 */
+	tabFocus : null,
+	
+	/**
+	 * The id of the element to put focus on after user pressed Shift-Tab in
+	 * editing area.
+	 * @type String
+	 * @default null
+	 * @example
+	 * config.tabFocus = "previousInput";
+	 */
+	shiftTabFocus : null
 };
 
 // PACKAGER_RENAME( CKEDITOR.config )
