#ifndef __WFX_INPUT_WFXKESY_H__
#define __WFX_INPUT_WFXKESY_H__

#include <WFX/WFXIncludes.h>

namespace WFX {

    namespace input {
    
        /**
         *  enum defining all keys
         */
        enum WFXKey {
            WFXK_UNKNOWN = 0,
            WFXK_ESC, 
            WFXK_F1,
            WFXK_F2,
            WFXK_F3,
            WFXK_F4,
            WFXK_F5,
            WFXK_F6,
            WFXK_F7,
            WFXK_F8,
            WFXK_F9,
            WFXK_F10,
            WFXK_F11,
            WFXK_F12,
            WFXK_1,
            WFXK_2,
            WFXK_3,
            WFXK_4,
            WFXK_5,
            WFXK_6,
            WFXK_7,
            WFXK_8,
            WFXK_9,
            WFXK_0,
            WFXK_BACKSPACE,
            WFXK_LSHIFT,
            WFXK_RSHIFT,
            WFXK_LCTRL,
            WFXK_RCTRL,
            WFXK_LALT,
            WFXK_RALT,
            WFXK_RETURN,
            WFXK_SPACE,
            WFXK_a,
            WFXK_b,
            WFXK_c,
            WFXK_d,
            WFXK_e,
            WFXK_f,
            WFXK_g,
            WFXK_h,
            WFXK_i,
            WFXK_j,
            WFXK_k,
            WFXK_l,
            WFXK_m,
            WFXK_n,
            WFXK_o,
            WFXK_p,
            WFXK_q,
            WFXK_r,
            WFXK_s,
            WFXK_t,
            WFXK_u,
            WFXK_v,
            WFXK_w,
            WFXK_x,
            WFXK_y,
            WFXK_z,
            WFXK_LEFT,
            WFXK_RIGHT,
            WFXK_UP,
            WFXK_DOWN 
        };

        /**
         * Keyevent class
         * contains information about the event
         */
        class KeyEvent {
            public:
                /** the key */
                WFXKey Key;
                /** corresponding Character */
                Char Character;

                /**
                 * Ctor
                 */
                KeyEvent(WFXKey k, Char c) {
                    Key = k;
                    Character = c;
                }
            protected:

            private:
        };

        
    }

}



#endif
