var App = App || {};

App.Keyboard = function(mousetrap) {

	var oldStopCallback = mousetrap.stopCallback;
	mousetrap.stopCallback = function(e, element, combo, sequence) {
		if (combo.indexOf('ctrl') !== -1) {
			return false;
		}
		return oldStopCallback.apply(mousetrap, arguments);
	};

	function keyup(key, callback) {
		unbind(key);
		mousetrap.bind(key, callback, 'keyup');
	}

	function keydown(key, callback) {
		unbind(key);
		mousetrap.bind(key, callback);
	}

	function reset() {
		mousetrap.reset();
	}

	function unbind(key) {
		mousetrap.unbind(key, 'keyup');
		mousetrap.unbind(key);
	}

	return {
		keydown: keydown,
		keyup: keyup,
		reset: reset,
		unbind: unbind,
	};
};

App.DI.register('keyboard', ['mousetrap'], App.Keyboard);