Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5281)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5282)
@@ -97,4 +97,5 @@
 
     private JCheckBoxMenuItem snapCheckboxMenuItem;
+    private boolean useRepeatedShortcut;
 
     public DrawAction(MapFrame mapFrame) {
@@ -253,5 +254,5 @@
         if (event instanceof KeyEvent) {
             KeyEvent e = (KeyEvent) event;
-            if (snappingShortcut.isEvent(e) || getShortcut().isEvent(e)) {
+            if (snappingShortcut.isEvent(e) || (useRepeatedShortcut && getShortcut().isEvent(e))) {
                 Component focused = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
                 if (SwingUtilities.getWindowAncestor(focused) instanceof JFrame)
@@ -270,5 +271,5 @@
     private Timer timer;
     void processKeyEvent(KeyEvent e) {
-        if (!snappingShortcut.isEvent(e) && !getShortcut().isEvent(e)) 
+        if (!snappingShortcut.isEvent(e) && !(useRepeatedShortcut && getShortcut().isEvent(e))) 
             return;
         
@@ -1278,4 +1279,5 @@
 
             showAngle = Main.pref.getBoolean("draw.anglesnap.showAngle", true);
+            useRepeatedShortcut = Main.pref.getBoolean("draw.anglesnap.toggleOnRepeatedA", true);
 
             normalStroke = new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
@@ -1588,4 +1590,11 @@
 
         MouseListener anglePopupListener = new PopupMenuLauncher( new JPopupMenu() {
+            JCheckBoxMenuItem repeatedCb = new JCheckBoxMenuItem(new AbstractAction(tr("Toggle snapping by {0}", getShortcut().getKeyText())){
+                public void actionPerformed(ActionEvent e) {
+                    boolean sel=((JCheckBoxMenuItem) e.getSource()).getState();
+                    Main.pref.put("draw.anglesnap.toggleOnRepeatedA", sel);
+                    init();
+                }
+            });
             JCheckBoxMenuItem helperCb = new JCheckBoxMenuItem(new AbstractAction(tr("Show helper geometry")){
                 public void actionPerformed(ActionEvent e) {
@@ -1609,4 +1618,6 @@
                 helperCb.setState(Main.pref.getBoolean("draw.anglesnap.drawConstructionGeometry",true));
                 projectionCb.setState(Main.pref.getBoolean("draw.anglesnap.projectionsnapgvff",true));
+                repeatedCb.setState(Main.pref.getBoolean("draw.anglesnap.toggleOnRepeatedA",true));
+                add(repeatedCb);
                 add(helperCb);
                 add(projectionCb);;
