Index: /CKEditor/branches/prototype/_source/plugins/button/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/button/plugin.js	(revision 2391)
+++ /CKEditor/branches/prototype/_source/plugins/button/plugin.js	(revision 2392)
@@ -149,4 +149,12 @@
 		}
 
+		// With Firefox, we need to force the button to redraw, otherwise it
+		// will remain in the focus state.
+		if ( env.gecko )
+		{
+			output.push(
+				' onblur="this.style.cssText = this.style.cssText;"' );
+		}
+
 		output.push(
 				' onkeydown="return CKEDITOR.ui.button._.keydown(', index, ', event);"' +
Index: /CKEditor/branches/prototype/_source/plugins/elementspath/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/elementspath/plugin.js	(revision 2391)
+++ /CKEditor/branches/prototype/_source/plugins/elementspath/plugin.js	(revision 2392)
@@ -69,4 +69,6 @@
 			editor.on( 'selectionChange', function()
 				{
+					var env = CKEDITOR.env;
+
 					var element = this.getSelection().getStartElement(),
 						html = [],
@@ -78,4 +80,19 @@
 							name = element.getName();
 
+						// Use this variable to add conditional stuff to the
+						// HTML (because we are doing it in reverse order... unshift).
+						var extra = '';
+
+						// Some browsers don't cancel key events in the keydown but in the
+						// keypress.
+						// TODO: Check if really needed for Gecko+Mac.
+						if ( env.opera || ( env.gecko && env.mac ) )
+							extra += ' onkeypress="return false;"';
+
+						// With Firefox, we need to force the button to redraw, otherwise it
+						// will remain in the focus state.
+						if ( env.gecko )
+							extra += ' onblur="this.style.cssText = this.style.cssText;"';
+
 						html.unshift(
 							'<a' +
@@ -85,9 +102,5 @@
 								' title="', editor.lang.elementsPath.eleTitle.replace( /%1/, name ), '"' +
 								' onkeydown="return CKEDITOR._.elementsPath.keydown(\'', this.name, '\',', index, ', event);"' +
-
-								// Some browsers don't cancel key events in the keydown but in the
-								// keypress. (Opera / Gecko+Mac)
-								' onkeypress="return false;"',
-
+								extra ,
 								' onclick="return CKEDITOR._.elementsPath.click(\'', this.name, '\',', index, ');">',
 									name,
Index: /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2391)
+++ /CKEditor/branches/prototype/_source/plugins/toolbar/plugin.js	(revision 2392)
@@ -104,4 +104,5 @@
 						return false;
 
+					case 13 :					// ENTER
 					case 32 :					// SPACE
 						item.execute();
