System info & network

This commit is contained in:
2023-09-26 19:40:16 +02:00
commit 504ba77654
89 changed files with 39577 additions and 0 deletions

220
code/lib/event.h Normal file
View File

@@ -0,0 +1,220 @@
#ifndef _PIUMA_LIB_EVENT_H_
#define _PIUMA_LIB_EVENT_H_
#include "types.h"
#include "math.h"
// Mouse events
// Keyboard events
// Window events (resize, hide, focus)
// Quit
// Other OS events (signals?)
enum Event_Type
{
EVENT_NONE,
EVENT_QUIT,
EVENT_MOUSE_MOVE,
EVENT_KEY,
EVENT_RESIZE,
EVENT_FOCUS,
EVENT_UNFOCUS,
EVENT_TEXT,
EVENT_COUNT
};
// @Performance: a lot of this codes are sequential in Linux. Check with other OSs if that's the case. If it is, we can have faster mapping by subtracting and adding an offset.
enum Key_Code
{
KEY_UNKNOWN = 0,
// @Correctness: check all ascii characters that are on a keyboard
KEY_ENTER = '\r',
KEY_ESCAPE = '\e',
KEY_BACKSPACE = '\b',
KEY_TAB = '\t',
KEY_SPACE = ' ',
KEY_EXCLAMATION = '!',
KEY_DOUBLE_QUOTE = '"',
KEY_HASH = '#',
KEY_PERCENT = '%',
KEY_DOLLAR = '$',
KEY_AMPERSAND = '&',
KEY_SINGLE_QUOTE = '\'',
KEY_LEFT_PARENTHESIS = '(',
KEY_RIGHT_PARENTHESIS = ')',
KEY_ASTERISK = '*',
KEY_PLUS = '+',
KEY_COMMA = ',',
KEY_MINUS = '-',
KEY_PERIOD = '.',
KEY_SLASH = '/',
KEY_0 = '0',
KEY_1 = '1',
KEY_2 = '2',
KEY_3 = '3',
KEY_4 = '4',
KEY_5 = '5',
KEY_6 = '6',
KEY_7 = '7',
KEY_8 = '8',
KEY_9 = '9',
KEY_COLON = ':',
KEY_SEMICOLON = ';',
KEY_LESS = '<',
KEY_EQUALS = '=',
KEY_GREATER = '>',
KEY_QUESTION = '?',
KEY_AT = '@',
KEY_LEFT_BRACKET = '[',
KEY_RIGHT_BRACKET = ']',
KEY_BACKSLASH = '\\',
KEY_CARET = '^',
KEY_UNDERSCORE = '_',
KEY_BACKQUOTE = '`',
KEY_A = 'A',
KEY_B = 'B',
KEY_C = 'C',
KEY_D = 'D',
KEY_E = 'E',
KEY_F = 'F',
KEY_G = 'G',
KEY_H = 'H',
KEY_I = 'I',
KEY_J = 'J',
KEY_K = 'K',
KEY_L = 'L',
KEY_M = 'M',
KEY_N = 'N',
KEY_O = 'O',
KEY_P = 'P',
KEY_Q = 'Q',
KEY_R = 'R',
KEY_S = 'S',
KEY_T = 'T',
KEY_U = 'U',
KEY_V = 'V',
KEY_W = 'W',
KEY_X = 'X',
KEY_Y = 'Y',
KEY_Z = 'Z',
KEY_CAPSLOCK = 1000,
KEY_F1,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_F10,
KEY_F11,
KEY_F12,
KEY_PRINTSCREEN,
KEY_SCROLLLOCK,
KEY_PAUSE,
KEY_INSERT,
KEY_DELETE,
KEY_HOME,
KEY_END,
KEY_PAGEUP,
KEY_PAGEDOWN,
KEY_ARROW_UP,
KEY_ARROW_DOWN,
KEY_ARROW_LEFT,
KEY_ARROW_RIGHT,
KEY_NUMLOCK,
KEY_PAD_DIVIDE,
KEY_PAD_MULTIPLY,
KEY_PAD_MINUS,
KEY_PAD_PLUS,
KEY_PAD_ENTER,
KEY_PAD_1,
KEY_PAD_2,
KEY_PAD_3,
KEY_PAD_4,
KEY_PAD_5,
KEY_PAD_6,
KEY_PAD_7,
KEY_PAD_8,
KEY_PAD_9,
KEY_PAD_0,
KEY_PAD_PERIOD,
KEY_LEFT_CTRL,
KEY_RIGHT_CTRL,
KEY_LEFT_SHIFT,
KEY_RIGHT_SHIFT,
KEY_LEFT_ALT,
KEY_RIGHT_ALT,
KEY_MOUSE_LEFT,
KEY_MOUSE_MIDDLE,
KEY_MOUSE_RIGHT,
KEY_MOUSE_WHEEL_UP,
KEY_MOUSE_WHEEL_DOWN,
KEY_MOUSE_4,
KEY_MOUSE_5,
// @Correctness: check for more keys in: USB spec, linux libinput/x11/wayland/whatever, windows win32
};
struct Event_Key
{
bool pressed;
Key_Code key_code;
};
struct Event_Mouse_Move
{
bool relative;
union
{
v2 position;
v2 delta;
};
};
struct Event_Resize
{
s32 width, height;
};
struct Event_Text
{
char data[16]; // @Correctness: We have a bug if the os sends text that is longer
};
struct Event
{
Event_Type type;
union
{
Event_Key key;
Event_Mouse_Move mouse_move;
Event_Resize resize;
Event_Text text;
};
};
#endif