Index: trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 1156)
+++ trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 1157)
@@ -328,5 +328,11 @@
     // this is used to register a shortcut that was read from the preferences
     private static void registerShortcut(Shortcut sc) {
-        registerShortcut(sc.getShortText(), sc.getLongText(), sc.getRequestedKey(), sc.getRequestedGroup(), sc.getAssignedModifier(), sc);
+        // put a user configured shortcut in as-is -- unless there's a conflict
+        if(sc.getAssignedUser() && findShortcut(sc.getAssignedKey(),
+        sc.getAssignedModifier()) == null)
+            shortcuts.put(sc.getShortText(), sc);
+        else
+            registerShortcut(sc.getShortText(), sc.getLongText(), sc.getRequestedKey(),
+            sc.getRequestedGroup(), sc.getAssignedModifier(), sc);
     }
 
@@ -394,5 +400,5 @@
                 defaultModifier = modifier;
         }
-        else if (defaultModifier == null) { // garbage in, no shortcurt out
+        else if (defaultModifier == null) { // garbage in, no shortcut out
             defaultModifier = groups.get(GROUP_NONE + GROUPS_DEFAULT);
         }
@@ -428,4 +434,5 @@
             potentialShortcut = new Shortcut(shortText, longText, requestedKey, requestedGroup, requestedKey, defaultModifier, true, false);
         }
+
         shortcuts.put(shortText, potentialShortcut);
         return potentialShortcut;
