Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 4982)
@@ -272,5 +272,5 @@
 
         registerActionShortcut(menu.help, Shortcut.registerShortcut("system:help", tr("Help"),
-                KeyEvent.VK_F1, Shortcut.GROUP_DIRECT));
+                KeyEvent.VK_F1, Shortcut.DIRECT));
 
         if (initListener != null) {
Index: trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 4982)
@@ -39,5 +39,5 @@
         super(tr("About"), "about", tr("Display the about screen."),
             Shortcut.registerShortcut("system:about", tr("About"),
-            KeyEvent.VK_F1, Shortcut.GROUP_DIRECT+Shortcut.GROUPS_ALT1), true);
+            KeyEvent.VK_F1, Shortcut.SHIFT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java	(revision 4982)
@@ -27,5 +27,5 @@
         super(tr("Add Node..."), "addnode", tr("Add a node by entering latitude / longitude or easting / northing."),
                 Shortcut.registerShortcut("addnode", tr("Edit: {0}", tr("Add Node...")),
-                        KeyEvent.VK_D, Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+                        KeyEvent.VK_D, Shortcut.SHIFT), true);
         putValue("help", ht("/Action/AddNode"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java	(revision 4982)
@@ -37,5 +37,5 @@
         super(tr("Align Nodes in Circle"), "aligncircle", tr("Move the selected nodes into a circle."),
                 Shortcut.registerShortcut("tools:aligncircle", tr("Tool: {0}", tr("Align Nodes in Circle")),
-                        KeyEvent.VK_O, Shortcut.GROUP_EDIT), true);
+                        KeyEvent.VK_O, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/AlignInCircle"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java	(revision 4982)
@@ -33,5 +33,5 @@
     public AlignInLineAction() {
         super(tr("Align Nodes in Line"), "alignline", tr("Move the selected nodes in to a line."),
-                Shortcut.registerShortcut("tools:alignline", tr("Tool: {0}", tr("Align Nodes in Line")), KeyEvent.VK_L, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:alignline", tr("Tool: {0}", tr("Align Nodes in Line")), KeyEvent.VK_L, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/AlignInLine"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 4982)
@@ -107,5 +107,5 @@
     public AutoScaleAction(String mode) {
         super(tr("Zoom to {0}", tr(mode)), "dialogs/autoscale/" + mode, tr("Zoom the view to {0}.", tr(mode)),
-                Shortcut.registerShortcut("view:zoom"+mode, tr("View: {0}", tr("Zoom to {0}", tr(mode))), getModeShortcut(mode), Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("view:zoom"+mode, tr("View: {0}", tr("Zoom to {0}", tr(mode))), getModeShortcut(mode), Shortcut.DIRECT), true);
         String modeHelp = Character.toUpperCase(mode.charAt(0)) + mode.substring(1);
         putValue("help", "Action/AutoScale/" + modeHelp);
Index: trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 4982)
@@ -35,5 +35,5 @@
                 Shortcut.registerShortcut("menu:windows:changesetdialog",
                         tr("Toggle visibility of Changeset Manager window"),
-                        KeyEvent.VK_C, Shortcut.GROUPS_ALT2 + Shortcut.GROUP_HOTKEY),
+                        KeyEvent.VK_C, Shortcut.ALT_CTRL),
                 true /* register shortcut */
         );
Index: trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java	(revision 4982)
@@ -37,5 +37,5 @@
             Shortcut.registerShortcut("system:closechangeset",
                 tr("File: {0}", tr("Closes open changesets")),
-                KeyEvent.VK_Q, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),
+                KeyEvent.VK_Q, Shortcut.ALT_CTRL),
             true
         );
Index: trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 4982)
@@ -53,5 +53,5 @@
     public CombineWayAction() {
         super(tr("Combine Way"), "combineway", tr("Combine several ways into one."),
-                Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/CombineWay"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/CopyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 4982)
@@ -23,5 +23,5 @@
         super(tr("Copy"), "copy",
                 tr("Copy selected objects to paste buffer."),
-                Shortcut.registerShortcut("system:copy", tr("Edit: {0}", tr("Copy")), KeyEvent.VK_C, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:copy", tr("Edit: {0}", tr("Copy")), KeyEvent.VK_C, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Copy"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java	(revision 4982)
@@ -18,5 +18,5 @@
                 tr("Copy coordinates of selected nodes to clipboard."),
                 Shortcut.registerShortcut("copy:coordinates", tr("Edit: {0}", tr("Copy Coordinates")),
-                KeyEvent.VK_C, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1),
+                KeyEvent.VK_C, Shortcut.CTRL_SHIFT),
                 false);
         putValue("toolbar", "copy/coordinates");
Index: trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 4982)
@@ -44,5 +44,5 @@
         super(tr("Create Circle"), "createcircle", tr("Create a circle from three selected nodes."),
             Shortcut.registerShortcut("tools:createcircle", tr("Tool: {0}", tr("Create Circle")),
-            KeyEvent.VK_O, Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+            KeyEvent.VK_O, Shortcut.SHIFT), true);
         putValue("help", ht("/Action/CreateCircle"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 4982)
@@ -49,5 +49,5 @@
         super(tr("Create multipolygon"), "multipoly_create", tr("Create multipolygon."),
             Shortcut.registerShortcut("tools:multipoly", tr("Tool: {0}", tr("Create multipolygon")),
-            KeyEvent.VK_A, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT2), true);
+            KeyEvent.VK_A, Shortcut.ALT_CTRL), true);
     }
     /**
Index: trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 4982)
@@ -17,5 +17,5 @@
     public DeleteAction() {
         super(tr("Delete"), "dialogs/delete", tr("Delete selected objects."),
-                Shortcut.registerShortcut("system:delete", tr("Edit: {0}", tr("Delete")), KeyEvent.VK_DELETE, Shortcut.GROUP_DIRECT), true);
+                Shortcut.registerShortcut("system:delete", tr("Edit: {0}", tr("Delete")), KeyEvent.VK_DELETE, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/Delete"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DistributeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DistributeAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/DistributeAction.java	(revision 4982)
@@ -31,5 +31,5 @@
         super(tr("Distribute Nodes"), "distribute", tr("Distribute the selected nodes to equal distances along a line."),
                 Shortcut.registerShortcut("tools:distribute", tr("Tool: {0}", tr("Distribute Nodes")), KeyEvent.VK_B,
-                Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+                Shortcut.SHIFT), true);
         putValue("help", ht("/Action/DistributeNodes"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadAction.java	(revision 4982)
@@ -28,5 +28,5 @@
     public DownloadAction() {
         super(tr("Download from OSM..."), "download", tr("Download map data from the OSM server."),
-                Shortcut.registerShortcut("file:download", tr("File: {0}", tr("Download from OSM...")), KeyEvent.VK_DOWN, Shortcut.GROUP_HOTKEY+Shortcut.GROUPS_ALT1), true);
+                Shortcut.registerShortcut("file:download", tr("File: {0}", tr("Download from OSM...")), KeyEvent.VK_DOWN, Shortcut.CTRL_SHIFT), true);
         putValue("help", ht("/Action/Download"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 4982)
@@ -59,5 +59,5 @@
     public DownloadPrimitiveAction() {
         super(tr("Download object..."), "downloadprimitive", tr("Download OSM object by ID."),
-                Shortcut.registerShortcut("system:download_primitive", tr("File: {0}", tr("Download object...")), KeyEvent.VK_O, Shortcut.GROUP_MENU + Shortcut.GROUPS_ALT1), true);
+                Shortcut.registerShortcut("system:download_primitive", tr("File: {0}", tr("Download object...")), KeyEvent.VK_O, Shortcut.CTRL_SHIFT), true);
         putValue("help", ht("/Action/DownloadObject"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 4982)
@@ -28,5 +28,5 @@
     public DownloadReferrersAction() {
         super(tr("Download parent ways/relations..."), "downloadreferrers", tr("Download objects referring to one of the selected objects"),
-                Shortcut.registerShortcut("file:downloadreferrers", tr("File: {0}", tr("Download parent ways/relations...")), KeyEvent.VK_D, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY), true);
+                Shortcut.registerShortcut("file:downloadreferrers", tr("File: {0}", tr("Download parent ways/relations...")), KeyEvent.VK_D, Shortcut.ALT_CTRL), true);
         putValue("help", ht("/Action/DownloadParentWaysAndRelation"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 4982)
@@ -20,5 +20,5 @@
         super(tr("Duplicate"), "duplicate",
                 tr("Duplicate selection by copy and immediate paste."),
-                Shortcut.registerShortcut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Duplicate"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/ExitAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ExitAction.java	(revision 4982)
@@ -22,5 +22,5 @@
     public ExitAction() {
         super(tr("Exit"), "exit", tr("Exit the application."),
-                Shortcut.registerShortcut("system:menuexit", tr("Exit"), KeyEvent.VK_Q, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:menuexit", tr("Exit"), KeyEvent.VK_Q, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Exit"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 4982)
@@ -40,5 +40,5 @@
                 Shortcut.registerShortcut("tools:followline", tr(
                 "Tool: {0}", tr("Follow")),
-                KeyEvent.VK_F, Shortcut.GROUP_EDIT), true);
+                KeyEvent.VK_F, Shortcut.DIRECT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 4982)
@@ -36,5 +36,5 @@
                 null, /* no icon */
                 tr("Toggle fullscreen view"),
