Index: _source/plugins/keystrokes/plugin.js
===================================================================
--- _source/plugins/keystrokes/plugin.js	(revision 3516)
+++ _source/plugins/keystrokes/plugin.js	(working copy)
@@ -182,5 +182,7 @@
 
 	[ CKEDITOR.CTRL + 66 /*B*/, 'bold' ],
 	[ CKEDITOR.CTRL + 73 /*I*/, 'italic' ],
-	[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ]
+	[ CKEDITOR.CTRL + 85 /*U*/, 'underline' ],
+
+	[ CKEDITOR.ALT + 109 /*-*/, 'toolbarCollapse' ]
 ];
Index: _source/plugins/toolbar/plugin.js
===================================================================
--- _source/plugins/toolbar/plugin.js	(revision 3516)
+++ _source/plugins/toolbar/plugin.js	(working copy)
@@ -55,30 +55,6 @@
 	{
 		init : function( editor )
 		{
-			var collapserFn = CKEDITOR.tools.addFunction(
-				function( collapser )
-				{
-					var toolbox = collapser.getPrevious();
-					var contents = editor.getThemeSpace( 'contents' );
-					var toolboxContainer = toolbox.getParent();
-					var contentHeight = parseInt( contents.$.style.height, 10 );
-					var previousHeight = toolboxContainer.$.offsetHeight;
-
-					if ( toolbox.isVisible() )
-					{
-						toolbox.hide();
-						collapser.addClass( 'cke_toolbox_collapser_min' );
-					}
-					else
-					{
-						toolbox.show();
-						collapser.removeClass( 'cke_toolbox_collapser_min' );
-					}
-
-					var dy = toolboxContainer.$.offsetHeight - previousHeight;
-					contents.setStyle( 'height', ( contentHeight - dy ) + 'px' );
-				} );
-
 			var itemKeystroke = function( item, keystroke )
 			{
 				switch ( keystroke )
@@ -215,12 +191,47 @@
 
 						if ( editor.config.toolbarCanCollapse )
 						{
-							output.push( '<a class="cke_toolbox_collapser' );
+							var collapserFn = CKEDITOR.tools.addFunction(
+								function()
+								{
+									editor.execCommand( 'toolbarCollapse' );
+								} );
 
+							var collapserId = 'cke_' + CKEDITOR.tools.getNextNumber();
+
+							editor.addCommand( 'toolbarCollapse',
+								{
+									exec : function( editor )
+									{
+										var collapser = CKEDITOR.document.getById( collapserId );
+										var toolbox = collapser.getPrevious();
+										var contents = editor.getThemeSpace( 'contents' );
+										var toolboxContainer = toolbox.getParent();
+										var contentHeight = parseInt( contents.$.style.height, 10 );
+										var previousHeight = toolboxContainer.$.offsetHeight;
+
+										if ( toolbox.isVisible() )
+										{
+											toolbox.hide();
+											collapser.addClass( 'cke_toolbox_collapser_min' );
+										}
+										else
+										{
+											toolbox.show();
+											collapser.removeClass( 'cke_toolbox_collapser_min' );
+										}
+
+										var dy = toolboxContainer.$.offsetHeight - previousHeight;
+										contents.setStyle( 'height', ( contentHeight - dy ) + 'px' );
+									}
+								} );
+
+							output.push( '<a id="' + collapserId + '" class="cke_toolbox_collapser' );
+
 							if ( !expanded )
 								output.push( ' cke_toolbox_collapser_min' );
 
-							output.push( '" onclick="CKEDITOR.tools.callFunction(' + collapserFn + ',new CKEDITOR.dom.element(this))"></a>' );
+							output.push( '" onclick="CKEDITOR.tools.callFunction(' + collapserFn + ')"></a>' );
 						}
 
 						event.data.html += output.join( '' );
