50 lines
837 B
C
50 lines
837 B
C
#include "input.h"
|
|
#include <gint/keyboard.h>
|
|
|
|
static struct Input input;
|
|
static const int default_map[K_COUNT] = {
|
|
KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, KEY_SHIFT,
|
|
KEY_ALPHA, KEY_EXIT, KEY_F3, KEY_F2, KEY_F1};
|
|
|
|
void
|
|
input_init(void)
|
|
{
|
|
|
|
int i = K_COUNT;
|
|
while (i-- > 0) {
|
|
input.keys[i] = default_map[i];
|
|
input.states[i] = KS_UP;
|
|
}
|
|
}
|
|
|
|
void
|
|
input_update(void)
|
|
{
|
|
int i = K_COUNT;
|
|
clearevents();
|
|
while (i-- > 0) {
|
|
const int kdown = keydown(input.keys[i]);
|
|
input.states[i] = (input.states[i] == KS_UP)
|
|
? (kdown ? KS_PRESS : KS_UP)
|
|
: (kdown ? KS_DOWN : KS_UP);
|
|
}
|
|
}
|
|
|
|
int
|
|
input_down(enum Key k)
|
|
{
|
|
return input.states[k] != KS_UP;
|
|
}
|
|
|
|
int
|
|
input_pressed(enum Key k)
|
|
{
|
|
return input.states[k] == KS_PRESS;
|
|
}
|
|
|
|
int
|
|
input_up(enum Key k)
|
|
{
|
|
return input.states[k] == KS_UP;
|
|
}
|