Index: src/gnumeric-canvas.c
===================================================================
RCS file: /cvs/gnome/gnumeric/src/gnumeric-canvas.c,v
retrieving revision 1.344
diff -u -5 -r1.344 gnumeric-canvas.c
--- src/gnumeric-canvas.c	18 Sep 2005 02:39:53 -0000	1.344
+++ src/gnumeric-canvas.c	12 Nov 2005 13:47:52 -0000
@@ -443,10 +443,11 @@
 	else {
 		if (scg->grab_stack > 0)
 			return TRUE;
 
 		gcanvas->mask_state = event->state;
+		gcanvas->insert_decimal = event->keyval == GDK_KP_Decimal;
 		if (gtk_im_context_filter_keypress (gcanvas->im_context,event))
 			return TRUE;
 		switch (event->keyval) {
 		case GDK_Shift_L:   case GDK_Shift_R:
 		case GDK_Alt_L:     case GDK_Alt_R:
@@ -598,10 +599,13 @@
 	gint tmp_pos;
 
 	if (!wbcg_is_editing (wbcg) &&
 	    !wbcg_edit_start (wbcg, TRUE, TRUE))
 		return;
+
+	if (gcanvas->insert_decimal)
+		str = format_get_decimal ()->str;
 
 	if (gtk_editable_get_selection_bounds (editable, NULL, NULL))
 		gtk_editable_delete_selection (editable);
 	else {
 		tmp_pos = gtk_editable_get_position (editable);
Index: src/gnumeric-canvas.h
===================================================================
RCS file: /cvs/gnome/gnumeric/src/gnumeric-canvas.h,v
retrieving revision 1.88
diff -u -5 -r1.88 gnumeric-canvas.h
--- src/gnumeric-canvas.h	18 Sep 2005 02:39:53 -0000	1.88
+++ src/gnumeric-canvas.h	12 Nov 2005 13:47:52 -0000
@@ -41,10 +41,11 @@
 	guint      reseting_im :1;	/* quick hack to keep gtk_im_context_reset from starting an edit */
 	guint      mask_state;
 	guint      preedit_length;
 	GtkIMContext  *im_context;
 	PangoAttrList *preedit_attrs;
+	gboolean insert_decimal;
 };
 
 GType gnm_canvas_get_type (void);
 GnmCanvas *gnm_canvas_new (SheetControlGUI *scg, GnmPane *pane);
 
Index: src/widgets/gnumeric-expr-entry.c
===================================================================
RCS file: /cvs/gnome/gnumeric/src/widgets/gnumeric-expr-entry.c,v
retrieving revision 1.140
diff -u -5 -r1.140 gnumeric-expr-entry.c
--- src/widgets/gnumeric-expr-entry.c	21 Sep 2005 04:46:43 -0000	1.140
+++ src/widgets/gnumeric-expr-entry.c	12 Nov 2005 13:47:53 -0000
@@ -339,10 +339,21 @@
 			sv_update (sv);
 		}
 		return TRUE;
 	}
 
+	case GDK_KP_Decimal: {
+		GtkEditable *editable = GTK_EDITABLE (entry);
+		gint start, end;
+		gchar const* decimal = format_get_decimal ()->str;
+		gtk_editable_get_selection_bounds (editable, &start, &end);
+		gtk_editable_delete_text (editable, start, end);
+		gtk_editable_insert_text (editable, decimal, strlen (decimal), &start);
+		gtk_editable_set_position (editable, start);
+		return TRUE;
+	}
+
 	default:
 		break;
 	}
 
 	return FALSE;
