twm_window
Win32
typedef HWND twm_window;
Xlib
typedef Window twm_window;
Cocoa
C++
typedef NS::Window * twm_window;
Objective-C
typedef NSWindow * twm_window;
Structs and Enums
typedef struct twm_rect {
int x, y;
int width, height;
} twm_rect;
typedef struct twm_screen_mode {
int width, height;
int bpp;
int hz;
} twm_screen_mode;
typedef struct twm_screen {
int x, y, width, height;
char name[128];
struct {
int count;
int current;
twm_screen_mode* mode;
} modes;
} twm_screen;
typedef enum twm_window_flags {
TWM_WINDOW_DIALOG = 0,
TWM_WINDOW_RESIZABLE = 1 << 0,
TWM_WINDOW_BORDERLESS = 1 << 1,
TWM_WINDOW_FULLSCREEN = 1 << 2,
TWM_WINDOW_DEFAULT = (TWM_WINDOW_DIALOG | TWM_WINDOW_RESIZABLE),
} twm_window_flags;
typedef enum twm_key
{
TWM_KEY_UNKNOWN,
TWM_KEY_A, TWM_KEY_B, TWM_KEY_C, TWM_KEY_D,
TWM_KEY_E, TWM_KEY_F, TWM_KEY_G, TWM_KEY_H,
TWM_KEY_I, TWM_KEY_J, TWM_KEY_K, TWM_KEY_L,
TWM_KEY_M, TWM_KEY_N, TWM_KEY_O, TWM_KEY_P,
TWM_KEY_Q, TWM_KEY_R, TWM_KEY_S, TWM_KEY_T,
TWM_KEY_U, TWM_KEY_V, TWM_KEY_W, TWM_KEY_X,
TWM_KEY_Y, TWM_KEY_Z,
TWM_KEY_0, TWM_KEY_1, TWM_KEY_2, TWM_KEY_3,
TWM_KEY_4, TWM_KEY_5, TWM_KEY_6, TWM_KEY_7,
TWM_KEY_8, TWM_KEY_9,
TWM_KEY_ESCAPE,
TWM_KEY_TAB,
TWM_KEY_CAPSLOCK,
TWM_KEY_SHIFT,
TWM_KEY_LSHIFT,
TWM_KEY_RSHIFT,
TWM_KEY_CONTROL,
TWM_KEY_LCONTROL,
TWM_KEY_RCONTROL,
TWM_KEY_MENU,
TWM_KEY_LALT,
TWM_KEY_RALT,
TWM_KEY_SPACE,
TWM_KEY_ENTER,
TWM_KEY_BACKSPACE,
TWM_KEY_INSERT,
TWM_KEY_DELETE,
TWM_KEY_HOME,
TWM_KEY_END,
TWM_KEY_PAGEUP,
TWM_KEY_PAGEDOWN,
TWM_KEY_PRINTSCREEN,
TWM_KEY_SCROLLLOCK,
TWM_KEY_PAUSE,
TWM_KEY_LEFT,
TWM_KEY_RIGHT,
TWM_KEY_UP,
TWM_KEY_DOWN,
TWM_KEY_F1, TWM_KEY_F2, TWM_KEY_F3, TWM_KEY_F4,
TWM_KEY_F5, TWM_KEY_F6, TWM_KEY_F7, TWM_KEY_F8,
TWM_KEY_F9, TWM_KEY_F10, TWM_KEY_F11, TWM_KEY_F12,
TWM_KEY_NUMLOCK,
TWM_KEY_NUMPAD0,
TWM_KEY_NUMPAD1,
TWM_KEY_NUMPAD2,
TWM_KEY_NUMPAD3,
TWM_KEY_NUMPAD4,
TWM_KEY_NUMPAD5,
TWM_KEY_NUMPAD6,
TWM_KEY_NUMPAD7,
TWM_KEY_NUMPAD8,
TWM_KEY_NUMPAD9,
TWM_KEY_NUMPAD_ADD,
TWM_KEY_NUMPAD_SUBTRACT,
TWM_KEY_NUMPAD_MULTIPLY,
TWM_KEY_NUMPAD_DIVIDE,
TWM_KEY_NUMPAD_DECIMAL,
TWM_KEY_NUMPAD_ENTER,
TWM_KEY_LSUPER,
TWM_KEY_RSUPER,
TWM_KEY_BROWSER_BACK,
TWM_KEY_BROWSER_FORWARD,
TWM_KEY_VOLUME_MUTE,
TWM_KEY_VOLUME_DOWN,
TWM_KEY_VOLUME_UP,
TWM_KEY_SEMICOLON,
TWM_KEY_EQUAL,
TWM_KEY_COMMA,
TWM_KEY_MINUS,
TWM_KEY_PERIOD,
TWM_KEY_SLASH,
TWM_KEY_GRAVE,
TWM_KEY_LEFT_BRACKET,
TWM_KEY_BACKSLASH,
TWM_KEY_RIGHT_BRACKET,
TWM_KEY_APOSTROPHE
} twm_key;
typedef enum twm_keymod
{
TWM_KEYMOD_NONE = 0,
TWM_KEYMOD_SHIFT = 1 << 0,
TWM_KEYMOD_CTRL = 1 << 1,
TWM_KEYMOD_ALT = 1 << 2,
TWM_KEYMOD_LSHIFT = 1 << 3,
TWM_KEYMOD_RSHIFT = 1 << 4,
TWM_KEYMOD_LCTRL = 1 << 5,
TWM_KEYMOD_RCTRL = 1 << 6,
TWM_KEYMOD_LALT = 1 << 7,
TWM_KEYMOD_RALT = 1 << 8,
TWM_KEYMOD_LWIN = 1 << 9,
TWM_KEYMOD_RWIN = 1 << 10,
TWM_KEYMOD_MENU = 1 << 11,
TWM_KEYMOD_NUMLOCK = 1 << 12,
TWM_KEYMOD_SCROLLLOCK = 1 << 13,
TWM_KEYMOD_CAPSLOCK = 1 << 14,
} twm_keymod;
typedef enum twm_event_type {
TWM_EVENT_NONE,
TWM_EVENT_WINDOW_CLOSE,
TWM_EVENT_WINDOW_SIZE,
TWM_EVENT_WINDOW_MOVE,
TWM_EVENT_WINDOW_MAXIMIZE,
TWM_EVENT_WINDOW_MINIMIZE,
TWM_EVENT_WINDOW_RESTORE,
TWM_EVENT_WINDOW_ACTIVE,
TWM_EVENT_WINDOW_INACTIVE,
TWM_EVENT_KEY_DOWN,
TWM_EVENT_KEY_UP,
TWM_EVENT_KEY_CHAR,
TWM_EVENT_RAWMOUSE_MOVE,
TWM_EVENT_MOUSE_MOVE,
TWM_EVENT_MOUSE_ENTER,
TWM_EVENT_MOUSE_LEAVE,
TWM_EVENT_MOUSE_WHEEL,
TWM_EVENT_MOUSE_DOWN,
TWM_EVENT_MOUSE_UP,
} twm_event_type;
typedef struct twm_window_event {
twm_event_type type;
twm_window window;
int x;
int y;
int width;
int height;
} twm_window_event;
typedef struct twm_keyboard_event {
twm_event_type type;
twm_window window;
unsigned short key;
char chr[5];
twm_keymod modifiers;
} twm_keyboard_event;
typedef enum twm_mouse_button {
TWM_MB_LEFT,
TWM_MB_MIDDLE,
TWM_MB_RIGHT,
TWM_MB_X1,
TWM_MB_X2,
} twm_mouse_button;
typedef struct twm_rawmouse_event {
twm_event_type type;
twm_window window;
int dx;
int dy;
} twm_rawmouse_event;
typedef struct twm_mouse_event {
twm_event_type type;
twm_window window;
twm_mouse_button button;
int x;
int y;
int z;
int w;
} twm_mouse_event;
typedef union twm_event {
twm_event_type type;
twm_window_event window;
twm_mouse_event mouse;
twm_rawmouse_event rawmouse;
twm_keyboard_event keyboard;
} twm_event;