Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 4998)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java	(revision 4999)
@@ -337,5 +337,9 @@
         EnableFilterAction() {
             putValue(SHORT_DESCRIPTION, tr("Enable filter"));
-            ENABLE_FILTER_SHORTCUT.setAccelerator(this);
+        }
+
+        @Override
+        public Shortcut getMultikeyShortcut() {
+            return ENABLE_FILTER_SHORTCUT;
         }
 
@@ -356,5 +360,9 @@
         public HidingFilterAction() {
             putValue(SHORT_DESCRIPTION, tr("Hiding filter"));
-            HIDING_FILTER_SHORTCUT.setAccelerator(this);
+        }
+
+        @Override
+        public Shortcut getMultikeyShortcut() {
+            return HIDING_FILTER_SHORTCUT;
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 4998)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 4999)
@@ -432,4 +432,5 @@
 
         private WeakReference<Layer> lastLayer;
+        private Shortcut multikeyShortcut;
 
         /**
@@ -442,6 +443,6 @@
             putValue(SHORT_DESCRIPTION, tr("Toggle visible state of the selected layer."));
             putValue("help", HelpUtil.ht("/Dialog/LayerList#ShowHideLayer"));
-            Shortcut.registerShortcut("core_multikey:showHideLayer", tr("Multikey: {0}",
-            tr("Show/hide layer")), KeyEvent.VK_S, Shortcut.SHIFT).setAccelerator(this);
+            multikeyShortcut = Shortcut.registerShortcut("core_multikey:showHideLayer", tr("Multikey: {0}",
+            tr("Show/hide layer")), KeyEvent.VK_S, Shortcut.SHIFT);
             if (init) {
                 updateEnabledState();
@@ -451,4 +452,9 @@
         public ShowHideLayerAction() {
             this(true);
+        }
+
+        @Override
+        public Shortcut getMultikeyShortcut() {
+            return multikeyShortcut;
         }
 
@@ -618,4 +624,5 @@
     public final class ActivateLayerAction extends AbstractAction implements IEnabledStateUpdating, MapView.LayerChangeListener, MultikeyShortcutAction{
         private  Layer layer;
+        private Shortcut multikeyShortcut;
 
         public ActivateLayerAction(Layer layer) {
@@ -630,7 +637,12 @@
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "activate"));
             putValue(SHORT_DESCRIPTION, tr("Activate the selected layer"));
-            Shortcut.registerShortcut("core_multikey:activateLayer", tr("Multikey: {0}",
-            tr("Activate layer")), KeyEvent.VK_A, Shortcut.SHIFT).setAccelerator(this);
+            multikeyShortcut = Shortcut.registerShortcut("core_multikey:activateLayer", tr("Multikey: {0}",
+            tr("Activate layer")), KeyEvent.VK_A, Shortcut.SHIFT);
             putValue("help", HelpUtil.ht("/Dialog/LayerList#ActivateLayer"));
+        }
+
+        @Override
+        public Shortcut getMultikeyShortcut() {
+            return multikeyShortcut;
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 4998)
+++ trunk/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java	(revision 4999)
@@ -32,12 +32,18 @@
         private final Layer layer;
         private WeakReference<Layer> lastLayer;
+        private Shortcut multikeyShortcut;
 
         public JumpToNextMarker(JumpToMarkerLayer layer) {
-            Shortcut.registerShortcut("core_multikey:nextMarker", tr("Multikey: {0}", tr("Next marker")),
-                KeyEvent.VK_J, Shortcut.ALT_CTRL).setAccelerator(this);
+            multikeyShortcut = Shortcut.registerShortcut("core_multikey:nextMarker", tr("Multikey: {0}", tr("Next marker")),
+                KeyEvent.VK_J, Shortcut.ALT_CTRL);
             putValue(SHORT_DESCRIPTION, tr("Jump to next marker"));
             putValue(NAME, tr("Jump to next marker"));
 
             this.layer = (Layer)layer;
+        }
+
+        @Override
+        public Shortcut getMultikeyShortcut() {
+            return multikeyShortcut;
         }
 
@@ -86,4 +92,5 @@
         private WeakReference<Layer> lastLayer;
         private final Layer layer;
+        private Shortcut multikeyShortcut;
 
         public JumpToPreviousMarker(JumpToMarkerLayer layer) {
@@ -94,4 +101,9 @@
             putValue(SHORT_DESCRIPTION, tr("Jump to previous marker"));
             putValue(NAME, tr("Jump to previous marker"));
+        }
+
+        @Override
+        public Shortcut getMultikeyShortcut() {
+            return multikeyShortcut;
         }
 
Index: trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 4998)
+++ trunk/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java	(revision 4999)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.MultikeyShortcutAction.MultikeyInfo;
+import org.openstreetmap.josm.tools.Shortcut;
 
 public class MultikeyActionsHandler {
@@ -40,5 +41,5 @@
                 int index = getIndex(e.getKeyCode());
                 if (index >= 0) {
-                    lastAction.action.executeMultikeyAction(index, e.getKeyCode() == lastAction.shortcut.getKeyCode());
+                    lastAction.action.executeMultikeyAction(index, e.getKeyCode() == lastAction.shortcut.getKeyStroke().getKeyCode());
                 }
                 lastAction = null;
@@ -64,9 +65,9 @@
 
         final MultikeyShortcutAction action;
-        final KeyStroke shortcut;
+        final Shortcut shortcut;
 
         MyAction(MultikeyShortcutAction action) {
             this.action = action;
-            this.shortcut = (KeyStroke) action.getValue(ACCELERATOR_KEY);
+            this.shortcut = action.getMultikeyShortcut();
         }
 
@@ -102,5 +103,4 @@
             }
         }
-
     }
 
@@ -143,5 +143,5 @@
                 layers.add(pnTitle);
 
-                char repeatKey = (char) action.shortcut.getKeyCode();
+                char repeatKey = (char) action.shortcut.getKeyStroke().getKeyCode();
                 boolean repeatKeyUsed = false;
 
@@ -153,5 +153,5 @@
                     }
 
-                    JMenuItem item = new JMenuItem(formatMenuText(action.shortcut, String.valueOf(info.getShortcut()), info.getDescription()));
+                    JMenuItem item = new JMenuItem(formatMenuText(action.shortcut.getKeyStroke(), String.valueOf(info.getShortcut()), info.getDescription()));
                     item.setMnemonic(info.getShortcut());
                     item.addActionListener(new ActionListener() {
@@ -167,8 +167,8 @@
                     MultikeyInfo lastLayer = action.action.getLastMultikeyAction();
                     if (lastLayer != null) {
-                        JMenuItem repeateItem = new JMenuItem(formatMenuText(action.shortcut,
-                                KeyEvent.getKeyText(action.shortcut.getKeyCode()),
+                        JMenuItem repeateItem = new JMenuItem(formatMenuText(action.shortcut.getKeyStroke(),
+                                KeyEvent.getKeyText(action.shortcut.getKeyStroke().getKeyCode()),
                                 "Repeat " + lastLayer.getDescription()));
-                        repeateItem.setMnemonic(action.shortcut.getKeyCode());
+                        repeateItem.setMnemonic(action.shortcut.getKeyStroke().getKeyCode());
                         repeateItem.addActionListener(new ActionListener() {
                             @Override
@@ -201,10 +201,8 @@
 
     public void addAction(MultikeyShortcutAction action) {
-        if (!(action.getValue(Action.ACCELERATOR_KEY) instanceof KeyStroke))
-            throw new IllegalArgumentException("Action must have shortcut set");
-        MyAction myAction = new MyAction(action);
-        Main.registerActionShortcut(myAction, myAction.shortcut);
-    }
-
-
+        if(action.getMultikeyShortcut() != null) {
+            MyAction myAction = new MyAction(action);
+            Main.registerActionShortcut(myAction, myAction.shortcut);
+        }
+    }
 }
Index: trunk/src/org/openstreetmap/josm/tools/MultikeyShortcutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/MultikeyShortcutAction.java	(revision 4998)
+++ trunk/src/org/openstreetmap/josm/tools/MultikeyShortcutAction.java	(revision 4999)
@@ -35,4 +35,6 @@
     }
 
+    public Shortcut getMultikeyShortcut();
+
     void executeMultikeyAction(int index, boolean repeatLastAction);
     List<MultikeyInfo> getMultikeyCombinations();
