# test_keys.ky struct Key name : str code : int end proc draw_text_center_x(font:FixedFont, text:str, w:fp, y:fp) glyph_w = imgw(font.glyphs[0]) draw_fixed_font(font, text, (w-slen(text)*glyph_w)/2, y, ftoi(w/glyph_w), 1) end proc run() font = create_fixed_font(blend(img(DEFAULT_FONT16_PNG), BLEND_MUL, BLACK), 16, 8, 2.0, 2.0, 1.0, 0.0) ginit("Test Keys", 640.0, 480.0) test_keys = { {"any key", ANY_KEY}, {"left control", KEY_CONTROL}, {"right control", KEY_CONTROL}, {"left shift", KEY_SHIFT}, {"right shift", KEY_SHIFT}, {"left alt", KEY_ALT}, {"right alt", KEY_ALT}, {"escape", KEY_ESCAPE}, {"backspace", KEY_BACKSPACE}, {"delete", KEY_DELETE}, {"space", KEY_SPACE}, {"tab", KEY_TAB}, {"left", KEY_LEFT}, {"up", KEY_UP}, {"right", KEY_RIGHT}, {"down", KEY_DOWN}, {"0", KEY_0}, {"1", KEY_1}, {"2", KEY_2}, {"3", KEY_3}, {"4", KEY_4}, {"5", KEY_5}, {"6", KEY_6}, {"7", KEY_7}, {"8", KEY_8}, {"9", KEY_9}, {"a", KEY_A}, {"b", KEY_B}, {"c", KEY_C}, {"d", KEY_D}, {"e", KEY_E}, {"f", KEY_F}, {"g", KEY_G}, {"h", KEY_H}, {"i", KEY_I}, {"j", KEY_J}, {"k", KEY_K}, {"l", KEY_L}, {"m", KEY_M}, {"n", KEY_N}, {"o", KEY_O}, {"p", KEY_P}, {"q", KEY_Q}, {"r", KEY_R}, {"s", KEY_S}, {"t", KEY_T}, {"u", KEY_U}, {"v", KEY_V}, {"w", KEY_W}, {"x", KEY_X}, {"y", KEY_Y}, {"z", KEY_Z}, {"f1", KEY_F1}, {"f2", KEY_F2}, {"f3", KEY_F3}, {"f4", KEY_F4}, {"f5", KEY_F5}, {"f6", KEY_F6}, {"f7", KEY_F7}, {"f8", KEY_F8}, {"f9", KEY_F9} # can't reliably test other function keys } as Key[] test_key_index = 0 y = (480.0-32.0) / 2.0 while progstate() != 0 & test_key_index != alen(test_keys) do test_key = test_keys[test_key_index] gbegin() clear(WHITE) draw_text_center_x(font, test_key.name, 640.0, y) gend() sleep(250) keys = keystates() if keydown(keys, test_key.code) then test_key_index = test_key_index + 1 end end if progstate() != 0 then gbegin() clear(WHITE) draw_text_center_x(font, "Test passed!", 640.0, y) gend() sleep(1000) end end