/* * Released into the public domain * by Aki Goto */ #ifndef MULTIBUTTON_H #define MULTIBUTTON_H #include "gamepad.h" enum { Modifier_NONE, Modifier_SHIFT, Modifier_CONTROL, Modifier_ALT, }; struct Code { int modifier; int first; int second; }; struct MultiButton { struct Button *buttons[8]; int size; struct Button *list[8]; int available; int sequenceSize; struct Button *sequence[8]; int modifier; struct Code code; }; extern void MultiButton_initialize(struct MultiButton *this, struct Gamepad *gamepad); extern void MultiButton_reset(struct MultiButton *this); extern void MultiButton_update(struct MultiButton *this, struct js_event *event); extern void MultiButton_generate(struct MultiButton *this); enum { Special_NONE, Special_CANCEL, Special_MODE, Special_RESERVED1, Special_RESERVED2, }; struct MultiSpecial { struct Button *buttons[2]; int size; struct Button *list[8]; int available; int code; }; extern void MultiSpecial_initialize(struct MultiSpecial *this, struct Gamepad *gamepad); extern void MultiSpecial_reset(struct MultiSpecial *this); extern void MultiSpecial_update(struct MultiSpecial *this, struct js_event *event); extern void MultiSpecial_generate(struct MultiSpecial *this); #endif