Index: /CKEditor/branches/features/aria/_source/core/config.js
===================================================================
--- /CKEditor/branches/features/aria/_source/core/config.js	(revision 4964)
+++ /CKEditor/branches/features/aria/_source/core/config.js	(revision 4965)
@@ -213,5 +213,5 @@
 	 * @example
 	 */
-	plugins : 'about,accessibility,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,div,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,showborders,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
+	plugins : 'about,accessibility,a11yhelp,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,div,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,showborders,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc',
 
 	/**
@@ -297,5 +297,77 @@
 	 * config.baseFloatZIndex = 2000
 	 */
-	baseFloatZIndex : 10000
+	baseFloatZIndex : 10000,
+
+	/**
+	 * A list of keystrokes to be blocked if not defined in the {@link CKEDITOR.config.keystrokes}
+	 * setting. In this way it is possible to block the default browser behavior
+	 * for those keystrokes.
+	 * @type Array
+	 * @default (see example)
+	 * @example
+	 * // This is actually the default value.
+	 * config.blockedKeystrokes =
+	 * [
+	 *     CKEDITOR.CTRL + 66 &#47;*B*&#47;,
+	 *     CKEDITOR.CTRL + 73 &#47;*I*&#47;,
+	 *     CKEDITOR.CTRL + 85 &#47;*U*&#47;
+	 * ];
+	 */
+	blockedKeystrokes :
+	[
+		CKEDITOR.CTRL + 66 /*B*/,
+		CKEDITOR.CTRL + 73 /*I*/,
+		CKEDITOR.CTRL + 85 /*U*/
+	],
+
+	/**
+	 * A list associating keystrokes to editor commands. Each element in the list
+	 * is an array where the first item is the keystroke, and the second is the
+	 * name of the command to be executed.
+	 * @type Array
+	 * @default (see example)
+	 * @example
+	 * // This is actually the default value.
+	 * config.keystrokes =
+	 * [
+	 *     [ CKEDITOR.ALT + 121 &#47;*F10*&#47;, 'toolbarFocus' ],
+	 *     [ CKEDITOR.ALT + 122 &#47;*F11*&#47;, 'elementsPathFocus' ],
+	 *
+	 *     [ CKEDITOR.SHIFT + 121 &#47;*F10*&#47;, 'contextMenu' ],
+	 *
+	 *     [ CKEDITOR.CTRL + 90 &#47;*Z*&#47;, 'undo' ],
+	 *     [ CKEDITOR.CTRL + 89 &#47;*Y*&#47;, 'redo' ],
+	 *     [ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 &#47;*Z*&#47;, 'redo' ],
+	 *
+	 *     [ CKEDITOR.CTRL + 76 &#47;*L*&#47;, 'link' ],
+	 *
+	 *     [ CKEDITOR.CTRL + 66 &#47;*B*&#47;, 'bold' ],
+	 *     [ CKEDITOR.CTRL + 73 &#47;*I*&#47;, 'italic' ],
+	 *     [ CKEDITOR.CTRL + 85 &#47;*U*&#47;, 'underline' ],
+	 *
+	 *     [ CKEDITOR.ALT + 109 &#47;*-*&#47;, 'toolbarCollapse' ]
+	 * ];
+	 */
+	keystrokes :
+	[
+		[ CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],
+		[ CKEDITOR.ALT + 122 /*F11*/, 'elementsPathFocus' ],
+
+		[ CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
+		[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
+
+		[ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],
+		[ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],
+		[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],
+
+		[ CKEDITOR.CTRL + 76 /*L*/, 'link' ],
+
+		[ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
+		[ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
+		[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],
+
+		[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ],
+		[ CKEDITOR.ALT + 48 /*-*/, 'a11yHelp' ]
+	]
 };
 
Index: /CKEditor/branches/features/aria/_source/lang/en.js
===================================================================
--- /CKEditor/branches/features/aria/_source/lang/en.js	(revision 4964)
+++ /CKEditor/branches/features/aria/_source/lang/en.js	(revision 4965)
@@ -707,4 +707,79 @@
 
 	toolbarCollapse : 'Collapse Toolbar',
-	toolbarExpand : 'Expand Toolbar'
+	toolbarExpand : 'Expand Toolbar',
+
+	accessibilityHelp :
+	{
+		title : 'Accessibility Instructions',
+		legend :
+		[
+			{
+				name : 'General',
+				items :
+						[
+							{
+								name : 'Editor Toolbar',
+								legend: 'Press ALT + F10 to navigate to the toolbar; Move to next toolbar button with TAB or RIGHT ARROW; Move to previous button with  SHIFT+TAB or LEFT ARROW; Press SPACE or ENTER to trigger the toolbar button.'
+							},
+
+							{
+								name : 'Editor Element Pathbar',
+								legend : 'Press ALT + F10 to navigate to the elements pathbar; Move to next element button with TAB or RIGHT ARROW; Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.'
+							},
+
+							{
+								name : 'Editor Context Menu',
+								legend : 'Press SHIFT + F10 or CTRL + SHIFT + F10 or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW; Move to previous option with  SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option.' +
+										 'Open sub-menu of current option wtih SPACE or ENTER or RIGHT ARROW; Go back to parent menu item with ESC or LEFT ARROW;' +
+										 'Close context menu with ESC.'
+							},
+
+							{
+								name : 'Editor Dialog',
+								legend : 'Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog.' +
+										 'For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW; Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.'
+							},
+
+							{
+								name : 'Editor List Box',
+								legend : 'Inside a list-box, move to next list item with TAB OR DOWN ARROW; Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.'
+							}
+						]
+			},
+			{
+				name : 'Commands',
+				items :
+						[
+							{
+								name : ' Undo command',
+								legend : 'Press CTRL + Z'
+							},
+							{
+								name : ' Redo command',
+								legend : 'Press CTRL + Y or CTRL + SHIFT + Y'
+							},
+							{
+								name : ' Bold command',
+								legend : 'Press CTRL + B'
+							},
+							{
+								name : ' Italic command',
+								legend : 'Press CTRL + I'
+							},
+							{
+								name : ' Underline command',
+								legend : 'Press CTRL + U'
+							},
+							{
+								name : ' Link command',
+								legend : 'Press CTRL + L'
+							},
+							{
+								name : ' Toolbar Collapse command',
+								legend : 'Press ALT + -'
+							}
+						]
+			}
+		]
+	}
 };
Index: /CKEditor/branches/features/aria/_source/plugins/a11yhelp/dialogs/a11yhelp.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/a11yhelp/dialogs/a11yhelp.js	(revision 4965)
+++ /CKEditor/branches/features/aria/_source/plugins/a11yhelp/dialogs/a11yhelp.js	(revision 4965)
@@ -0,0 +1,94 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.dialog.add( 'a11yHelp', function( editor )
+{
+	var lang = editor.lang.accessibilityHelp;
+
+	// Create the help list directly from lang file entries. 
+	function buildHelpContents()
+	{
+		var pageTpl = '<div class="cke_accessibility_legend" role="document" tabIndex="-1">%1</div>',
+			 sectionTpl = '<h1>%1</h1><dl>%2</dl>',
+			 itemTpl = '<dt>%1</dt><dd>%2</dd>';
+
+		var pageHtml = [],
+			sections = lang.legend,
+			sectionLength = sections.length;
+
+		for ( var i = 0; i < sectionLength; i++ )
+		{
+			var section = sections[ i ],
+				sectionHtml = [],
+				items = section.items,
+				itemsLength = items.length;
+
+			for ( var j = 0; j < itemsLength; j++ )
+			{
+				var item = items[ j ],
+					itemHtml;
+				itemHtml = itemTpl.replace( '%1', item.name ).replace( '%2', item.legend );
+				sectionHtml.push( itemHtml );
+			}
+
+			pageHtml.push( sectionTpl.replace( '%1', section.name ).replace( '%2', sectionHtml.join( '' ) ) );
+		}
+
+		return pageTpl.replace( '%1', pageHtml.join( '' ) );
+	}
+
+	return {
+		title : lang.title,
+		minWidth : 600,
+		minHeight : 400,
+		contents : [
+			{
+				id : 'info',
+				label : editor.lang.common.generalTab,
+				expand : true,
+				elements :
+				[
+					{
+						type : 'html',
+						id : 'legends',
+						focus : function() {},
+						html : buildHelpContents() +
+							'<style type="text/css">' +
+							'.cke_accessibility_legend' +
+							'{' +
+								'width:600px;' +
+								'height:400px;' +
+								'padding-right:5px;' +
+								'overflow-y:auto;' +
+								'overflow-x:hidden;' +
+							'}' +
+							'.cke_accessibility_legend h1' +
+							'{' +
+								'font-size: 20px;' +
+								'border-bottom: 1px solid #AAA;' +
+								'margin: 5px 0px 15px;' +
+							'}' +
+							'.cke_accessibility_legend dl' +
+							'{' +
+								'margin-left: 5px;' +
+							'}' +
+							'.cke_accessibility_legend dt' +
+							'{' +
+								'font-size: 13px;' +
+								'font-weight: bold;' +
+							'}' +
+							'.cke_accessibility_legend dd' +
+							'{' +
+								'white-space:normal;' +
+								'margin:10px' +
+							'}' +
+						'</style>'
+					}
+				]
+			}
+		],
+		buttons : [ CKEDITOR.dialog.cancelButton ]
+	};
+} );
Index: /CKEditor/branches/features/aria/_source/plugins/a11yhelp/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/a11yhelp/plugin.js	(revision 4965)
+++ /CKEditor/branches/features/aria/_source/plugins/a11yhelp/plugin.js	(revision 4965)
@@ -0,0 +1,25 @@
+/*
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+/**
+ * @fileOverview Bring better accessibility support to browsers that has limited support for modern technologies (e.g. ARIA).
+ */
+
+( function()
+{
+	CKEDITOR.plugins.add( 'a11yhelp',
+	{
+		init : function( editor )
+		{
+			var command = new CKEDITOR.dialogCommand( 'a11yHelp' );
+			command.modes = { wysiwyg:1, source:1 };
+			command.canUndo = false;
+
+			editor.addCommand( 'a11yHelp', command );
+			CKEDITOR.dialog.add( 'a11yHelp', this.path + 'dialogs/a11yhelp.js' );
+		}
+	});
+
+} )( );
Index: /CKEditor/branches/features/aria/_source/plugins/keystrokes/plugin.js
===================================================================
--- /CKEditor/branches/features/aria/_source/plugins/keystrokes/plugin.js	(revision 4964)
+++ /CKEditor/branches/features/aria/_source/plugins/keystrokes/plugin.js	(revision 4965)
@@ -1,3 +1,3 @@
-﻿/*
+/*
 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -146,73 +146,2 @@
 	};
 })();
-
-/**
- * A list of keystrokes to be blocked if not defined in the {@link CKEDITOR.config.keystrokes}
- * setting. In this way it is possible to block the default browser behavior
- * for those keystrokes.
- * @type Array
- * @default (see example)
- * @example
- * // This is actually the default value.
- * config.blockedKeystrokes =
- * [
- *     CKEDITOR.CTRL + 66 &#47;*B*&#47;,
- *     CKEDITOR.CTRL + 73 &#47;*I*&#47;,
- *     CKEDITOR.CTRL + 85 &#47;*U*&#47;
- * ];
- */
-CKEDITOR.config.blockedKeystrokes =
-[
-	CKEDITOR.CTRL + 66 /*B*/,
-	CKEDITOR.CTRL + 73 /*I*/,
-	CKEDITOR.CTRL + 85 /*U*/
-];
-
-/**
- * A list associating keystrokes to editor commands. Each element in the list
- * is an array where the first item is the keystroke, and the second is the
- * name of the command to be executed.
- * @type Array
- * @default (see example)
- * @example
- * // This is actually the default value.
- * config.keystrokes =
- * [
- *     [ CKEDITOR.ALT + 121 &#47;*F10*&#47;, 'toolbarFocus' ],
- *     [ CKEDITOR.ALT + 122 &#47;*F11*&#47;, 'elementsPathFocus' ],
- *
- *     [ CKEDITOR.SHIFT + 121 &#47;*F10*&#47;, 'contextMenu' ],
- *
- *     [ CKEDITOR.CTRL + 90 &#47;*Z*&#47;, 'undo' ],
- *     [ CKEDITOR.CTRL + 89 &#47;*Y*&#47;, 'redo' ],
- *     [ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 &#47;*Z*&#47;, 'redo' ],
- *
- *     [ CKEDITOR.CTRL + 76 &#47;*L*&#47;, 'link' ],
- *
- *     [ CKEDITOR.CTRL + 66 &#47;*B*&#47;, 'bold' ],
- *     [ CKEDITOR.CTRL + 73 &#47;*I*&#47;, 'italic' ],
- *     [ CKEDITOR.CTRL + 85 &#47;*U*&#47;, 'underline' ],
- *
- *     [ CKEDITOR.ALT + 109 &#47;*-*&#47;, 'toolbarCollapse' ]
- * ];
- */
-CKEDITOR.config.keystrokes =
-[
-	[ CKEDITOR.ALT + 121 /*F10*/, 'toolbarFocus' ],
-	[ CKEDITOR.ALT + 122 /*F11*/, 'elementsPathFocus' ],
-
-	[ CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
-	[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ],
-
-	[ CKEDITOR.CTRL + 90 /*Z*/, 'undo' ],
-	[ CKEDITOR.CTRL + 89 /*Y*/, 'redo' ],
-	[ CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/, 'redo' ],
-
-	[ CKEDITOR.CTRL + 76 /*L*/, 'link' ],
-
-	[ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
-	[ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
-	[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],
-
-	[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ]
-];
