#include <linux/input.h>
#include "header.h"
+#include "realfuncs.h"
static int ifds[2] = { -1, -1 };
-static int init_done;
static int keystate;
-static void init(void)
+int host_init(void)
{
char buff[64];
int i, ifd, ret;
fprintf(stderr, PFX "missing buttons\n");
if (ifds[1] < 0)
fprintf(stderr, PFX "missing keypad\n");
- init_done = 1;
+
+ return 0;
}
static const struct {
{ BTN_SELECT, GP2X_SELECT },
{ KEY_COMMA, GP2X_VOL_DOWN },
{ KEY_DOT, GP2X_VOL_UP },
- { KEY_Q, GP2X_PUSH },
+ { KEY_1, GP2X_PUSH },
};
int host_read_btns(void)
struct input_event ev;
int i, ret;
- if (!init_done)
- init();
-
while (1)
{
ret = read(ifds[0], &ev, sizeof(ev));
if (ev.type != EV_KEY)
continue;
+ if (ev.code == KEY_Q && ev.value) {
+ // exit() might not be enough because loader and app data is out of sync,
+ // and other threads (which are really processes) might not exit properly.
+ system("killall ginge_sloader");
+ usleep(300000);
+ system("killall -9 ginge_sloader");
+ exit(1);
+ }
+
for (i = 0; i < sizeof(key_map) / sizeof(key_map[0]); i++) {
if (key_map[i].key != ev.code)
continue;