
#ifndef SPECTRE_INPUT_KEYBOARD_H
#define SPECTRE_INPUT_KEYBOARD_H

#include <string>
#include "InputDevice.h"

namespace sp {

class Keyboard : public InputDevice
{
public :
	enum Key {
		Unknown,
		A,
		B,
		C,
		D,
		E,
		F,
		G,
		H,
		I,
		J,
		K,
		L,
		M,
		N,
		O,
		P,
		Q,
		R,
		S,
		T,
		U,
		V,
		W,
		X,
		Y,
		Z,
		One,
		Two,
		Three,
		Four,
		Five,
		Six,
		Seven,
		Eight,
		Nine,
		Zero,
		Period,
		Comma,
		Enter,
		Backspace,
		Escape,
		Space,
		Capslock,
		Up,
		Down,
		Left,
		Right,
		Numpad1,
		Numpad2,
		Numpad3,
		Numpad4,
		Numpad5,
		Numpad6,
		Numpad7,
		Numpad8,
		Numpad9,
		Numpad0,
		Home,
		End,
		Insert,
		Delete,
		PageUp,
		PageDown,
		Pause,
		F1,
		F2,
		F3,
		F4,
		F5,
		F6,
		F7,
		F8,
		F9,
		F10,
		F11,
		F12,
		Tab,
		LShift,
		RShift,
		LCtrl,
		RCtrl,
		LAlt,
		RAlt,
		NUM_KEYS,
	};

public :
	virtual ~Keyboard() {};

	virtual bool isKeyDown(Key key) = 0;

	static std::string getKeyName(Key key);
};

} // namespace sp

#endif /* SPECTRE_INPUT_KEYBOARD_H */