-                Shortcut.registerShortcut("menu:view:fullscreen", tr("Toggle fullscreen view"),KeyEvent.VK_F11, Shortcut.GROUP_DIRECT),
+                Shortcut.registerShortcut("menu:view:fullscreen", tr("Toggle fullscreen view"),KeyEvent.VK_F11, Shortcut.DIRECT),
                 false /* register */
         );
Index: trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java	(revision 4982)
@@ -29,5 +29,5 @@
     public GpxExportAction() {
         super(tr("Export to GPX..."), "exportgpx", tr("Export the data to GPX file."),
-                Shortcut.registerShortcut("file:exportgpx", tr("Export to GPX..."), KeyEvent.VK_E, Shortcut.GROUP_MENU));
+                Shortcut.registerShortcut("file:exportgpx", tr("Export to GPX..."), KeyEvent.VK_E, Shortcut.CTRL));
         putValue("help", ht("/Action/GpxExport"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 4982)
@@ -21,5 +21,5 @@
 				tr("Display history information about OSM ways, nodes, or relations."),
 				Shortcut.registerShortcut("core:historyinfo",
-				tr("History"), KeyEvent.VK_H, Shortcut.GROUP_HOTKEY), false);
+				tr("History"), KeyEvent.VK_H, Shortcut.CTRL), false);
 		putValue("help", ht("/Action/ObjectHistory"));
 		putValue("toolbar", "action/historyinfo");
Index: trunk/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java	(revision 4982)
@@ -18,5 +18,5 @@
                 tr("Display history information about OSM ways, nodes, or relations in web browser."),
                 Shortcut.registerShortcut("core:historyinfoweb",
-                        tr("History (web)"), KeyEvent.VK_H, Shortcut.GROUP_DIRECT3),
+                        tr("History (web)"), KeyEvent.VK_H, Shortcut.CTRL_SHIFT),
                 true, "action/historyinfoweb", true);
         putValue("help", ht("/Action/ObjectHistoryWeb"));
Index: trunk/src/org/openstreetmap/josm/actions/InfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/InfoAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/InfoAction.java	(revision 4982)
@@ -21,5 +21,5 @@
             tr("Display advanced object information about OSM nodes, ways, or relations."),
             Shortcut.registerShortcut("core:info",
-                tr("Advanced info"), KeyEvent.VK_I, Shortcut.GROUP_HOTKEY),
+                tr("Advanced info"), KeyEvent.VK_I, Shortcut.CTRL),
             true, "action/info", true);
         putValue("help", ht("/Action/InfoAboutElements"));
