diff --git a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java
index 9a996c2a503bc5ffc3200710b304619f6460d687..5b293810c01492b41bc75d75ec3fa3f0d8ca012c 100644
--- a/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java
+++ b/PlayWall/src/de/tobias/playpad/view/MapperOverviewViewController.java
@@ -71,7 +71,13 @@ public class MapperOverviewViewController implements IMapperOverviewViewControll
 				// Adds a mapper to the action
 				try {
 					MapperViewController controller = onAddMapper(item);
-					controller.showInputMapperUI();
+					boolean result = controller.showInputMapperUI();
+
+					// Delete Mapper wenn Eingabe abgebrochen wurde
+					if (!result) {
+						mappingView.getChildren().removeAll(controller.getParent().getParent());
+						action.removeMapper(controller.getMapper());
+					}
 				} catch (NoSuchComponentException ex) {
 					// TODO Error Handling
 					ex.printStackTrace();
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperInputDialog.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperInputDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..4028874c48522a6c6ce3c6cda59b2b8d1c376928
--- /dev/null
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperInputDialog.java
@@ -0,0 +1,41 @@
+package de.tobias.playpad.viewcontroller.mapper;
+
+import java.util.Optional;
+
+import de.tobias.playpad.action.mapper.KeyboardMapper;
+import de.tobias.utils.util.StringUtils;
+import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.ButtonType;
+import javafx.stage.Stage;
+
+public class KeyboardMapperInputDialog extends Alert {
+
+	public KeyboardMapperInputDialog(KeyboardMapper mapper) {
+		super(AlertType.NONE);
+
+		Scene scene = getDialogPane().getScene();
+
+		scene.setOnKeyPressed(ev ->
+		{
+			mapper.setKey(ev.getCode().getName());
+			mapper.setCode(ev.getCode());
+		});
+		scene.setOnKeyReleased(ev ->
+		{
+			// Close on Finish (alert.close() does not work)
+			((Stage) scene.getWindow()).close();
+		});
+		scene.setOnKeyTyped(ev ->
+		{
+			if (!StringUtils.isStringNotVisable(ev.getCharacter())) {
+				mapper.setKey(ev.getCharacter().toUpperCase());
+			}
+		});
+	}
+
+	public boolean showInputDialog() {
+		Optional<ButtonType> result = showAndWait();
+		return !result.isPresent();
+	}
+}
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperViewController.java
index 580f84d0f31c897f9b92d2262839ddf9c4a57fe3..4ff8e5f9bcacbd0dce17985eaea7930f08273a20 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/KeyboardMapperViewController.java
@@ -6,16 +6,11 @@ import de.tobias.playpad.action.mapper.KeyboardMapper;
 import de.tobias.playpad.action.mapper.Mapper;
 import de.tobias.playpad.action.mapper.MapperViewController;
 import de.tobias.utils.util.Localization;
-import de.tobias.utils.util.StringUtils;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
-import javafx.scene.Scene;
-import javafx.scene.control.Alert;
-import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
 import javafx.scene.control.ButtonType;
 import javafx.scene.control.Label;
-import javafx.stage.Stage;
 
 public class KeyboardMapperViewController extends MapperViewController {
 
@@ -34,10 +29,12 @@ public class KeyboardMapperViewController extends MapperViewController {
 	}
 
 	@Override
-	public void hideFeedback() {}
+	public void hideFeedback() {
+	}
 
 	@Override
-	public void showFeedback() {}
+	public void showFeedback() {
+	}
 
 	private void setLabel() {
 		keyLabel.setText(mapper.getReadableName());
@@ -45,38 +42,22 @@ public class KeyboardMapperViewController extends MapperViewController {
 
 	@FXML
 	private void mappingButtonHandler(ActionEvent event) {
-		Alert alert = new Alert(AlertType.NONE);
+		inputDialog();
+	}
+
+	private boolean inputDialog() {
+		KeyboardMapperInputDialog alert = new KeyboardMapperInputDialog(mapper);
 		alert.setTitle(Localization.getString(Strings.Mapper_Keyboard_Name));
 		alert.setContentText(Localization.getString(Strings.Info_Mapper_PressKey));
-		Scene scene = alert.getDialogPane().getScene();
-
-		scene.setOnKeyPressed(ev ->
-		{
-			mapper.setKey(ev.getCode().getName());
-			mapper.setCode(ev.getCode());
-			setLabel();
-		});
-		scene.setOnKeyReleased(ev ->
-		{
-			// Close on Finish (alert.close() does not work)
-			((Stage) scene.getWindow()).close();
-		});
-		scene.setOnKeyTyped(ev ->
-		{
-			if (!StringUtils.isStringNotVisable(ev.getCharacter())) {
-				mapper.setKey(ev.getCharacter().toUpperCase());
-				setLabel();
-			}
-		});
 
 		alert.getButtonTypes().add(ButtonType.CANCEL);
 		alert.initOwner(getWindow());
-		alert.showAndWait();
+		return alert.showInputDialog();
 	}
 
 	@Override
-	public void showInputMapperUI() {
-		mappingButton.fire();
+	public boolean showInputMapperUI() {
+		return inputDialog();
 	}
 
 	public void setMapper(KeyboardMapper keyboardMapper) {
diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
index c6f06e4b1d82e9cd421063505ebf0313f11cfc38..126dc8164e89e64ef7937a0d5145827f208af573 100644
--- a/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
+++ b/PlayWall/src/de/tobias/playpad/viewcontroller/mapper/MidiMapperViewController.java
@@ -74,9 +74,13 @@ public class MidiMapperViewController extends MapperViewController implements Mi
 	 * Current Alert for mapping.
 	 */
 	private Alert alert;
+	// Hilfsvariable um zu speichern, ob der Input Dialog abgebrochen wurde
+	private boolean canceled = false;
 
 	@FXML
 	private void midiInputRecordButtonHandler(ActionEvent event) {
+		canceled = false;
+		
 		currentListener = Midi.getInstance().getListener();
 		Midi.getInstance().setListener(this);
 
@@ -91,6 +95,7 @@ public class MidiMapperViewController extends MapperViewController implements Mi
 				Midi.getInstance().setListener(currentListener);
 				currentListener = null;
 				alert = null;
+				canceled = true;
 			}
 		});
 	}
@@ -117,8 +122,9 @@ public class MidiMapperViewController extends MapperViewController implements Mi
 	}
 
 	@Override
-	public void showInputMapperUI() {
-		midiInputRecordButton.fire();
+	public boolean showInputMapperUI() {
+		midiInputRecordButtonHandler(null);
+		return canceled; // TEST Ob das funktioniert mit dem Return
 	}
 
 	public void setMapper(MidiMapper midiMapper) {
diff --git a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperViewController.java b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperViewController.java
index 0725142845fadb9fead0d3f5ff819aef15c6a36c..d4592c558d7a11a716a53ef8bcb7c9b838eb22cc 100644
--- a/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperViewController.java
+++ b/PlayWallCore/src/de/tobias/playpad/action/mapper/MapperViewController.java
@@ -4,6 +4,14 @@ import java.util.ResourceBundle;
 
 import de.tobias.utils.ui.ContentViewController;
 
+/**
+ * Übersicht über die Mapper zu einer Action.s
+ * 
+ * @author tobias
+ * 
+ * @since 5.0.0
+ *
+ */
 public abstract class MapperViewController extends ContentViewController {
 
 	public MapperViewController(String name, String path, ResourceBundle localization) {
@@ -16,5 +24,10 @@ public abstract class MapperViewController extends ContentViewController {
 
 	public abstract Mapper getMapper();
 
-	public abstract void showInputMapperUI();
+	/**
+	 * Zeigt einen Dialog für die Eingabe des Mappers.
+	 * 
+	 * @return <code>true</code> Erfolgreiche Einageb, <code>false</code> Abbruch oder Fehler.
+	 */
+	public abstract boolean showInputMapperUI();
 }