Index: core/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- core/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 5648)
+++ core/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(working copy)
@@ -2,7 +2,6 @@
 package org.openstreetmap.josm.gui.dialogs.properties;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.Component;
 import java.awt.Container;
@@ -130,7 +129,8 @@
             {
                 int row = propertyTable.rowAtPoint(e.getPoint());
                 if (row > -1) {
-                    editHelper.editProperty(row);
+                    boolean focusOnKey = (propertyTable.columnAtPoint(e.getPoint()) == 0);
+                    editHelper.editProperty(row, focusOnKey);
                 } else {
                     editHelper.addProperty();
                     btnAdd.requestFocusInWindow();
@@ -875,7 +875,7 @@
                 return;
             if (propertyTable.getSelectedRowCount() == 1) {
                 int row = propertyTable.getSelectedRow();
-                editHelper.editProperty(row);
+                editHelper.editProperty(row, false);
             } else if (membershipTable.getSelectedRowCount() == 1) {
                 int row = membershipTable.getSelectedRow();
                 editMembership(row);
Index: core/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- core/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 5648)
+++ core/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(working copy)
@@ -23,6 +23,8 @@
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 import java.awt.image.BufferedImage;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -137,8 +139,10 @@
     /**
     * Edit the value in the properties table row
     * @param row The row of the table from which the value is edited.
+     * @param focusOnKey Determines if the initial focus should be set on key instead of value
+     * @since 5653
     */
-    public void editProperty(final int row) {
+    public void editProperty(final int row, boolean focusOnKey) {
         changedKey = null;
         sel = Main.main.getCurrentDataSet().getSelected();
         if (sel.isEmpty()) return;
@@ -147,7 +151,7 @@
         objKey=key;
         
         final EditTagDialog editDialog = new EditTagDialog(key, row, 
-                (Map<String, Integer>) propertyData.getValueAt(row, 1));
+                (Map<String, Integer>) propertyData.getValueAt(row, 1), focusOnKey);
         editDialog.showDialog();
         if (editDialog.getValue() !=1 ) return;
         editDialog.performTagEdit();
@@ -209,10 +213,9 @@
     
         
     public class EditTagDialog extends AbstractTagsDialog {
-        String oldValue;
-        String key;
-        Map<String, Integer> m;
-        int row;
+        final String key;
+        final Map<String, Integer> m;
+        final int row;
 
         Comparator<AutoCompletionListItem> usedValuesAwareComparator = new Comparator<AutoCompletionListItem>() {
                 @Override
@@ -248,7 +251,7 @@
                 }
             };
         
-        private EditTagDialog(String key, int row, Map<String, Integer> map) {
+        private EditTagDialog(String key, int row, Map<String, Integer> map, final boolean initialFocusOnKey) {
             super(Main.parent, trn("Change value?", "Change values?", map.size()), new String[] {tr("OK"),tr("Cancel")});
             setButtonIcons(new String[] {"ok","cancel"});
             setCancelButton(2);
@@ -305,7 +308,7 @@
             
             setContent(mainPanel, false);
             
-            // TODO: Is it correct place for thois code - was in 
+            // TODO: Is it correct place for this code - was in 
             //  new JOptionPane(p, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION) {
             //    @Override public void selectInitialValue() {
             Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection();
@@ -318,6 +321,17 @@
                 values.requestFocusInWindow();
                 values.getEditor().selectAll();
             }
+            
+            addWindowListener(new WindowAdapter() {
+                @Override
+                public void windowOpened(WindowEvent e) {
+                    if (initialFocusOnKey) {
+                        keys.requestFocusInWindow();
+                    } else {
+                        values.requestFocusInWindow();
+                    }
+                }
+            });
         }
         
         /**