Index: trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/InfoWebAction.java	(revision 4982)
@@ -18,5 +18,5 @@
                 tr("Display object information about OSM nodes, ways, or relations in web browser."),
                 Shortcut.registerShortcut("core:infoweb",
-                        tr("Advanced info (web)"), KeyEvent.VK_I, Shortcut.GROUP_HOTKEY+Shortcut.GROUPS_ALT1),
+                        tr("Advanced info (web)"), KeyEvent.VK_I, Shortcut.CTRL_SHIFT),
                 true, "action/infoweb", true);
         putValue("help", ht("/Action/InfoAboutElementsWeb"));
Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 4982)
@@ -308,5 +308,5 @@
         super(tr("Join overlapping Areas"), "joinareas", tr("Joins areas that overlap each other"),
         Shortcut.registerShortcut("tools:joinareas", tr("Tool: {0}", tr("Join overlapping Areas")),
-            KeyEvent.VK_J, Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+            KeyEvent.VK_J, Shortcut.SHIFT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 4982)
@@ -29,5 +29,5 @@
     public JoinNodeWayAction() {
         super(tr("Join Node to Way"), "joinnodeway", tr("Include a node into the nearest way segments"),
-                Shortcut.registerShortcut("tools:joinnodeway", tr("Tool: {0}", tr("Join Node to Way")), KeyEvent.VK_J, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:joinnodeway", tr("Tool: {0}", tr("Join Node to Way")), KeyEvent.VK_J, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/JoinNodeWay"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 4982)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.event.KeyEvent;
 import java.util.Collection;
 
@@ -42,5 +43,5 @@
     public Shortcut getShortcut() {
         if (sc == null) {
-            sc = Shortcut.registerShortcut("core:none", tr("No Shortcut"), 0, Shortcut.GROUP_NONE);
+            sc = Shortcut.registerShortcut("core:none", tr("No Shortcut"), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE);
             // as this shortcut is shared by all action that don't want to have a shortcut,
             // we shouldn't allow the user to change it...
Index: trunk/src/org/openstreetmap/josm/actions/JumpToAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/JumpToAction.java	(revision 4982)
@@ -30,5 +30,5 @@
     public JumpToAction() {
         super(tr("Jump To Position"), null, tr("Opens a dialog that allows to jump to a specific location"), Shortcut.registerShortcut("tools:jumpto", tr("Tool: {0}", tr("Jump To Position")),
-        KeyEvent.VK_J, Shortcut.GROUP_HOTKEY), false);
+        KeyEvent.VK_J, Shortcut.CTRL), false);
         putValue("toolbar", "action/jumpto");
         Main.toolbar.register(this);
Index: trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 4982)
@@ -20,5 +20,5 @@
             tr("Merge the current layer into another layer"),
             Shortcut.registerShortcut("system:merge", tr("Edit: {0}",
-            tr("Merge")), KeyEvent.VK_M, Shortcut.GROUP_MENU),
+            tr("Merge")), KeyEvent.VK_M, Shortcut.CTRL),
             true, "action/mergelayer", true);
         putValue("help", ht("/Action/MergeLayer"));
Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 4982)
@@ -53,5 +53,5 @@
     public MergeNodesAction() {
         super(tr("Merge Nodes"), "mergenodes", tr("Merge nodes into the oldest one."),
-                Shortcut.registerShortcut("tools:mergenodes", tr("Tool: {0}", tr("Merge Nodes")), KeyEvent.VK_M, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:mergenodes", tr("Tool: {0}", tr("Merge Nodes")), KeyEvent.VK_M, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/MergeNodes"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java	(revision 4982)
@@ -22,5 +22,5 @@
         super(tr("Merge selection"), "dialogs/mergedown", tr("Merge the currently selected objects into another layer"),
             Shortcut.registerShortcut("system:mergeselection", tr("Edit: {0}", tr("Merge selection")),
-            KeyEvent.VK_M, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1),
+            KeyEvent.VK_M, Shortcut.CTRL_SHIFT),
             true /* register */
         );
Index: trunk/src/org/openstreetmap/josm/actions/MirrorAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MirrorAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/MirrorAction.java	(revision 4982)
@@ -34,5 +34,5 @@
         super(tr("Mirror"), "mirror", tr("Mirror selected nodes and ways."),
                 Shortcut.registerShortcut("tools:mirror", tr("Tool: {0}", tr("Mirror")),
-                        KeyEvent.VK_M, Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+                        KeyEvent.VK_M, Shortcut.SHIFT), true);
         putValue("help", ht("/Action/Mirror"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 4982)
@@ -50,11 +50,11 @@
         Shortcut sc;
         if        (dir == Direction.UP)   {
-            sc = Shortcut.registerShortcut("core:moveup",    tr("Move objects {0}", tr("up")), KeyEvent.VK_UP,    Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
+            sc = Shortcut.registerShortcut("core:moveup",    tr("Move objects {0}", tr("up")), KeyEvent.VK_UP,    Shortcut.SHIFT);
         } else if (dir == Direction.DOWN)  {
-            sc = Shortcut.registerShortcut("core:movedown",  tr("Move objects {0}", tr("down")), KeyEvent.VK_DOWN,  Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
+            sc = Shortcut.registerShortcut("core:movedown",  tr("Move objects {0}", tr("down")), KeyEvent.VK_DOWN,  Shortcut.SHIFT);
         } else if (dir == Direction.LEFT)  {
-            sc = Shortcut.registerShortcut("core:moveleft",  tr("Move objects {0}", tr("left")), KeyEvent.VK_LEFT,  Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
+            sc = Shortcut.registerShortcut("core:moveleft",  tr("Move objects {0}", tr("left")), KeyEvent.VK_LEFT,  Shortcut.SHIFT);
         } else { //dir == Direction.RIGHT) {
-            sc = Shortcut.registerShortcut("core:moveright", tr("Move objects {0}", tr("right")), KeyEvent.VK_RIGHT, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
+            sc = Shortcut.registerShortcut("core:moveright", tr("Move objects {0}", tr("right")), KeyEvent.VK_RIGHT, Shortcut.SHIFT);
         }
         return sc;
Index: trunk/src/org/openstreetmap/josm/actions/NewAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/NewAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/NewAction.java	(revision 4982)
@@ -17,5 +17,5 @@
     public NewAction() {
         super(tr("New Layer"), "new", tr("Create a new map layer."),
-                Shortcut.registerShortcut("system:new", tr("File: {0}", tr("New Layer")), KeyEvent.VK_N, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:new", tr("File: {0}", tr("New Layer")), KeyEvent.VK_N, Shortcut.CTRL), true);
         putValue("help", ht("/Action/NewLayer"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 4982)
@@ -49,5 +49,5 @@
     public OpenFileAction() {
         super(tr("Open..."), "open", tr("Open a file."),
-                Shortcut.registerShortcut("system:open", tr("File: {0}", tr("Open...")), KeyEvent.VK_O, Shortcut.GROUP_MENU));
+                Shortcut.registerShortcut("system:open", tr("File: {0}", tr("Open...")), KeyEvent.VK_O, Shortcut.CTRL));
         putValue("help", ht("/Action/Open"));
 
Index: trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java	(revision 4982)
@@ -47,5 +47,5 @@
         /* I18N: Command to download a specific location/URL */
         super(tr("Open Location..."), "openlocation", tr("Open an URL."),
-                Shortcut.registerShortcut("system:open_location", tr("File: {0}", tr("Open Location...")), KeyEvent.VK_L, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:open_location", tr("File: {0}", tr("Open Location...")), KeyEvent.VK_L, Shortcut.CTRL), true);
         putValue("help", ht("/Action/OpenLocation"));
         this.downloadTasks = new ArrayList<Class<? extends DownloadTask>>();
Index: trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 4982)
@@ -51,5 +51,5 @@
                 Shortcut.registerShortcut("tools:orthogonalize", tr("Tool: {0}", tr("Orthogonalize Shape")),
                         KeyEvent.VK_Q,
-                        Shortcut.GROUP_EDIT), true);
+                        Shortcut.DIRECT), true);
         putValue("help", ht("/Action/OrthogonalizeShape"));
     }
@@ -83,5 +83,5 @@
                     Shortcut.registerShortcut("tools:orthogonalizeUndo", tr("Tool: {0}", tr("Orthogonalize Shape / Undo")),
                             KeyEvent.VK_Q,
-                            Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1),
+                            Shortcut.SHIFT),
                     true, "action/orthogonalize/undo", true);
         }
Index: trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 4982)
@@ -32,5 +32,5 @@
     public PasteAction() {
         super(tr("Paste"), "paste", tr("Paste contents of paste buffer."),
-                Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Paste"));
         Main.pasteBuffer.addPasteBufferChangedListener(this);
Index: trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java	(revision 4982)
@@ -35,5 +35,5 @@
                 tr("Apply tags of contents of paste buffer to all selected items."),
                 Shortcut.registerShortcut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")),
-                KeyEvent.VK_V, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1), true);
+                KeyEvent.VK_V, Shortcut.CTRL_SHIFT), true);
         Main.pasteBuffer.addPasteBufferChangedListener(this);
         putValue("help", ht("/Action/PasteTags"));
Index: trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/PreferencesAction.java	(revision 4982)
@@ -24,5 +24,5 @@
     public PreferencesAction() {
         super(tr("Preferences..."), "preference", tr("Open a preferences dialog for global settings."),
-                Shortcut.registerShortcut("system:preferences", tr("Preferences"), KeyEvent.VK_F12, Shortcut.GROUP_DIRECT), true);
+                Shortcut.registerShortcut("system:preferences", tr("Preferences"), KeyEvent.VK_F12, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/Preferences"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 4982)
@@ -61,5 +61,5 @@
         super(tr("Purge..."), "purge",  tr("Forget objects but do not delete them on server when uploading."),
                 Shortcut.registerShortcut("system:purge", tr("Edit: {0}", tr("Purge")),
-                KeyEvent.VK_P, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1),
+                KeyEvent.VK_P, Shortcut.CTRL_SHIFT),
                 true);
         putValue("help", HelpUtil.ht("/Action/Purge"));
Index: trunk/src/org/openstreetmap/josm/actions/RedoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 4982)
@@ -24,5 +24,5 @@
     public RedoAction() {
         super(tr("Redo"), "redo", tr("Redo the last undone action."),
-                Shortcut.registerShortcut("system:redo", tr("Edit: {0}", tr("Redo")), KeyEvent.VK_Y, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:redo", tr("Edit: {0}", tr("Redo")), KeyEvent.VK_Y, Shortcut.CTRL), true);
         setEnabled(false);
         putValue("help", ht("/Action/Redo"));
Index: trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 4982)
@@ -66,5 +66,5 @@
     public ReverseWayAction() {
         super(tr("Reverse Ways"), "wayflip", tr("Reverse the direction of all selected ways."),
-                Shortcut.registerShortcut("tools:reverse", tr("Tool: {0}", tr("Reverse Ways")), KeyEvent.VK_R, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:reverse", tr("Tool: {0}", tr("Reverse Ways")), KeyEvent.VK_R, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/ReverseWays"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 4982)
@@ -27,5 +27,5 @@
     public SaveAction() {
         super(tr("Save"), "save", tr("Save the current data."),
-                Shortcut.registerShortcut("system:save", tr("File: {0}", tr("Save")), KeyEvent.VK_S, Shortcut.GROUP_MENU));
+                Shortcut.registerShortcut("system:save", tr("File: {0}", tr("Save")), KeyEvent.VK_S, Shortcut.CTRL));
         putValue("help", ht("/Action/Save"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/SaveAsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveAsAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/SaveAsAction.java	(revision 4982)
@@ -25,5 +25,5 @@
         super(tr("Save As..."), "save_as", tr("Save the current data to a new file."),
             Shortcut.registerShortcut("system:saveas", tr("File: {0}", tr("Save As...")),
-            KeyEvent.VK_S, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1));
+            KeyEvent.VK_S, Shortcut.CTRL_SHIFT));
         putValue("help", ht("/Action/SaveAs"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java	(revision 4982)
@@ -14,5 +14,5 @@
     public SelectAllAction() {
         super(tr("Select All"),"selectall", tr("Select all undeleted objects in the data layer. This selects incomplete objects too."),
-                Shortcut.registerShortcut("system:selectall", tr("Edit: {0}", tr("Select All")), KeyEvent.VK_A, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:selectall", tr("Edit: {0}", tr("Select All")), KeyEvent.VK_A, Shortcut.CTRL), true);
         putValue("help", ht("/Action/SelectAll"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 4982)
@@ -35,5 +35,5 @@
     public SimplifyWayAction() {
         super(tr("Simplify Way"), "simplify", tr("Delete unnecessary nodes from a way."), Shortcut.registerShortcut("tools:simplify", tr("Tool: {0}", tr("Simplify Way")),
-                KeyEvent.VK_Y, Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+                KeyEvent.VK_Y, Shortcut.SHIFT), true);
         putValue("help", ht("/Action/SimplifyWay"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 4982)
@@ -80,5 +80,5 @@
     public SplitWayAction() {
         super(tr("Split Way"), "splitway", tr("Split a way at the selected node."),
-                Shortcut.registerShortcut("tools:splitway", tr("Tool: {0}", tr("Split Way")), KeyEvent.VK_P, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:splitway", tr("Tool: {0}", tr("Split Way")), KeyEvent.VK_P, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/SplitWay"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ToggleGPXLinesAction.java	(revision 4982)
@@ -15,5 +15,5 @@
     public ToggleGPXLinesAction() {
         super(tr("Toggle GPX Lines"), "gps-lines", tr("Toggles the global setting ''{0}''.", tr("Draw lines between raw gps points.")),
-        Shortcut.registerShortcut("view:gpxlines", tr("View: {0}", tr("Toggle GPX Lines")), KeyEvent.VK_X, Shortcut.GROUP_DIRECT+Shortcut.GROUPS_ALT1), true);
+        Shortcut.registerShortcut("view:gpxlines", tr("View: {0}", tr("Toggle GPX Lines")), KeyEvent.VK_X, Shortcut.SHIFT), true);
         putValue("help", ht("/Action/ToggleGPXLines"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 4982)
@@ -53,5 +53,5 @@
     public UnGlueAction() {
         super(tr("UnGlue Ways"), "unglueways", tr("Duplicate nodes that are used by multiple ways."),
-                Shortcut.registerShortcut("tools:unglue", tr("Tool: {0}", tr("UnGlue Ways")), KeyEvent.VK_G, Shortcut.GROUP_EDIT), true);
+                Shortcut.registerShortcut("tools:unglue", tr("Tool: {0}", tr("UnGlue Ways")), KeyEvent.VK_G, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/UnGlue"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/UndoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 4982)
@@ -24,5 +24,5 @@
     public UndoAction() {
         super(tr("Undo"), "undo", tr("Undo the last action."),
-                Shortcut.registerShortcut("system:undo", tr("Edit: {0}", tr("Undo")), KeyEvent.VK_Z, Shortcut.GROUP_MENU), true);
+                Shortcut.registerShortcut("system:undo", tr("Edit: {0}", tr("Undo")), KeyEvent.VK_Z, Shortcut.CTRL), true);
         setEnabled(false);
         putValue("help", ht("/Action/Undo"));
Index: trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java	(revision 4982)
@@ -16,5 +16,5 @@
         super(tr("Unselect All"), "unselectall", tr("Unselect all objects."),
             Shortcut.registerShortcut("edit:unselectall", tr("Edit: {0}",
-            tr("Unselect All")), KeyEvent.VK_ESCAPE, Shortcut.GROUP_DIRECT), true);
+            tr("Unselect All")), KeyEvent.VK_ESCAPE, Shortcut.DIRECT), true);
 
         putValue("help", ht("/Action/UnselectAll"));
Index: trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 4982)
@@ -26,5 +26,5 @@
                 Shortcut.registerShortcut("file:updatedata",
                         tr("File: {0}", tr("Update data")),
-                        KeyEvent.VK_U, Shortcut.GROUP_HOTKEY),
+                        KeyEvent.VK_U, Shortcut.CTRL),
                 true);
         putValue("help", ht("/Action/UpdateData"));
Index: trunk/src/org/openstreetmap/josm/actions/UpdateModifiedAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UpdateModifiedAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UpdateModifiedAction.java	(revision 4982)
@@ -27,5 +27,5 @@
                 Shortcut.registerShortcut("file:updatemodified",
                         tr("File: {0}", tr("Update modified")), KeyEvent.VK_M,
-                        Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),
+                        Shortcut.ALT_CTRL),
                         true);
         putValue("help", ht("/Action/UpdateModified"));
Index: trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 4982)
@@ -88,5 +88,5 @@
                 Shortcut.registerShortcut("file:updateselection",
                         tr("File: {0}", tr("Update selection")), KeyEvent.VK_U,
-                        Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY),
+                        Shortcut.ALT_CTRL),
                 true);
         putValue("help", ht("/Action/UpdateSelection"));
Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 4982)
@@ -87,5 +87,5 @@
     public UploadAction() {
         super(tr("Upload data"), "upload", tr("Upload all changes in the active data layer to the OSM server"),
-                Shortcut.registerShortcut("file:upload", tr("File: {0}", tr("Upload data")), KeyEvent.VK_UP, Shortcut.GROUP_HOTKEY+Shortcut.GROUPS_ALT1), true);
+                Shortcut.registerShortcut("file:upload", tr("File: {0}", tr("Upload data")), KeyEvent.VK_UP, Shortcut.CTRL_SHIFT), true);
         putValue("help", ht("/Action/Upload"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 4982)
@@ -47,5 +47,5 @@
         super(tr("Validation"), "dialogs/validator", tr("Performs the data validation"),
             Shortcut.registerShortcut("tools:validate", tr("Tool: {0}", tr("Validation")),
-            KeyEvent.VK_V, Shortcut.GROUP_EDIT+Shortcut.GROUPS_ALT1), true);
+            KeyEvent.VK_V, Shortcut.SHIFT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ViewportFollowToggleAction.java	(revision 4982)
@@ -24,5 +24,5 @@
                 tr("Enable/disable automatic moving of the map view to last placed node"),
                 Shortcut.registerShortcut("menu:view:viewportfollow", tr("Toggle Viewport Following"),
-                KeyEvent.VK_F, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1),
+                KeyEvent.VK_F, Shortcut.CTRL_SHIFT),
                 true /* register shortcut */
         );
Index: trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/WireframeToggleAction.java	(revision 4982)
@@ -27,5 +27,5 @@
                 null, /* no icon */
                 tr("Enable/disable rendering the map as wireframe only"),
-                Shortcut.registerShortcut("menu:view:wireframe", tr("Toggle Wireframe view"),KeyEvent.VK_W, Shortcut.GROUP_MENU),
+                Shortcut.registerShortcut("menu:view:wireframe", tr("Toggle Wireframe view"),KeyEvent.VK_W, Shortcut.CTRL),
                 false /* register toolbar */
         );
Index: trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomInAction.java	(revision 4982)
@@ -20,5 +20,5 @@
                 "dialogs/zoomin",
                 tr("Zoom In"),
-                Shortcut.registerShortcut("view:zoomin", tr("View: {0}", tr("Zoom In")),KeyEvent.VK_PLUS, Shortcut.GROUP_DIRECT),
+                Shortcut.registerShortcut("view:zoomin", tr("View: {0}", tr("Zoom In")),KeyEvent.VK_PLUS, Shortcut.DIRECT),
                 true
         );
@@ -27,5 +27,5 @@
         Main.registerActionShortcut(this,
             Shortcut.registerShortcut("view:zoominkeypad", tr("View: {0}", tr("Zoom In (Keypad)")),
-                KeyEvent.VK_ADD, Shortcut.GROUP_DIRECT));
+                KeyEvent.VK_ADD, Shortcut.DIRECT));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomOutAction.java	(revision 4982)
@@ -17,10 +17,10 @@
     public ZoomOutAction() {
         super(tr("Zoom Out"), "dialogs/zoomout", tr("Zoom Out"),
-                Shortcut.registerShortcut("view:zoomout", tr("View: {0}", tr("Zoom Out")), KeyEvent.VK_MINUS, Shortcut.GROUP_DIRECT), true);
+                Shortcut.registerShortcut("view:zoomout", tr("View: {0}", tr("Zoom Out")), KeyEvent.VK_MINUS, Shortcut.DIRECT), true);
         putValue("help", ht("/Action/ZoomOut"));
         // make numpad - behave like -
         Main.registerActionShortcut(this,
             Shortcut.registerShortcut("view:zoomoutkeypad", tr("View: {0}", tr("Zoom Out (Keypad)")),
-                KeyEvent.VK_SUBTRACT, Shortcut.GROUP_DIRECT));
+                KeyEvent.VK_SUBTRACT, Shortcut.DIRECT));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioBackAction.java	(revision 4982)
@@ -19,5 +19,5 @@
     public AudioBackAction() {
         super(trc("audio", "Back"), "audio-back", trc("audio", "Jump back."),
-        Shortcut.registerShortcut("audio:back", tr("Audio: {0}", trc("audio", "Back")), KeyEvent.VK_F6, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:back", tr("Audio: {0}", trc("audio", "Back")), KeyEvent.VK_F6, Shortcut.DIRECT), true);
         this.putValue("help", ht("/Action/AudioBack"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioFasterAction.java	(revision 4982)
@@ -14,5 +14,5 @@
     public AudioFasterAction() {
         super(trc("audio", "Faster"), "audio-faster", trc("audio", "Faster Forward"),
-        Shortcut.registerShortcut("audio:faster", tr("Audio: {0}", trc("audio", "Faster")), KeyEvent.VK_F9, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:faster", tr("Audio: {0}", trc("audio", "Faster")), KeyEvent.VK_F9, Shortcut.DIRECT), true);
         this.putValue("help", ht("/Action/AudioFaster"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioFwdAction.java	(revision 4982)
@@ -17,5 +17,5 @@
     public AudioFwdAction() {
         super(trc("audio", "Forward"), "audio-fwd", trc("audio", "Jump forward"),
-        Shortcut.registerShortcut("audio:forward", tr("Audio: {0}", trc("audio", "Forward")), KeyEvent.VK_F7, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:forward", tr("Audio: {0}", trc("audio", "Forward")), KeyEvent.VK_F7, Shortcut.DIRECT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioNextAction.java	(revision 4982)
@@ -16,5 +16,5 @@
     public AudioNextAction() {
         super(trc("audio", "Next Marker"), "audio-next", trc("audio", "Play next marker."),
-        Shortcut.registerShortcut("audio:next", tr("Audio: {0}", trc("audio", "Next Marker")), KeyEvent.VK_F8, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:next", tr("Audio: {0}", trc("audio", "Next Marker")), KeyEvent.VK_F8, Shortcut.DIRECT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioPlayPauseAction.java	(revision 4982)
@@ -17,5 +17,5 @@
     public AudioPlayPauseAction() {
         super(trc("audio", "Play/Pause"), "audio-playpause", tr("Play/pause audio."),
-        Shortcut.registerShortcut("audio:pause", tr("Audio: {0}", trc("audio", "Play/Pause")), KeyEvent.VK_PERIOD, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:pause", tr("Audio: {0}", trc("audio", "Play/Pause")), KeyEvent.VK_PERIOD, Shortcut.DIRECT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioPrevAction.java	(revision 4982)
@@ -16,5 +16,5 @@
     public AudioPrevAction() {
         super(trc("audio", "Previous Marker"), "audio-prev", trc("audio", "Play previous marker."),
-        Shortcut.registerShortcut("audio:prev", tr("Audio: {0}", trc("audio", "Previous Marker")), KeyEvent.VK_F5, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:prev", tr("Audio: {0}", trc("audio", "Previous Marker")), KeyEvent.VK_F5, Shortcut.DIRECT), true);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/audio/AudioSlowerAction.java	(revision 4982)
@@ -14,5 +14,5 @@
     public AudioSlowerAction() {
         super(trc("audio", "Slower"), "audio-slower", trc("audio", "Slower Forward"),
-        Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", trc("audio", "Slower")), KeyEvent.VK_F4, Shortcut.GROUP_DIRECT), true);
+        Shortcut.registerShortcut("audio:slower", tr("Audio: {0}", trc("audio", "Slower")), KeyEvent.VK_F4, Shortcut.DIRECT), true);
         this.putValue("help", ht("/Action/AudioSlower"));
     }
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 4982)
@@ -96,5 +96,5 @@
                 tr("Delete nodes or ways."),
                 Shortcut.registerShortcut("mapmode:delete", tr("Mode: {0}",tr("Delete")),
-                KeyEvent.VK_DELETE, Shortcut.GROUP_DIRECT+Shortcut.GROUPS_ALT2),
+                KeyEvent.VK_DELETE, Shortcut.CTRL),
                 mapFrame,
                 ImageProvider.getCursor("normal", "delete"));
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 4982)
@@ -106,9 +106,9 @@
     public DrawAction(MapFrame mapFrame) {
         super(tr("Draw"), "node/autonode", tr("Draw nodes"),
-            Shortcut.registerShortcut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, Shortcut.GROUP_EDIT),
+            Shortcut.registerShortcut("mapmode:draw", tr("Mode: {0}", tr("Draw")), KeyEvent.VK_A, Shortcut.DIRECT),
             mapFrame, ImageProvider.getCursor("crosshair", null));
 
         snappingShortcut = Shortcut.registerShortcut("mapmode:drawanglesnapping",
-            tr("Mode: Draw Angle snapping"), KeyEvent.VK_TAB, Shortcut.GROUP_EDIT);
+            tr("Mode: Draw Angle snapping"), KeyEvent.VK_TAB, Shortcut.DIRECT);
         addMenuItem();
         snapHelper.setMenuCheckBox(snapCheckboxMenuItem);
@@ -174,5 +174,5 @@
         Main.map.statusLine.getAnglePanel().addMouseListener(snapHelper.anglePopupListener);
         backspaceShortcut = Shortcut.registerShortcut("mapmode:backspace",
-            tr("Backspace in Add mode"), KeyEvent.VK_BACK_SPACE, Shortcut.GROUP_EDIT);
+            tr("Backspace in Add mode"), KeyEvent.VK_BACK_SPACE, Shortcut.DIRECT);
         Main.registerActionShortcut(new BackSpaceAction(), backspaceShortcut);
 
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 4982)
@@ -127,5 +127,5 @@
     public ExtrudeAction(MapFrame mapFrame) {
         super(tr("Extrude"), "extrude/extrude", tr("Create areas"),
-                Shortcut.registerShortcut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, Shortcut.GROUP_EDIT),
+                Shortcut.registerShortcut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, Shortcut.DIRECT),
                 mapFrame,
                 ImageProvider.getCursor("normal", "rectangle"));
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 4982)
@@ -101,5 +101,5 @@
                 Shortcut.registerShortcut("mapmode:ImproveWayAccuracy",
                 tr("Mode: {0}", tr("Improve Way Accuracy")),
-                KeyEvent.VK_W, Shortcut.GROUP_EDIT), mapFrame, Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+                KeyEvent.VK_W, Shortcut.DIRECT), mapFrame, Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
 
         cursorSelect = ImageProvider.getCursor("normal", "mode");
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 4982)
@@ -126,7 +126,6 @@
         super(tr("Parallel"), "parallel", tr("Make parallel copies of ways"),
             Shortcut.registerShortcut("mapmode:parallel", tr("Mode: {0}",
-            tr("Parallel")), KeyEvent.VK_P, Shortcut.GROUP_EDIT+
-            Shortcut.GROUPS_ALT1), mapFrame, ImageProvider.getCursor("normal",
-            "parallel"));
+                tr("Parallel")), KeyEvent.VK_P, Shortcut.SHIFT),
+            mapFrame, ImageProvider.getCursor("normal", "parallel"));
         putValue("help", ht("/Action/Parallel"));
         mv = mapFrame.mapView;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 4982)
@@ -157,5 +157,5 @@
     public SelectAction(MapFrame mapFrame) {
         super(tr("Select"), "move/move", tr("Select, move, scale and rotate objects"),
-                Shortcut.registerShortcut("mapmode:select", tr("Mode: {0}", tr("Select")), KeyEvent.VK_S, Shortcut.GROUP_EDIT),
+                Shortcut.registerShortcut("mapmode:select", tr("Mode: {0}", tr("Select")), KeyEvent.VK_S, Shortcut.DIRECT),
                 mapFrame,
                 ImageProvider.getCursor("normal", "selection"));
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java	(revision 4982)
@@ -43,5 +43,5 @@
     public ZoomAction(MapFrame mapFrame) {
         super(tr("Zoom"), "zoom", tr("Zoom and move map"),
-                Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.VK_Z, Shortcut.GROUP_EDIT),
+                Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.VK_Z, Shortcut.DIRECT),
                 mapFrame, ImageProvider.getCursor("normal", "zoom"));
         selectionManager = new SelectionManager(this, true, mapFrame.mapView);
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 4982)
@@ -121,5 +121,5 @@
     public SearchAction() {
         super(tr("Search..."), "dialogs/search", tr("Search for objects."),
-                Shortcut.registerShortcut("system:find", tr("Search..."), KeyEvent.VK_F, Shortcut.GROUP_HOTKEY), true);
+                Shortcut.registerShortcut("system:find", tr("Search..."), KeyEvent.VK_F, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Search"));
     }
Index: trunk/src/org/openstreetmap/josm/gui/MainApplet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplet.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplet.java	(revision 4982)
@@ -39,5 +39,5 @@
         public UploadPreferencesAction() {
             super(tr("Upload Preferences"), "upload-preferences", tr("Upload the current preferences to the server"),
-                    Shortcut.registerShortcut("applet:uploadprefs", tr("Upload Preferences"), KeyEvent.VK_U, Shortcut.GROUP_DIRECT3+Shortcut.GROUPS_ALT1), true);
+                    Shortcut.registerShortcut("applet:uploadprefs", tr("Upload Preferences"), KeyEvent.VK_U, Shortcut.ALT_CTRL_SHIFT), true);
         }
         public void actionPerformed(ActionEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 4982)
@@ -515,5 +515,5 @@
         current = helpMenu.add(help); // FIXME why is help not a JosmAction?
         current.setAccelerator(Shortcut.registerShortcut("system:help", tr("Help"), KeyEvent.VK_F1,
-                Shortcut.GROUP_DIRECT).getKeyStroke());
+                Shortcut.DIRECT).getKeyStroke());
         add(helpMenu, about);
 
Index: trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 4982)
@@ -81,30 +81,30 @@
         if (contentPane != null) {
             contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                Shortcut.registerShortcut("system:movefocusright", tr("Map: {0}", tr("Move right")), KeyEvent.VK_RIGHT, Shortcut.GROUP_HOTKEY).getKeyStroke(),
+                Shortcut.registerShortcut("system:movefocusright", tr("Map: {0}", tr("Move right")), KeyEvent.VK_RIGHT, Shortcut.CTRL).getKeyStroke(),
                 "MapMover.Zoomer.right");
             contentPane.getActionMap().put("MapMover.Zoomer.right", new ZoomerAction("right"));
 
             contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                Shortcut.registerShortcut("system:movefocusleft", tr("Map: {0}", tr("Move left")), KeyEvent.VK_LEFT, Shortcut.GROUP_HOTKEY).getKeyStroke(),
+                Shortcut.registerShortcut("system:movefocusleft", tr("Map: {0}", tr("Move left")), KeyEvent.VK_LEFT, Shortcut.CTRL).getKeyStroke(),
                 "MapMover.Zoomer.left");
             contentPane.getActionMap().put("MapMover.Zoomer.left", new ZoomerAction("left"));
 
             contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                Shortcut.registerShortcut("system:movefocusup", tr("Map: {0}", tr("Move up")), KeyEvent.VK_UP, Shortcut.GROUP_HOTKEY).getKeyStroke(),
+                Shortcut.registerShortcut("system:movefocusup", tr("Map: {0}", tr("Move up")), KeyEvent.VK_UP, Shortcut.CTRL).getKeyStroke(),
                 "MapMover.Zoomer.up");
             contentPane.getActionMap().put("MapMover.Zoomer.up", new ZoomerAction("up"));
 
             contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                Shortcut.registerShortcut("system:movefocusdown", tr("Map: {0}", tr("Move down")), KeyEvent.VK_DOWN, Shortcut.GROUP_HOTKEY).getKeyStroke(),
+                Shortcut.registerShortcut("system:movefocusdown", tr("Map: {0}", tr("Move down")), KeyEvent.VK_DOWN, Shortcut.CTRL).getKeyStroke(),
                 "MapMover.Zoomer.down");
             contentPane.getActionMap().put("MapMover.Zoomer.down", new ZoomerAction("down"));
 
             contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                Shortcut.registerShortcut("view:zoominalternate", tr("Map: {0}", tr("Zoom in")), KeyEvent.VK_COMMA, Shortcut.GROUP_HOTKEY).getKeyStroke(),
+                Shortcut.registerShortcut("view:zoominalternate", tr("Map: {0}", tr("Zoom in")), KeyEvent.VK_COMMA, Shortcut.CTRL).getKeyStroke(),
                 "MapMover.Zoomer.in");
             contentPane.getActionMap().put("MapMover.Zoomer.in", new ZoomerAction(","));
 
             contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                Shortcut.registerShortcut("view:zoomoutalternate", tr("Map: {0}", tr("Zoom out")), KeyEvent.VK_PERIOD, Shortcut.GROUP_HOTKEY).getKeyStroke(),
