typedef struct win_sys win_sys_t; typedef struct win_wm win_wm_t; typedef struct { int x, y, z; int w, h; win_sys_t *sys; win_wm_t *wm; } win_t; typedef enum { // 'char' = unicode, key_alert = '\a', // Bell (alert) key_backspace = '\b', // Backspace key_formfeed = '\f', // Formfeed key_newline = '\n', // New line key_return = '\r', // Carriage return key_tab = '\t', // Horizontal tab key_vtab = '\v', // Vertical tab key_singlequote = '\'', // Single quotation mark key_doublequote = '\"', // Double quotation mark key_backslash = '\\', // Backslash key_question = '\?', // Literal question mark key_none = 0xF0000, // unused unicode space key_mouse0, key_mouse1, key_mouse2, key_mouse3, key_mouse4, key_mouse5, key_mouse6, key_mouse7, key_left, key_right, key_up, key_down, key_home, key_end, key_pageup, key_pagedown, 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_alt, key_ctrl, key_shift, key_win, key_enter, key_leave, key_focus, key_unfocus, } Key_t; typedef struct { unsigned char alt : 1; unsigned char ctrl : 1; unsigned char shift : 1; unsigned char win : 1; unsigned char up : 1; unsigned char spare : 3; } mod_t; #define MOD(...) ((mod_t){__VA_ARGS__}) #define mod2int(mod) (*((unsigned short*)&(mod))) typedef struct { int x, y; int rx, ry; } ptr_t; #define PTR(...) ((ptr_t){__VA_ARGS__}) void sys_watch(win_t *win, Key_t key, mod_t mod); void sys_move(win_t *win, int x, int y, int w, int h); void sys_raise(win_t *win); void sys_focus(win_t *win); void sys_foreach(win_t *win); win_t *sys_init(void); void sys_run(win_t *root);