Index: _source/plugins/smiley/dialogs/smiley.js
===================================================================
--- _source/plugins/smiley/dialogs/smiley.js	(revision 3722)
+++ _source/plugins/smiley/dialogs/smiley.js	(working copy)
@@ -98,7 +98,6 @@
 				break;
 			// ENTER
 			// SPACE
-			case 13 :
 			case 32 :
 				onClick( { data: ev } );
 				ev.preventDefault();
@@ -159,7 +158,7 @@
 
 		html.push(
 			'<td class="cke_dark_background cke_hand cke_centered" style="vertical-align: middle;">' +
-				'<a href="#" class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
+				'<a href="javascript:void(0)" class="cke_smile" tabindex="-1" onkeydown="CKEDITOR.tools.callFunction( ', onKeydown, ', event, this );">',
 					'<img class="hand" title="', config.smiley_descriptions[i], '"' +
 						' cke_src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '" alt="', config.smiley_descriptions[i], '"',
 						' src="', CKEDITOR.tools.htmlEncode( config.smiley_path + images[ i ] ), '"',
Index: _source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- _source/plugins/specialchar/dialogs/specialchar.js	(revision 3722)
+++ _source/plugins/specialchar/dialogs/specialchar.js	(working copy)
@@ -12,8 +12,11 @@
 	var dialog;
 	var onChoice = function( evt )
 	{
-		var target = evt.data.getTarget(),
-			value;
+		var target, value;
+		if ( evt.data )
+			target = evt.data.getTarget();
+		else
+			target = new CKEDITOR.dom.element( evt );
 
 		if ( target.getName() == 'a' && ( value = target.getChild( 0 ).getHtml() ) )
 		{
@@ -23,6 +26,8 @@
 		}
 	};
 
+	var onClick = CKEDITOR.tools.addFunction( onChoice );
+
 	var focusedNode;
 
 	var onFocus = function( evt, target )
@@ -132,9 +137,8 @@
 				}
 				ev.preventDefault();
 				break;
-			// ENTER
 			// SPACE
-			case 13 :
+			// ENTER is already handled as onClick
 			case 32 :
 				onChoice( { data: ev } );
 				ev.preventDefault();
@@ -254,8 +258,9 @@
 					{
 						html.push(
 							'<td class="cke_dark_background">' +
-							'<a href="#" style="display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="', chars[i].replace( /&/g, '&amp;' ), '"' +
+							'<a href="javascript: void(0);" style="display: block; height: 1.25em; margin-top: 0.25em; text-align: center;" title="', chars[i].replace( /&/g, '&amp;' ), '"' +
 							' onkeydown="CKEDITOR.tools.callFunction( ' + onKeydown + ', event, this )"' +
+							' onclick="CKEDITOR.tools.callFunction(' + onClick + ', this); return false;"' +
 							' tabindex="-1">' +
 							'<span style="margin: 0 auto;">' +
 							chars[i] +
@@ -293,7 +298,6 @@
 								html : '',
 								onMouseover : onFocus,
 								onMouseout : onBlur,
-								onClick : onChoice,
 								focus : function()
 								{
 									var firstChar = this.getElement().getChild( [0, 0, 0, 0, 0] );