+                Shortcut.registerShortcut("view:zoomoutalternate", tr("Map: {0}", tr("Zoom out")), KeyEvent.VK_PERIOD, Shortcut.CTRL).getKeyStroke(),
                 "MapMover.Zoomer.out");
             contentPane.getActionMap().put("MapMover.Zoomer.out", new ZoomerAction("."));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java	(revision 4982)
@@ -74,6 +74,5 @@
         super(tr("Command Stack"), "commandstack", tr("Open a list of all commands (undo buffer)."),
                 Shortcut.registerShortcut("subwindow:commandstack", tr("Toggle: {0}",
-                tr("Command Stack")), KeyEvent.VK_O, Shortcut.GROUP_LAYER
-                +Shortcut.GROUPS_ALT1), 100, true);
+                tr("Command Stack")), KeyEvent.VK_O, Shortcut.ALT_SHIFT), 100, true);
         undoTree.addMouseListener(new PopupMenuHandler());
         undoTree.setRootVisible(false);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 4982)
@@ -110,5 +110,5 @@
         super(tr("Conflict"), "conflict", tr("Resolve conflicts."),
                 Shortcut.registerShortcut("subwindow:conflict", tr("Toggle: {0}", tr("Conflict")),
-                KeyEvent.VK_C, Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 100);
+                KeyEvent.VK_C, Shortcut.ALT_SHIFT), 100);
 
         build();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 4982)
