Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5377)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5378)
@@ -1171,4 +1171,25 @@
         }
         return rv;
+    }
+
+    /**
+     * Get selected primitives, while draw action is in progress.
+     *
+     * While drawing a way, technically the last node is selected.
+     * This is inconvenient when the user tries to add tags to the
+     * way using a keyboard shortcut. In that case, this method returns
+     * the current way as selection, to work around this issue.
+     * Otherwise the normal selection of the current data layer is returned.
+     */
+    public Collection<OsmPrimitive> getInProgressSelection() {
+        DataSet ds = getCurrentDataSet();
+        if (ds == null) return null;
+        if (currentBaseNode != null && !ds.getSelected().isEmpty()) {
+            Way continueFrom = getWayForNode(currentBaseNode);
+            if (alt && continueFrom != null) {
+                return Collections.<OsmPrimitive>singleton(continueFrom);
+            }
+        }
+        return ds.getSelected();
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 5377)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 5378)
@@ -74,4 +74,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.actions.mapmode.DrawAction;
 import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
@@ -462,7 +463,12 @@
      */
     void add() {
-        DataSet ds = Main.main.getCurrentDataSet();
-        if (ds == null) return;
-        Collection<OsmPrimitive> sel = ds.getSelected();
+        Collection<OsmPrimitive> sel;
+        if (Main.map.mapMode instanceof DrawAction) {
+            sel = ((DrawAction) Main.map.mapMode).getInProgressSelection();
+        } else {
+            DataSet ds = Main.main.getCurrentDataSet();
+            if (ds == null) return;
+            sel = ds.getSelected();
+        }
         if (sel.isEmpty()) return;
 
