#include "input.h" #include static Input input; void input_init(void) { int i = K_COUNT; while (i-- > 0) { input.states[i] = KS_UP; } input.keys[K_A] = KEY_SHIFT; input.keys[K_B] = KEY_ALPHA; input.keys[K_X] = KEY_OPTN; input.keys[K_Y] = KEY_SQUARE; input.keys[K_LEFT] = KEY_LEFT; input.keys[K_RIGHT] = KEY_RIGHT; input.keys[K_UP] = KEY_UP; input.keys[K_DOWN] = KEY_DOWN; input.keys[K_EXIT] = KEY_MENU; } void input_step(void) { int i = K_COUNT; clearevents(); while (i-- > 0) { const int kdown = keydown(input.keys[i]); KeyState *const state = &input.states[i]; const KeyState prev_state = input.states[i]; switch (prev_state) { case KS_UP: case KS_RELEASE: *state = (kdown) ? (KS_PRESS) : (KS_UP); break; case KS_DOWN: case KS_PRESS: *state = (kdown) ? (KS_DOWN) : (KS_RELEASE); break; default: break; } } } int input_down(Key k) { return input.states[k] == KS_DOWN || input.states[k] == KS_PRESS; } int input_pressed(Key k) { return input.states[k] == KS_PRESS; } int input_up(Key k) { return !input_down(k); } int input_released(Key k) { return input.states[k] == KS_RELEASE; }