@@ -70,5 +70,5 @@
         super(tr("Filter"), "filter", tr("Filter objects and hide/disable them."),
                 Shortcut.registerShortcut("subwindow:filter", tr("Toggle: {0}", tr("Filter")),
-                KeyEvent.VK_F, Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 162);
+                KeyEvent.VK_F, Shortcut.ALT_SHIFT), 162);
         build();
 
@@ -92,9 +92,9 @@
     private static final Shortcut ENABLE_FILTER_SHORTCUT
     = Shortcut.registerShortcut("core_multikey:enableFilter", tr("Multikey: {0}", tr("Enable filter")),
-    KeyEvent.VK_E, Shortcut.GROUP_DIRECT2+Shortcut.GROUPS_ALT2);
+    KeyEvent.VK_E, Shortcut.ALT_CTRL);
 
     private static final Shortcut HIDING_FILTER_SHORTCUT
     = Shortcut.registerShortcut("core_multikey:hidingFilter", tr("Multikey: {0}", tr("Hide filter")),
-    KeyEvent.VK_H, Shortcut.GROUP_DIRECT2+Shortcut.GROUPS_ALT2);
+    KeyEvent.VK_H, Shortcut.ALT_CTRL);
 
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 4982)
@@ -64,5 +64,5 @@
         super(tr("History"), "history", tr("Display the history of all selected items."),
                 Shortcut.registerShortcut("subwindow:history", tr("Toggle: {0}", tr("History")), KeyEvent.VK_H,
-                        Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 150);
+                        Shortcut.ALT_SHIFT), 150);
         build();
         HelpUtil.setHelpContext(this, HelpUtil.ht("/Dialog/History"));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 4982)
