diff --git a/src/de/itstall/TaschenrechnerGui.java b/src/de/itstall/TaschenrechnerGui.java
index c38f56a1ebccba32321efa0a81684c10ce011248..fd0190f1cc5522f08a584595ee2f334912c78427 100644
--- a/src/de/itstall/TaschenrechnerGui.java
+++ b/src/de/itstall/TaschenrechnerGui.java
@@ -4,6 +4,7 @@ import javax.swing.*;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
 
 public class TaschenrechnerGui extends JFrame {
 	JButton btnCalc = new JButton("Berechnen");
@@ -15,6 +16,107 @@ public class TaschenrechnerGui extends JFrame {
 	public TaschenrechnerGui() {
 		this.initializeComponents();
 		this.anzeigen();
+		this.keyboardEvent();
+	}
+
+	/**
+	 * Wenn der Text das Zeichen "+" enthält, sucht die Methode das erste Vorkommen von "+" und ruft
+	 * sich selbst mit den Werten links und rechts des "+" wieder auf.
+	 * Beispiel für die erste Rekursionsstufe: Input: 2+3+4+5
+	 * 1. Splitten des Strings in "2" und "3+4+5"
+	 * 2. Aufruf der Methode auf dem zweiten Teilstring, solange bis nur noch Zahlen übrig bleiben
+	 * oder der Text leer ist. Dann werden die beiden Literale summiert und zurückgegeben.
+	 * <p>
+	 * Die "Strichoperationen" ("+" und "-") müssen als erstes angesprochen werden, damit sie die letzten
+	 * Operationen in der Rekursionsschleife sind. So erreicht man Punkt- vor Strichrechnung.
+	 * <p>
+	 * Der Rückgabewert ist vom Typ Double, da Division Gleitkommazahlen ergeben kann.
+	 */
+	public static Double berechnen(String text) {
+
+		if (text.contains("+")) {
+			return berechnen(text.substring(0, text.indexOf("+"))) + berechnen(text.substring(text.indexOf("+") + 1));
+		} else if (text.contains("-")) {
+			return berechnen(text.substring(0, text.indexOf("-"))) - berechnen(text.substring(text.indexOf("-") + 1));
+		} else if (text.contains("*")) {
+			return berechnen(text.substring(0, text.indexOf("*"))) * berechnen(text.substring(text.indexOf("*") + 1));
+		} else if (text.contains("/")) {
+			return berechnen(text.substring(0, text.indexOf("/"))) / berechnen(text.substring(text.indexOf("/") + 1));
+		}
+
+		if (text.isEmpty()) return 0.0;
+
+		return Double.parseDouble(text);
+	}
+
+	public final void keyboardEvent() {
+		KeyboardFocusManager.getCurrentKeyboardFocusManager()
+				.addKeyEventDispatcher(new KeyEventDispatcher() {
+					@Override
+					public boolean dispatchKeyEvent(KeyEvent e) {
+						KeyStroke keyStroke = KeyStroke.getKeyStrokeForEvent(e);
+						/*switch(e.getKe()) {
+							case "ENTER":
+								break;
+						}*/
+						if (keyStroke.isOnKeyRelease()) {
+							if (e.getKeyCode() == 10) {
+								calculate();
+							} else if (e.getKeyCode() == 27) {
+								clearDisplay();
+							} else {
+								switch (e.getKeyChar()) {
+									case '0':
+										addSign("0");
+										break;
+									case '1':
+										addSign("1");
+										break;
+									case '2':
+										addSign("2");
+										break;
+									case '3':
+										addSign("3");
+										break;
+									case '4':
+										addSign("4");
+										break;
+									case '5':
+										addSign("5");
+										break;
+									case '6':
+										addSign("6");
+										break;
+									case '7':
+										addSign("7");
+										break;
+									case '8':
+										addSign("8");
+										break;
+									case '9':
+										addSign("9");
+										break;
+									case '/':
+										addSign("/");
+										break;
+									case '*':
+										addSign("*");
+										break;
+									case '-':
+										addSign("-");
+										break;
+									case '+':
+										addSign("+");
+										break;
+								}
+								System.out.println(e.getKeyCode());
+								System.out.println(e.getKeyChar());
+							}
+						}
+
+						return false;
+					}
+				});
 	}
 
 	public void anzeigen() {
@@ -24,45 +126,46 @@ public class TaschenrechnerGui extends JFrame {
 	public void initializeComponents() {
 		this.setLayout(new BorderLayout());
 		this.setTitle("Taschenrechner");
-		this.setSize(300,200);
+		this.setSize(300, 200);
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 		this.setResizable(false);
 
 		panel = new JPanel();
 		panel.setLayout(new GridLayout(4, 5));
 
+		txtCalculation.setBounds(20, 20, 260, 20);
+		txtCalculation.setHorizontalAlignment(JTextField.RIGHT);
+		this.add(txtCalculation, BorderLayout.PAGE_START);
+
 		ActionListener insert = new InsertAction();
 		ActionListener result = new ResultAction();
 		ActionListener clear = new ClearAction();
 
-		txtCalculation.setBounds(20, 20, 260 ,20);
-		txtCalculation.setHorizontalAlignment(JTextField.RIGHT);
-		this.add(txtCalculation, BorderLayout.PAGE_START);
+		addButton("7", insert, "7");
+		addButton("8", insert, "8");
+		addButton("9", insert, "9");
+		addButton("+", insert, "+");
 
-		addButton("7", insert);
-		addButton("8", insert);
-		addButton("9", insert);
-		addButton("+", insert);
+		addButton("4", insert, "4");
+		addButton("5", insert, "5");
+		addButton("6", insert, "6");
+		addButton("-", insert, "-");
 
-		addButton("4", insert);
-		addButton("5", insert);
-		addButton("6", insert);
-		addButton("-", insert);
+		addButton("1", insert, "1");
+		addButton("2", insert, "2");
+		addButton("3", insert, "3");
+		addButton("*", insert, "*");
 
-		addButton("1", insert);
-		addButton("2", insert);
-		addButton("3", insert);
-		addButton("*", insert);
-
-		addButton("cls", clear);
-		addButton("0", insert);
-		addButton("=", result);
-		addButton("/", insert);
+		addButton("cls", clear, "ESC");
+		addButton("0", insert, "0");
+		addButton("=", result, "ENTER");
+		addButton("/", insert, "/");
 
 		this.add(panel, BorderLayout.CENTER);
 	}
 
-	public void addButton(String label, ActionListener listener) {
+	public void addButton(String label, ActionListener listener, String key) {
+		InputMap im = panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
 		JButton button = new JButton(label);
 		button.addActionListener(listener);
 		panel.add(button);
@@ -70,8 +173,8 @@ public class TaschenrechnerGui extends JFrame {
 
 	public String replaceSigns(String strDisplay) {
 
-		if(strDisplay.startsWith("= ") && !(strDisplay.endsWith("+") || strDisplay.endsWith("-") || strDisplay.endsWith("*") || strDisplay.endsWith("/"))) {
-			strDisplay = strDisplay.substring(strDisplay.length()-1);
+		if (strDisplay.startsWith("= ") && !(strDisplay.endsWith("+") || strDisplay.endsWith("-") || strDisplay.endsWith("*") || strDisplay.endsWith("/"))) {
+			strDisplay = strDisplay.substring(strDisplay.length() - 1);
 		} else {
 			strDisplay = strDisplay.replace("= ", "");
 			strDisplay = strDisplay.replace("**", "*");
@@ -86,11 +189,23 @@ public class TaschenrechnerGui extends JFrame {
 		return strDisplay;
 	}
 
+	private void calculate() {
+		txtCalculation.setText("= " + berechnen(txtCalculation.getText()));
+	}
+
+	private void clearDisplay() {
+		txtCalculation.setText("");
+	}
+
+	public void addSign(String sign) {
+		txtCalculation.setText(replaceSigns(txtCalculation.getText() + sign));
+	}
+
 	private class InsertAction implements ActionListener {
 
 		@Override
 		public void actionPerformed(ActionEvent actionEvent) {
-			txtCalculation.setText(replaceSigns(txtCalculation.getText() + ((JButton) actionEvent.getSource()).getText()));
+			addSign(((JButton) actionEvent.getSource()).getText());
 		}
 	}
 
@@ -98,7 +213,7 @@ public class TaschenrechnerGui extends JFrame {
 
 		@Override
 		public void actionPerformed(ActionEvent actionEvent) {
-			txtCalculation.setText("= " + String.valueOf(berechnen(txtCalculation.getText())));
+			calculate();
 		}
 	}
 
@@ -106,41 +221,7 @@ public class TaschenrechnerGui extends JFrame {
 
 		@Override
 		public void actionPerformed(ActionEvent actionEvent) {
-			txtCalculation.setText("");
-		}
-	}
-
-	private void calculate() {
-		lblResult.setText(String.valueOf(berechnen(txtCalculation.getText())));
-	}
-
-	/**
-	 * Wenn der Text das Zeichen "+" enthält, sucht die Methode das erste Vorkommen von "+" und ruft
-	 * sich selbst mit den Werten links und rechts des "+" wieder auf.
-	 * Beispiel für die erste Rekursionsstufe: Input: 2+3+4+5
-	 * 1. Splitten des Strings in "2" und "3+4+5"
-	 * 2. Aufruf der Methode auf dem zweiten Teilstring, solange bis nur noch Zahlen übrig bleiben
-	 *    oder der Text leer ist. Dann werden die beiden Literale summiert und zurückgegeben.
-	 *
-	 * Die "Strichoperationen" ("+" und "-") müssen als erstes angesprochen werden, damit sie die letzten
-	 * Operationen in der Rekursionsschleife sind. So erreicht man Punkt- vor Strichrechnung.
-	 *
-	 * Der Rückgabewert ist vom Typ Double, da Division Gleitkommazahlen ergeben kann.
-	 */
-	public static Double berechnen(String text) {
-
-		if (text.contains("+")) {
-			return berechnen(text.substring(0, text.indexOf("+"))) + berechnen(text.substring(text.indexOf("+")+1));
-		} else if (text.contains("-")) {
-			return berechnen(text.substring(0, text.indexOf("-"))) - berechnen(text.substring(text.indexOf("-")+1));
-		} else if (text.contains("*")) {
-			return berechnen(text.substring(0, text.indexOf("*"))) * berechnen(text.substring(text.indexOf("*")+1));
-		} else if (text.contains("/")) {
-			return berechnen(text.substring(0, text.indexOf("/"))) / berechnen(text.substring(text.indexOf("/")+1));
+			clearDisplay();
 		}
-
-		if (text.isEmpty()) return 0.0;
-
-		return Double.parseDouble(text);
 	}
 }