Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 4610)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 4611)
@@ -13,4 +13,5 @@
 import java.awt.Toolkit;
 import java.awt.event.AWTEventListener;
+import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
@@ -28,4 +29,5 @@
 import java.util.Set;
 
+import javax.swing.AbstractAction;
 import javax.swing.JOptionPane;
 
@@ -79,5 +81,6 @@
 
     private Shortcut extraShortcut;
-
+    private Shortcut backspaceShortcut;
+            
     public DrawAction(MapFrame mapFrame) {
         super(tr("Draw"), "node/autonode", tr("Draw nodes"),
@@ -176,4 +179,7 @@
         drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
         wayIsFinished = false;
+        
+        backspaceShortcut = Shortcut.registerShortcut("mapmode:backspace", tr("Backspace in Add mode"), KeyEvent.VK_BACK_SPACE, Shortcut.GROUP_EDIT);
+        Main.registerActionShortcut(new BackSpaceAction(), backspaceShortcut);
 
         Main.map.mapView.addMouseListener(this);
@@ -196,4 +202,6 @@
         Main.map.mapView.removeTemporaryLayer(this);
         DataSet.removeSelectionListener(this);
+        Main.unregisterActionShortcut(backspaceShortcut);
+
         removeHighlighting();
         try {
@@ -968,3 +976,29 @@
         Main.unregisterActionShortcut(extraShortcut);
     }
+    
+    public static class BackSpaceAction extends AbstractAction {
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            Main.main.undoRedo.undo();
+            Node n=null;
+            Command lastCmd=Main.main.undoRedo.commands.peekLast();  
+            if (lastCmd==null) return;
+            for (OsmPrimitive p: lastCmd.getParticipatingPrimitives()) {
+                if (p instanceof Node) {
+                    if (n==null) {
+                        n=(Node) p; // found one node
+                    }  else {
+                    // if more than 1 node were affected by previous command,
+                    // we have no way to continue, so we forget about found node
+                        n=null;
+                        break; 
+                    }
+                }
+            }
+            // select last added node - maybe we will continue drawing from it 
+            if (n!=null) getCurrentDataSet().addSelected(n);
+    }
+    }
+
 }
