diff --git a/.gitignore b/.gitignore
index ae31fba..fa3ab62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@ lerna-terminal-0.0.0-semantically-released.tgz
 .vscode
 
 npm-debug.log*
+log.txt
diff --git a/package.json b/package.json
index 54a02e7..be9d509 100644
--- a/package.json
+++ b/package.json
@@ -54,6 +54,7 @@
       "src/*.{js}",
       "src/*/*.{js}",
       "!src/index.js",
+      "!src/log.js",
       "!src/resolve/index.js",
       "!src/resolve/resolve-dependency.js"
     ]
diff --git a/src/commandListener/index.js b/src/commandListener/index.js
index a281f07..73ba2e2 100644
--- a/src/commandListener/index.js
+++ b/src/commandListener/index.js
@@ -72,6 +72,9 @@ const onReturn = onCommandEntered => {
 };
 
 const onRecieveLetter = letter => {
+	if (!letter) {
+		return;
+	}
 	buffer += letter;
 	getUiState().onChange(buffer);
 };
@@ -102,11 +105,13 @@ function commandListener(onCommandEntered) {
 				return;
 			}
 
+			/* istanbul ignore else case */
 			if (keyNameMap[key.name]) {
 				keyNameMap[key.name](onCommandEntered);
 				return;
 			}
 		}
+		onRecieveLetter(letter);
 	});
 	process.stdin.resume();
 }
diff --git a/src/log.js b/src/log.js
new file mode 100644
index 0000000..b03c00a
--- /dev/null
+++ b/src/log.js
@@ -0,0 +1,18 @@
+const fs = require('fs');
+const path = require('path');
+
+const logFilePath = path.resolve(__dirname, '..', 'log.txt');
+
+const readLog = () => {
+	try {
+		return fs.readFileSync(logFilePath, 'utf8');
+	} catch (err) {
+		return '';
+	}
+};
+
+const log = value => {
+	fs.writeFileSync(logFilePath, `${readLog()}\n[${new Date()}]:  ${value}`);
+};
+
+module.exports = log;