2023-11-20 06:48:30 +03:00

124 lines
2.5 KiB
C++

#ifndef WINDOW_INPUT_H_
#define WINDOW_INPUT_H_
namespace keycode {
extern int ENTER;
extern int TAB;
extern int SPACE;
extern int BACKSPACE;
extern int LEFT_CONTROL;
extern int LEFT_SHIFT;
extern int LEFT_ALT;
extern int RIGHT_CONTROL;
extern int RIGHT_SHIFT;
extern int RIGHT_ALT;
extern int ESCAPE;
extern int CAPS_LOCK;
extern int LEFT;
extern int RIGHT;
extern int DOWN;
extern int UP;
extern int F1;
extern int F2;
extern int F3;
extern int F4;
extern int F5;
extern int F6;
extern int F7;
extern int F8;
extern int F9;
extern int F10;
extern int F11;
extern int F12;
extern int A;
extern int B;
extern int C;
extern int D;
extern int E;
extern int F;
extern int G;
extern int H;
extern int I;
extern int J;
extern int K;
extern int L;
extern int M;
extern int N;
extern int O;
extern int P;
extern int Q;
extern int R;
extern int S;
extern int T;
extern int U;
extern int V;
extern int W;
extern int X;
extern int Y;
extern int Z;
extern int NUM_0;
extern int NUM_1;
extern int NUM_2;
extern int NUM_3;
extern int NUM_4;
extern int NUM_5;
extern int NUM_6;
extern int NUM_7;
extern int NUM_8;
extern int NUM_9;
extern int MENU;
extern int PAUSE;
extern int INSERT;
extern int LEFT_SUPER;
extern int RIGHT_SUPER;
extern int DELETE;
extern int PAGE_UP;
extern int PAGE_DOWN;
extern int HOME;
extern int END;
extern int PRINT_SCREEN;
extern int NUM_LOCK;
extern int LEFT_BRACKET;
extern int RIGHT_BRACKET;
extern const char* name(int code);
}
namespace mousecode {
extern int BUTTON_1;
extern int BUTTON_2;
extern int BUTTON_3;
extern const char* name(int code);
}
enum class inputtype {
keyboard,
mouse,
};
struct Binding {
inputtype type;
int code;
bool state = false;
bool justChange = false;
bool active() const {
return state;
}
bool jactive() const {
return state && justChange;
}
const char* text() const {
switch (type) {
case inputtype::keyboard: return keycode::name(code);
case inputtype::mouse: return mousecode::name(code);
}
return "<unknown input type>";
}
};
#endif // WINDOW_INPUT_H_