Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 5959)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 5960)
@@ -237,5 +237,6 @@
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
-
+        
+        requestFocusInMapView();
         updateKeyModifiers(e);
         
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 5959)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 5960)
@@ -49,4 +49,7 @@
     }
 
+    /**
+     * Makes this map mode active.
+     */
     public void enterMode() {
         putValue("active", true);
@@ -54,4 +57,8 @@
         updateStatusLine();
     }
+    
+    /**
+     * Makes this map mode inactive.
+     */
     public void exitMode() {
         putValue("active", false);
@@ -95,8 +102,15 @@
         shift = (modifiers & ActionEvent.SHIFT_MASK) != 0;
     }
+    
+    protected void requestFocusInMapView() {
+        if (isEnabled()) {
+            // request focus in order to enable the expected keyboard shortcuts (see #8710)
+            Main.map.mapView.requestFocus();
+        }
+    }
 
-    public void mouseReleased(MouseEvent e) {}
+    public void mouseReleased(MouseEvent e) {requestFocusInMapView();}
     public void mouseExited(MouseEvent e) {}
-    public void mousePressed(MouseEvent e) {}
+    public void mousePressed(MouseEvent e) {requestFocusInMapView();}
     public void mouseClicked(MouseEvent e) {}
     public void mouseEntered(MouseEvent e) {}
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 5959)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 5960)
@@ -291,4 +291,5 @@
     @Override
     public void mousePressed(MouseEvent e) {
+        requestFocusInMapView();
         updateModifiersState(e);
         // Other buttons are off limit, but we still get events.
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 5959)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java	(revision 5960)
@@ -25,4 +25,8 @@
     private PlayHeadMarker playHeadMarker = null;
 
+    /**
+     * Constructs a new {@code PlayHeadDragMode}.
+     * @param m Audio marker
+     */
     public PlayHeadDragMode(PlayHeadMarker m) {
         super(tr("Drag play head"), "playheaddrag", tr("Drag play head"), null,
@@ -68,4 +72,5 @@
             return;
 
+        requestFocusInMapView();
         updateKeyModifiers(ev);
 