@@ -150,5 +150,5 @@
         for(int i=0; i < 10; i++) {
             visibilityToggleShortcuts[i] = Shortcut.registerShortcut("subwindow:layers:toggleLayer" + (i+1),
-                    tr("Toggle visibility of layer: {0}", (i+1)), k[i], Shortcut.GROUP_LAYER);
+                    tr("Toggle visibility of layer: {0}", (i+1)), k[i], Shortcut.ALT);
             visibilityToggleActions[i] = new ToggleLayerIndexVisibility(i);
             Main.registerActionShortcut(visibilityToggleActions[i], visibilityToggleShortcuts[i]);
@@ -162,5 +162,5 @@
         super(tr("Layers"), "layerlist", tr("Open a list of all loaded layers."),
                 Shortcut.registerShortcut("subwindow:layers", tr("Toggle: {0}", tr("Layers")), KeyEvent.VK_L,
-                Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER), 100, true);
+                Shortcut.ALT_SHIFT), 100, true);
 
         // create the models
@@ -443,5 +443,5 @@
             putValue("help", HelpUtil.ht("/Dialog/LayerList#ShowHideLayer"));
             Shortcut.registerShortcut("core_multikey:showHideLayer", tr("Multikey: {0}",
-            tr("Show/hide layer")), KeyEvent.VK_S, Shortcut.GROUP_DIRECT+Shortcut.GROUPS_ALT1).setAccelerator(this);
+            tr("Show/hide layer")), KeyEvent.VK_S, Shortcut.SHIFT).setAccelerator(this);
             if (init) {
                 updateEnabledState();
@@ -631,5 +631,5 @@
             putValue(SHORT_DESCRIPTION, tr("Activate the selected layer"));
             Shortcut.registerShortcut("core_multikey:activateLayer", tr("Multikey: {0}",
-            tr("Activate layer")), KeyEvent.VK_A, Shortcut.GROUP_DIRECT+Shortcut.GROUPS_ALT1).setAccelerator(this);
+            tr("Activate layer")), KeyEvent.VK_A, Shortcut.SHIFT).setAccelerator(this);
             putValue("help", HelpUtil.ht("/Dialog/LayerList#ActivateLayer"));
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 4982)
@@ -87,5 +87,5 @@
         super(tr("Map Paint Styles"), "mapstyle", tr("configure the map painting style"),
             Shortcut.registerShortcut("subwindow:mappaint", tr("Toggle: {0}", tr("MapPaint")),
-            KeyEvent.VK_M, Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 150);
+            KeyEvent.VK_M, Shortcut.ALT_SHIFT), 150);
         build();
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 4982)
@@ -89,5 +89,5 @@
         super(tr("Relations"), "relationlist", tr("Open a list of all relations."),
                 Shortcut.registerShortcut("subwindow:relations", tr("Toggle: {0}", tr("Relations")),
-                KeyEvent.VK_R, Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 150);
+                KeyEvent.VK_R, Shortcut.ALT_SHIFT), 150);
 
         // create the list of relations
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 4982)
@@ -129,6 +129,5 @@
         super(tr("Selection"), "selectionlist", tr("Open a selection list window."),
                 Shortcut.registerShortcut("subwindow:selection", tr("Toggle: {0}",
-                tr("Current Selection")), KeyEvent.VK_T, Shortcut.GROUP_LAYER+
-                Shortcut.GROUPS_ALT1),
+                tr("Current Selection")), KeyEvent.VK_T, Shortcut.ALT_SHIFT),
                 150, // default height
                 true // default is "show dialog"
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 4982)
@@ -68,5 +68,5 @@
     public UserListDialog() {
         super(tr("Authors"), "userlist", tr("Open a list of people working on the selected objects."),
-                Shortcut.registerShortcut("subwindow:authors", tr("Toggle: {0}", tr("Authors")), KeyEvent.VK_A, Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 150);
+                Shortcut.registerShortcut("subwindow:authors", tr("Toggle: {0}", tr("Authors")), KeyEvent.VK_A, Shortcut.ALT_SHIFT), 150);
 
         build();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 4982)
