#include "plat.h"
#include "lprintf.h"
-#ifdef IN_GP2X
-#error needs update: in_gp2x_init in_gp2x_update
-#include "../gp2x/in_gp2x.h"
-#endif
#ifdef IN_VK
#error needs update: in_vk_init in_vk_update
#include "../win32/in_vk.h"
defbinds = DRV(drv_id).defbinds;
if (defbinds != NULL) {
for (i = 0; ; i++) {
- if (defbinds[i].bit == 0 && defbinds[i].code == 0)
+ if (defbinds[i].bit == 0 && defbinds[i].btype == 0
+ && defbinds[i].bit == 0)
break;
binds[IN_BIND_OFFS(defbinds[i].code, defbinds[i].btype)] =
1 << defbinds[i].bit;
int in_menu_wait_any(char *charcode, int timeout_ms)
{
int keys_old = menu_key_state;
+ int ret;
while (1)
{
}
}
- return menu_key_state;
+ ret = menu_key_state;
+ menu_key_state &= ~PBTN_CHAR;
+ return ret;
}
/* wait for menu input, do autorepeat */
case IN_CFG_KEY_NAMES:
return -1; /* not implemented */
default:
+ if (!dev->probed)
+ return -1;
+
return DRV(dev->drv_id).get_config(dev->drv_data, what, ival);
}
/* have_async_devs means we will have to do all reads async anyway.. */
if (!in_have_async_devs) {
for (i = 0; i < in_dev_count; i++) {
- if (in_devices[i].probed)
- DRV(in_devices[i].drv_id).set_config(in_devices[i].drv_data,
- IN_CFG_BLOCKING, is_blocking);
+ if (!in_devices[i].probed)
+ continue;
+
+ DRV(in_devices[i].drv_id).set_config(
+ in_devices[i].drv_data, IN_CFG_BLOCKING,
+ is_blocking);
}
}
int ret, count, *binds, *def_binds;
in_dev_t *dev = &in_devices[i];
- if (dev->binds == NULL || dev->drv_data == NULL)
+ if (dev->binds == NULL || !dev->probed)
continue;
count = dev->key_count;