type_t type__app_key_t = { type_kind_enum, s8_const_lit("app_key_t"), sizeof(app_key_t), .members = (type_member_t[]){ {.name = s8_const_lit("app_key_null"), .value = app_key_null}, {.name = s8_const_lit("app_key_1"), .value = app_key_1}, {.name = s8_const_lit("app_key_2"), .value = app_key_2}, {.name = s8_const_lit("app_key_3"), .value = app_key_3}, {.name = s8_const_lit("app_key_4"), .value = app_key_4}, {.name = s8_const_lit("app_key_5"), .value = app_key_5}, {.name = s8_const_lit("app_key_6"), .value = app_key_6}, {.name = s8_const_lit("app_key_7"), .value = app_key_7}, {.name = s8_const_lit("app_key_8"), .value = app_key_8}, {.name = s8_const_lit("app_key_9"), .value = app_key_9}, {.name = s8_const_lit("app_key_0"), .value = app_key_0}, {.name = s8_const_lit("app_key_f1"), .value = app_key_f1}, {.name = s8_const_lit("app_key_f2"), .value = app_key_f2}, {.name = s8_const_lit("app_key_f3"), .value = app_key_f3}, {.name = s8_const_lit("app_key_f4"), .value = app_key_f4}, {.name = s8_const_lit("app_key_f5"), .value = app_key_f5}, {.name = s8_const_lit("app_key_f6"), .value = app_key_f6}, {.name = s8_const_lit("app_key_f7"), .value = app_key_f7}, {.name = s8_const_lit("app_key_f8"), .value = app_key_f8}, {.name = s8_const_lit("app_key_f9"), .value = app_key_f9}, {.name = s8_const_lit("app_key_f10"), .value = app_key_f10}, {.name = s8_const_lit("app_key_f11"), .value = app_key_f11}, {.name = s8_const_lit("app_key_f12"), .value = app_key_f12}, {.name = s8_const_lit("app_key_a"), .value = app_key_a}, {.name = s8_const_lit("app_key_b"), .value = app_key_b}, {.name = s8_const_lit("app_key_c"), .value = app_key_c}, {.name = s8_const_lit("app_key_d"), .value = app_key_d}, {.name = s8_const_lit("app_key_e"), .value = app_key_e}, {.name = s8_const_lit("app_key_f"), .value = app_key_f}, {.name = s8_const_lit("app_key_g"), .value = app_key_g}, {.name = s8_const_lit("app_key_h"), .value = app_key_h}, {.name = s8_const_lit("app_key_i"), .value = app_key_i}, {.name = s8_const_lit("app_key_j"), .value = app_key_j}, {.name = s8_const_lit("app_key_k"), .value = app_key_k}, {.name = s8_const_lit("app_key_l"), .value = app_key_l}, {.name = s8_const_lit("app_key_m"), .value = app_key_m}, {.name = s8_const_lit("app_key_n"), .value = app_key_n}, {.name = s8_const_lit("app_key_o"), .value = app_key_o}, {.name = s8_const_lit("app_key_p"), .value = app_key_p}, {.name = s8_const_lit("app_key_q"), .value = app_key_q}, {.name = s8_const_lit("app_key_r"), .value = app_key_r}, {.name = s8_const_lit("app_key_s"), .value = app_key_s}, {.name = s8_const_lit("app_key__t"), .value = app_key__t}, {.name = s8_const_lit("app_key_u"), .value = app_key_u}, {.name = s8_const_lit("app_key_v"), .value = app_key_v}, {.name = s8_const_lit("app_key_w"), .value = app_key_w}, {.name = s8_const_lit("app_key_x"), .value = app_key_x}, {.name = s8_const_lit("app_key_y"), .value = app_key_y}, {.name = s8_const_lit("app_key_z"), .value = app_key_z}, {.name = s8_const_lit("app_key_space"), .value = app_key_space}, {.name = s8_const_lit("app_key_enter"), .value = app_key_enter}, {.name = s8_const_lit("app_key_escape"), .value = app_key_escape}, {.name = s8_const_lit("app_key_left"), .value = app_key_left}, {.name = s8_const_lit("app_key_up"), .value = app_key_up}, {.name = s8_const_lit("app_key_right"), .value = app_key_right}, {.name = s8_const_lit("app_key_down"), .value = app_key_down}, {.name = s8_const_lit("app_key_tab"), .value = app_key_tab}, {.name = s8_const_lit("app_key_backspace"), .value = app_key_backspace}, {.name = s8_const_lit("app_key_control"), .value = app_key_control}, {.name = s8_const_lit("app_key_shift"), .value = app_key_shift}, {.name = s8_const_lit("app_key_alt"), .value = app_key_alt}, {.name = s8_const_lit("app_key_meta"), .value = app_key_meta}, {.name = s8_const_lit("app_key_caps_lock"), .value = app_key_caps_lock}, {.name = s8_const_lit("app_key_delete"), .value = app_key_delete}, {.name = s8_const_lit("app_key_home"), .value = app_key_home}, {.name = s8_const_lit("app_key_end"), .value = app_key_end}, {.name = s8_const_lit("app_key_insert"), .value = app_key_insert}, {.name = s8_const_lit("app_key_page_up"), .value = app_key_page_up}, {.name = s8_const_lit("app_key_page_down"), .value = app_key_page_down}, }, .count = 69, }; #if PLATFORM_WASM typedef struct { app_key_t key; b32 filter_out; } wasm_key_map_t; wasm_key_map_t wasm_map_key_string_to_app_key(s8_t key) { if (0) {} else if (s8_equal_ex(key, s8_lit("1"), s8_ignore_case)) return (wasm_key_map_t){app_key_1, 0}; else if (s8_equal_ex(key, s8_lit("2"), s8_ignore_case)) return (wasm_key_map_t){app_key_2, 0}; else if (s8_equal_ex(key, s8_lit("3"), s8_ignore_case)) return (wasm_key_map_t){app_key_3, 0}; else if (s8_equal_ex(key, s8_lit("4"), s8_ignore_case)) return (wasm_key_map_t){app_key_4, 0}; else if (s8_equal_ex(key, s8_lit("5"), s8_ignore_case)) return (wasm_key_map_t){app_key_5, 0}; else if (s8_equal_ex(key, s8_lit("6"), s8_ignore_case)) return (wasm_key_map_t){app_key_6, 0}; else if (s8_equal_ex(key, s8_lit("7"), s8_ignore_case)) return (wasm_key_map_t){app_key_7, 0}; else if (s8_equal_ex(key, s8_lit("8"), s8_ignore_case)) return (wasm_key_map_t){app_key_8, 0}; else if (s8_equal_ex(key, s8_lit("9"), s8_ignore_case)) return (wasm_key_map_t){app_key_9, 0}; else if (s8_equal_ex(key, s8_lit("0"), s8_ignore_case)) return (wasm_key_map_t){app_key_0, 0}; else if (s8_equal_ex(key, s8_lit("F1"), s8_ignore_case)) return (wasm_key_map_t){app_key_f1, 1}; else if (s8_equal_ex(key, s8_lit("F2"), s8_ignore_case)) return (wasm_key_map_t){app_key_f2, 1}; else if (s8_equal_ex(key, s8_lit("F3"), s8_ignore_case)) return (wasm_key_map_t){app_key_f3, 1}; else if (s8_equal_ex(key, s8_lit("F4"), s8_ignore_case)) return (wasm_key_map_t){app_key_f4, 1}; else if (s8_equal_ex(key, s8_lit("F5"), s8_ignore_case)) return (wasm_key_map_t){app_key_f5, 1}; else if (s8_equal_ex(key, s8_lit("F6"), s8_ignore_case)) return (wasm_key_map_t){app_key_f6, 1}; else if (s8_equal_ex(key, s8_lit("F7"), s8_ignore_case)) return (wasm_key_map_t){app_key_f7, 1}; else if (s8_equal_ex(key, s8_lit("F8"), s8_ignore_case)) return (wasm_key_map_t){app_key_f8, 1}; else if (s8_equal_ex(key, s8_lit("F9"), s8_ignore_case)) return (wasm_key_map_t){app_key_f9, 1}; else if (s8_equal_ex(key, s8_lit("F10"), s8_ignore_case)) return (wasm_key_map_t){app_key_f10, 1}; else if (s8_equal_ex(key, s8_lit("F11"), s8_ignore_case)) return (wasm_key_map_t){app_key_f11, 1}; else if (s8_equal_ex(key, s8_lit("F12"), s8_ignore_case)) return (wasm_key_map_t){app_key_f12, 1}; else if (s8_equal_ex(key, s8_lit("a"), s8_ignore_case)) return (wasm_key_map_t){app_key_a, 0}; else if (s8_equal_ex(key, s8_lit("b"), s8_ignore_case)) return (wasm_key_map_t){app_key_b, 0}; else if (s8_equal_ex(key, s8_lit("c"), s8_ignore_case)) return (wasm_key_map_t){app_key_c, 0}; else if (s8_equal_ex(key, s8_lit("d"), s8_ignore_case)) return (wasm_key_map_t){app_key_d, 0}; else if (s8_equal_ex(key, s8_lit("e"), s8_ignore_case)) return (wasm_key_map_t){app_key_e, 0}; else if (s8_equal_ex(key, s8_lit("f"), s8_ignore_case)) return (wasm_key_map_t){app_key_f, 0}; else if (s8_equal_ex(key, s8_lit("g"), s8_ignore_case)) return (wasm_key_map_t){app_key_g, 0}; else if (s8_equal_ex(key, s8_lit("h"), s8_ignore_case)) return (wasm_key_map_t){app_key_h, 0}; else if (s8_equal_ex(key, s8_lit("i"), s8_ignore_case)) return (wasm_key_map_t){app_key_i, 0}; else if (s8_equal_ex(key, s8_lit("j"), s8_ignore_case)) return (wasm_key_map_t){app_key_j, 0}; else if (s8_equal_ex(key, s8_lit("k"), s8_ignore_case)) return (wasm_key_map_t){app_key_k, 0}; else if (s8_equal_ex(key, s8_lit("l"), s8_ignore_case)) return (wasm_key_map_t){app_key_l, 0}; else if (s8_equal_ex(key, s8_lit("m"), s8_ignore_case)) return (wasm_key_map_t){app_key_m, 0}; else if (s8_equal_ex(key, s8_lit("n"), s8_ignore_case)) return (wasm_key_map_t){app_key_n, 0}; else if (s8_equal_ex(key, s8_lit("o"), s8_ignore_case)) return (wasm_key_map_t){app_key_o, 0}; else if (s8_equal_ex(key, s8_lit("p"), s8_ignore_case)) return (wasm_key_map_t){app_key_p, 0}; else if (s8_equal_ex(key, s8_lit("q"), s8_ignore_case)) return (wasm_key_map_t){app_key_q, 0}; else if (s8_equal_ex(key, s8_lit("r"), s8_ignore_case)) return (wasm_key_map_t){app_key_r, 0}; else if (s8_equal_ex(key, s8_lit("s"), s8_ignore_case)) return (wasm_key_map_t){app_key_s, 0}; else if (s8_equal_ex(key, s8_lit("t"), s8_ignore_case)) return (wasm_key_map_t){app_key__t, 0}; else if (s8_equal_ex(key, s8_lit("u"), s8_ignore_case)) return (wasm_key_map_t){app_key_u, 0}; else if (s8_equal_ex(key, s8_lit("v"), s8_ignore_case)) return (wasm_key_map_t){app_key_v, 0}; else if (s8_equal_ex(key, s8_lit("w"), s8_ignore_case)) return (wasm_key_map_t){app_key_w, 0}; else if (s8_equal_ex(key, s8_lit("x"), s8_ignore_case)) return (wasm_key_map_t){app_key_x, 0}; else if (s8_equal_ex(key, s8_lit("y"), s8_ignore_case)) return (wasm_key_map_t){app_key_y, 0}; else if (s8_equal_ex(key, s8_lit("z"), s8_ignore_case)) return (wasm_key_map_t){app_key_z, 0}; else if (s8_equal_ex(key, s8_lit(" "), s8_ignore_case)) return (wasm_key_map_t){app_key_space, 0}; else if (s8_equal_ex(key, s8_lit("Enter"), s8_ignore_case)) return (wasm_key_map_t){app_key_enter, 1}; else if (s8_equal_ex(key, s8_lit("Escape"), s8_ignore_case)) return (wasm_key_map_t){app_key_escape, 1}; else if (s8_equal_ex(key, s8_lit("ArrowLeft"), s8_ignore_case)) return (wasm_key_map_t){app_key_left, 1}; else if (s8_equal_ex(key, s8_lit("ArrowUp"), s8_ignore_case)) return (wasm_key_map_t){app_key_up, 1}; else if (s8_equal_ex(key, s8_lit("ArrowRight"), s8_ignore_case)) return (wasm_key_map_t){app_key_right, 1}; else if (s8_equal_ex(key, s8_lit("ArrowDown"), s8_ignore_case)) return (wasm_key_map_t){app_key_down, 1}; else if (s8_equal_ex(key, s8_lit("Tab"), s8_ignore_case)) return (wasm_key_map_t){app_key_tab, 1}; else if (s8_equal_ex(key, s8_lit("Backspace"), s8_ignore_case)) return (wasm_key_map_t){app_key_backspace, 1}; else if (s8_equal_ex(key, s8_lit("Control"), s8_ignore_case)) return (wasm_key_map_t){app_key_control, 1}; else if (s8_equal_ex(key, s8_lit("Shift"), s8_ignore_case)) return (wasm_key_map_t){app_key_shift, 1}; else if (s8_equal_ex(key, s8_lit("Alt"), s8_ignore_case)) return (wasm_key_map_t){app_key_alt, 1}; else if (s8_equal_ex(key, s8_lit("AltGraph"), s8_ignore_case)) return (wasm_key_map_t){app_key_alt, 1}; else if (s8_equal_ex(key, s8_lit("Meta"), s8_ignore_case)) return (wasm_key_map_t){app_key_meta, 1}; else if (s8_equal_ex(key, s8_lit("CapsLock"), s8_ignore_case)) return (wasm_key_map_t){app_key_caps_lock, 1}; else if (s8_equal_ex(key, s8_lit("Delete"), s8_ignore_case)) return (wasm_key_map_t){app_key_delete, 1}; else if (s8_equal_ex(key, s8_lit("Home"), s8_ignore_case)) return (wasm_key_map_t){app_key_home, 1}; else if (s8_equal_ex(key, s8_lit("End"), s8_ignore_case)) return (wasm_key_map_t){app_key_end, 1}; else if (s8_equal_ex(key, s8_lit("Insert"), s8_ignore_case)) return (wasm_key_map_t){app_key_insert, 1}; else if (s8_equal_ex(key, s8_lit("PageUp"), s8_ignore_case)) return (wasm_key_map_t){app_key_page_up, 1}; else if (s8_equal_ex(key, s8_lit("PageDown"), s8_ignore_case)) return (wasm_key_map_t){app_key_page_down, 1}; return (wasm_key_map_t){0}; } #endif #if PLATFORM_WINDOWS app_key_t w32_map_wparam_to_app_key(WPARAM wparam) { switch(wparam) { case '1': return app_key_1; break; case '2': return app_key_2; break; case '3': return app_key_3; break; case '4': return app_key_4; break; case '5': return app_key_5; break; case '6': return app_key_6; break; case '7': return app_key_7; break; case '8': return app_key_8; break; case '9': return app_key_9; break; case '0': return app_key_0; break; case VK_F1: return app_key_f1; break; case VK_F2: return app_key_f2; break; case VK_F3: return app_key_f3; break; case VK_F4: return app_key_f4; break; case VK_F5: return app_key_f5; break; case VK_F6: return app_key_f6; break; case VK_F7: return app_key_f7; break; case VK_F8: return app_key_f8; break; case VK_F9: return app_key_f9; break; case VK_F10: return app_key_f10; break; case VK_F11: return app_key_f11; break; case VK_F12: return app_key_f12; break; case 'A': return app_key_a; break; case 'B': return app_key_b; break; case 'C': return app_key_c; break; case 'D': return app_key_d; break; case 'E': return app_key_e; break; case 'F': return app_key_f; break; case 'G': return app_key_g; break; case 'H': return app_key_h; break; case 'I': return app_key_i; break; case 'J': return app_key_j; break; case 'K': return app_key_k; break; case 'L': return app_key_l; break; case 'M': return app_key_m; break; case 'N': return app_key_n; break; case 'O': return app_key_o; break; case 'P': return app_key_p; break; case 'Q': return app_key_q; break; case 'R': return app_key_r; break; case 'S': return app_key_s; break; case 'T': return app_key__t; break; case 'U': return app_key_u; break; case 'V': return app_key_v; break; case 'W': return app_key_w; break; case 'X': return app_key_x; break; case 'Y': return app_key_y; break; case 'Z': return app_key_z; break; case VK_SPACE: return app_key_space; break; case VK_RETURN: return app_key_enter; break; case VK_ESCAPE: return app_key_escape; break; case VK_LEFT: return app_key_left; break; case VK_UP: return app_key_up; break; case VK_RIGHT: return app_key_right; break; case VK_DOWN: return app_key_down; break; case VK_TAB: return app_key_tab; break; case VK_BACK: return app_key_backspace; break; case VK_CONTROL: return app_key_control; break; case VK_SHIFT: return app_key_shift; break; case VK_LMENU: return app_key_alt; break; case VK_RMENU: return app_key_alt; break; case VK_LWIN: return app_key_meta; break; case VK_RWIN: return app_key_meta; break; case VK_CAPITAL: return app_key_caps_lock; break; case VK_DELETE: return app_key_delete; break; case VK_HOME: return app_key_home; break; case VK_END: return app_key_end; break; case VK_NEXT: return app_key_insert; break; case VK_INSERT: return app_key_page_up; break; case VK_PRIOR: return app_key_page_down; break; default: {return app_key_null;} break; } } #endif/*C:\dev\wasm\src/app/app.meta.c*/ type_t type__app_mouse_button_t = { type_kind_enum, s8_const_lit("app_mouse_button_t"), sizeof(app_mouse_button_t), .members = (type_member_t[]){ {.name = s8_const_lit("app_mouse_button_null"), .value = app_mouse_button_null}, {.name = s8_const_lit("app_mouse_button_left"), .value = app_mouse_button_left}, {.name = s8_const_lit("app_mouse_button_middle"), .value = app_mouse_button_middle}, {.name = s8_const_lit("app_mouse_button_right"), .value = app_mouse_button_right}, {.name = s8_const_lit("app_mouse_button_count"), .value = app_mouse_button_count}, }, .count = 5, }; type_t type__app_event_kind_t = { type_kind_enum, s8_const_lit("app_event_kind_t"), sizeof(app_event_kind_t), .members = (type_member_t[]){ {.name = s8_const_lit("app_event_kind_null"), .value = app_event_kind_null}, {.name = s8_const_lit("app_event_kind_update"), .value = app_event_kind_update}, {.name = s8_const_lit("app_event_kind_text"), .value = app_event_kind_text}, {.name = s8_const_lit("app_event_kind_key_down"), .value = app_event_kind_key_down}, {.name = s8_const_lit("app_event_kind_key_up"), .value = app_event_kind_key_up}, {.name = s8_const_lit("app_event_kind_mouse_down"), .value = app_event_kind_mouse_down}, {.name = s8_const_lit("app_event_kind_mouse_up"), .value = app_event_kind_mouse_up}, {.name = s8_const_lit("app_event_kind_mouse_wheel"), .value = app_event_kind_mouse_wheel}, {.name = s8_const_lit("app_event_kind_mouse_move"), .value = app_event_kind_mouse_move}, {.name = s8_const_lit("app_event_kind_count"), .value = app_event_kind_count}, }, .count = 10, }; type_t type__app_event_t = { type_kind_struct, s8_const_lit("app_event_t"), sizeof(app_event_t), .members = (type_member_t[]){ {.name = s8_const_lit("next"), .type = &(type_t){type_kind_pointer, s8_const_lit("app_event_t*"), sizeof(void *), .base = &type__app_event_t}, .offset = offsetof(app_event_t, next), .dont_serialize = 0}, {.name = s8_const_lit("kind"), .type = &type__app_event_kind_t, .offset = offsetof(app_event_t, kind), .dont_serialize = 0}, {.name = s8_const_lit("mouse_button"), .type = &type__app_mouse_button_t, .offset = offsetof(app_event_t, mouse_button), .dont_serialize = 0}, {.name = s8_const_lit("key"), .type = &type__app_key_t, .offset = offsetof(app_event_t, key), .dont_serialize = 0}, {.name = s8_const_lit("text"), .type = &type__s8_t, .offset = offsetof(app_event_t, text), .dont_serialize = 0}, {.name = s8_const_lit("mouse_wheel_delta"), .type = &type__v3f32_t, .offset = offsetof(app_event_t, mouse_wheel_delta), .dont_serialize = 0}, {.name = s8_const_lit("mouse_pos"), .type = &type__v2f32_t, .offset = offsetof(app_event_t, mouse_pos), .dont_serialize = 0}, {.name = s8_const_lit("ctrl"), .type = &type__b8, .offset = offsetof(app_event_t, ctrl), .dont_serialize = 0}, {.name = s8_const_lit("shift"), .type = &type__b8, .offset = offsetof(app_event_t, shift), .dont_serialize = 0}, {.name = s8_const_lit("alt"), .type = &type__b8, .offset = offsetof(app_event_t, alt), .dont_serialize = 0}, }, .count = 10, }; type_t type__app_frame_t = { type_kind_struct, s8_const_lit("app_frame_t"), sizeof(app_frame_t), .members = (type_member_t[]){ {.name = s8_const_lit("next"), .type = &(type_t){type_kind_pointer, s8_const_lit("app_frame_t*"), sizeof(void *), .base = &type__app_frame_t}, .offset = offsetof(app_frame_t, next), .dont_serialize = 0}, {.name = s8_const_lit("delta"), .type = &type__f64, .offset = offsetof(app_frame_t, delta), .dont_serialize = 0}, {.name = s8_const_lit("dpr"), .type = &type__f32, .offset = offsetof(app_frame_t, dpr), .dont_serialize = 0}, {.name = s8_const_lit("frame"), .type = &type__u64, .offset = offsetof(app_frame_t, frame), .dont_serialize = 0}, {.name = s8_const_lit("window_size"), .type = &type__v2f32_t, .offset = offsetof(app_frame_t, window_size), .dont_serialize = 0}, {.name = s8_const_lit("mouse_pos"), .type = &type__v2f32_t, .offset = offsetof(app_frame_t, mouse_pos), .dont_serialize = 0}, {.name = s8_const_lit("event_count"), .type = &type__i32, .offset = offsetof(app_frame_t, event_count), .dont_serialize = 0}, {.name = s8_const_lit("first_event"), .type = &(type_t){type_kind_pointer, s8_const_lit("app_event_t*"), sizeof(void *), .base = &type__app_event_t}, .offset = offsetof(app_frame_t, first_event), .dont_serialize = 0}, {.name = s8_const_lit("last_event"), .type = &(type_t){type_kind_pointer, s8_const_lit("app_event_t*"), sizeof(void *), .base = &type__app_event_t}, .offset = offsetof(app_frame_t, last_event), .dont_serialize = 0}, {.name = s8_const_lit("update"), .type = &type__f64, .offset = offsetof(app_frame_t, update), .dont_serialize = 0}, }, .count = 10, };