@@ -87,5 +87,5 @@
         super(tr("Validation Results"), "validator", tr("Open the validation window."),
                 Shortcut.registerShortcut("subwindow:validator", tr("Toggle: {0}", tr("Validation results")),
-                        KeyEvent.VK_V, Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 150);
+                        KeyEvent.VK_V, Shortcut.ALT_SHIFT), 150);
 
         popupMenu = new JPopupMenu();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 4982)
@@ -654,5 +654,5 @@
         super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."),
                 Shortcut.registerShortcut("subwindow:properties", tr("Toggle: {0}", tr("Properties/Memberships")), KeyEvent.VK_P,
-                        Shortcut.GROUP_LAYER+Shortcut.GROUPS_ALT1), 150, true);
+                        Shortcut.ALT_SHIFT), 150, true);
 
         // setting up the properties table
@@ -1061,5 +1061,5 @@
             super(tr("Delete"), "dialogs/delete", tr("Delete the selected key in all objects"),
                     Shortcut.registerShortcut("properties:delete", tr("Delete Properties"), KeyEvent.VK_D,
-                            Shortcut.GROUP_DIRECT3+Shortcut.GROUPS_ALT1), false);
+                            Shortcut.ALT_CTRL_SHIFT), false);
             updateEnabledState();
         }
@@ -1162,5 +1162,5 @@
             super(tr("Add"), "dialogs/add", tr("Add a new key/value pair to all objects"),
                     Shortcut.registerShortcut("properties:add", tr("Add Property"), KeyEvent.VK_A,
-                            Shortcut.GROUP_DIRECT2), false);
+                            Shortcut.ALT), false);
         }
 
@@ -1175,5 +1175,5 @@
             super(tr("Edit"), "dialogs/edit", tr("Edit the value of the selected key for all objects"),
                     Shortcut.registerShortcut("properties:edit", tr("Edit Properties"), KeyEvent.VK_S,
-                            Shortcut.GROUP_DIRECT2), false);
+                            Shortcut.ALT), false);
             updateEnabledState();
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 4982)
@@ -977,5 +977,5 @@
             putValue(NAME, tr("Sort"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:sort", tr("Relation Editor: Sort"),
-                KeyEvent.VK_END, Shortcut.GROUP_DIRECT2);
+                KeyEvent.VK_END, Shortcut.ALT);
             sc.setAccelerator(this);
             putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tooltip, sc));
