1class SystemKeys
2{
3    enum SystemKey
4    {
5        None          = 0x0000,
6        LeftMouse     = 0x0001,
7        RightMouse    = 0x0002,
8        Shift         = 0x0004,
9        Control       = 0x0008,
10        MiddleMouse   = 0x0010,
11        X1Mouse       = 0x0020,
12        X2Mouse       = 0x0040,
13        Alt           = 0x0080
14    };
15
16    void reset();
17
18    unsigned int get() const;
19    bool isPressed(SystemKey key) const;
20
21    void keyPressed(Key::Scan key);
22    void keyReleased(Key::Scan key);
23    void mouseButtonPressed(MouseButton button);
24    void mouseButtonReleased(MouseButton button);
25
26    static SystemKey mouseButtonToSystemKey(MouseButton button);
27    static SystemKey keyCodeToSystemKey(Key::Scan key);
28};
29
30