@@ -1002,5 +1002,5 @@
             putValue(NAME, tr("Reverse"));
         //  Shortcut.register Shortcut("relationeditor:reverse", tr("Relation Editor: Reverse"),
-        //      KeyEvent.VK_END, Shortcut.GROUP_DIRECT2)
+        //      KeyEvent.VK_END, Shortcut.ALT)
             updateEnabledState();
         }
@@ -1025,5 +1025,5 @@
             // putValue(NAME, tr("Move Up"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:moveup", tr("Relation Editor: Move Up"),
-                KeyEvent.VK_UP, Shortcut.GROUP_DIRECT2);
+                KeyEvent.VK_UP, Shortcut.ALT);
             sc.setAccelerator(this);
             putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tooltip, sc));
@@ -1046,5 +1046,5 @@
             // putValue(NAME, tr("Move Down"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:movedown", tr("Relation Editor: Move Down"),
-                KeyEvent.VK_DOWN, Shortcut.GROUP_DIRECT2);
+                KeyEvent.VK_DOWN, Shortcut.ALT);
             sc.setAccelerator(this);
             putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tooltip, sc));
@@ -1067,5 +1067,5 @@
             putValue(NAME, tr("Remove"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:remove", tr("Relation Editor: Remove"),
-                KeyEvent.VK_DELETE, Shortcut.GROUP_DIRECT2);
+                KeyEvent.VK_DELETE, Shortcut.ALT);
             sc.setAccelerator(this);
             putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tooltip, sc));
@@ -1404,5 +1404,5 @@
             putValue(NAME, tr("Download Members"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"),
-                KeyEvent.VK_HOME, Shortcut.GROUP_DIRECT2);
+                KeyEvent.VK_HOME, Shortcut.ALT);
             sc.setAccelerator(this);
             putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tooltip, sc));
@@ -1436,5 +1436,5 @@
             putValue(NAME, tr("Download Members"));
         //  Shortcut.register Shortcut("relationeditor:downloadincomplete", tr("Relation Editor: Download Members"),
-        //      KeyEvent.VK_K, Shortcut.GROUP_DIRECT2)
+        //      KeyEvent.VK_K, Shortcut.ALT)
             updateEnabledState();
         }
@@ -1682,5 +1682,5 @@
 
         public PasteTagsAction() {
-            registerCopyPasteAction(this, "PASTE_TAGS", Shortcut.registerShortcut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")), KeyEvent.VK_V, Shortcut.GROUP_MENU+Shortcut.GROUPS_ALT1).getKeyStroke());
+            registerCopyPasteAction(this, "PASTE_TAGS", Shortcut.registerShortcut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")), KeyEvent.VK_V, Shortcut.CTRL_SHIFT).getKeyStroke());
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 4982)
@@ -35,5 +35,5 @@
         public JumpToNextMarker(JumpToMarkerLayer layer) {
             Shortcut.registerShortcut("core_multikey:nextMarker", tr("Multikey: {0}", tr("Next marker")),
-                KeyEvent.VK_J, Shortcut.GROUP_DIRECT2+Shortcut.GROUPS_ALT2).setAccelerator(this);
+                KeyEvent.VK_J, Shortcut.ALT_CTRL).setAccelerator(this);
             putValue(SHORT_DESCRIPTION, tr("Jump to next marker"));
             putValue(NAME, tr("Jump to next marker"));
@@ -91,5 +91,5 @@
 
             Shortcut.registerShortcut("core_multikey:previousMarker", tr("Multikey: {0}", tr("Previos marker")),
-                KeyEvent.VK_P, Shortcut.GROUP_DIRECT2+Shortcut.GROUPS_ALT2).setAccelerator(this);
+                KeyEvent.VK_P, Shortcut.ALT_CTRL).setAccelerator(this);
             putValue(SHORT_DESCRIPTION, tr("Jump to previous marker"));
             putValue(NAME, tr("Jump to previous marker"));
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 4982)
@@ -65,5 +65,5 @@
     private ImageViewerDialog() {
         super(tr("Geotagged Images"), "geoimage", tr("Display geotagged images"), Shortcut.registerShortcut("tools:geotagged",
-        tr("Tool: {0}", tr("Display geotagged images")), KeyEvent.VK_Y, Shortcut.GROUP_EDIT), 200);
+        tr("Tool: {0}", tr("Display geotagged images")), KeyEvent.VK_Y, Shortcut.DIRECT), 200);
 
         /* Don't show a detached dialog right from the start. */
@@ -83,5 +83,5 @@
         btnPrevious.setPreferredSize(buttonDim);
         Shortcut scPrev = Shortcut.registerShortcut(
-                "geoimage:previous", tr("Geoimage: {0}", tr("Show previous Image")), KeyEvent.VK_PAGE_UP, Shortcut.GROUP_DIRECT);
+                "geoimage:previous", tr("Geoimage: {0}", tr("Show previous Image")), KeyEvent.VK_PAGE_UP, Shortcut.DIRECT);
         final String APREVIOUS = "Previous Image";
         Main.registerActionShortcut(prevAction, scPrev);
@@ -94,5 +94,5 @@
         btnDelete.setPreferredSize(buttonDim);
         Shortcut scDelete = Shortcut.registerShortcut(
-                "geoimage:deleteimagefromlayer", tr("Geoimage: {0}", tr("Remove photo from layer")), KeyEvent.VK_DELETE, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT);
+                "geoimage:deleteimagefromlayer", tr("Geoimage: {0}", tr("Remove photo from layer")), KeyEvent.VK_DELETE, Shortcut.SHIFT);
         Main.registerActionShortcut(delAction, scDelete);
         btnDelete.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(scDelete.getKeyStroke(), DELETE_TEXT);
@@ -103,5 +103,5 @@
         btnDeleteFromDisk.setPreferredSize(buttonDim);
         Shortcut scDeleteFromDisk = Shortcut.registerShortcut(
-                "geoimage:deletefilefromdisk", tr("Geoimage: {0}", tr("Delete File from disk")), KeyEvent.VK_DELETE, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY);
+                "geoimage:deletefilefromdisk", tr("Geoimage: {0}", tr("Delete File from disk")), KeyEvent.VK_DELETE, Shortcut.CTRL_SHIFT);
         final String ADELFROMDISK = "Delete image file from disk";
         Main.registerActionShortcut(delFromDiskAction, scDeleteFromDisk);
@@ -113,5 +113,5 @@
         btnNext.setPreferredSize(buttonDim);
         Shortcut scNext = Shortcut.registerShortcut(
-                "geoimage:next", tr("Geoimage: {0}", tr("Show next Image")), KeyEvent.VK_PAGE_DOWN, Shortcut.GROUP_DIRECT);
+                "geoimage:next", tr("Geoimage: {0}", tr("Show next Image")), KeyEvent.VK_PAGE_DOWN, Shortcut.DIRECT);
         final String ANEXT = "Next Image";
         Main.registerActionShortcut(nextAction, scNext);
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchAction.java	(revision 4980)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchAction.java	(revision 4982)
@@ -15,5 +15,5 @@
     public TaggingPresetSearchAction() {
         super(tr("Search preset"), "dialogs/search", tr("Show preset search dialog"),
-                Shortcut.registerShortcut("preset:search", tr("Search presets"), KeyEvent.VK_F3, Shortcut.GROUP_DIRECT), false);
+                Shortcut.registerShortcut("preset:search", tr("Search presets"), KeyEvent.VK_F3, Shortcut.DIRECT), false);
         putValue("toolbar", "presets/search");
         Main.toolbar.register(this);
