From: notaz Date: Thu, 15 May 2025 22:26:12 +0000 (+0300) Subject: input: introduce in_update_pointer X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b020891af87e9f0554e938db5ba4d3c4744b1b2e;p=libpicofe.git input: introduce in_update_pointer update_analog is meant for reading analog axes, so new function is needed for what's implemented in in_sdl. --- diff --git a/in_sdl.c b/in_sdl.c index df94b91..780e3cd 100644 --- a/in_sdl.c +++ b/in_sdl.c @@ -486,14 +486,14 @@ static int in_sdl_update_kbd(void *drv_data, const int *binds, int *result) return b; } -static int in_sdl_update_analog(void *drv_data, int axis_id, int *result) +static int in_sdl_update_pointer(void *drv_data, int id, int *result) { struct in_sdl_state *state = drv_data; int max; *result = 0; - switch (axis_id) { + switch (id) { // absolute position, clipped at the window/screen border case 0: if ((max = state->revent.resize.w)) *result = state->mevent.motion.x * 2*1024/max - 1024; @@ -608,7 +608,7 @@ static const in_drv_t in_sdl_drv = { .get_key_names = in_sdl_get_key_names, .update = in_sdl_update, .update_kbd = in_sdl_update_kbd, - .update_analog = in_sdl_update_analog, + .update_pointer = in_sdl_update_pointer, .update_keycode = in_sdl_update_keycode, .menu_translate = in_sdl_menu_translate, .clean_binds = in_sdl_clean_binds, diff --git a/input.c b/input.c index b170a47..2fb1b10 100644 --- a/input.c +++ b/input.c @@ -350,6 +350,16 @@ int in_update_analog(int dev_id, int axis_id, int *result) return DRV(dev->drv_id).update_analog(dev->drv_data, axis_id, result); } +int in_update_pointer(int dev_id, int id, int *result) +{ + in_dev_t *dev = get_dev(dev_id); + + if (dev == NULL || !dev->probed) + return -1; + + return DRV(dev->drv_id).update_pointer(dev->drv_data, id, result); +} + static int in_update_kc_async(int *dev_id_out, int *is_down_out, int timeout_ms) { int i, is_down, result; @@ -1056,6 +1066,7 @@ static int in_def_clean_binds(void *drv_data, int *b, int *db) { return 1; } static int in_def_get_config(void *drv_data, int what, int *val) { return -1; } static int in_def_set_config(void *drv_data, int what, int val) { return -1; } static int in_def_update_analog(void *drv_data, int axis_id, int *result) { return -1; } +static int in_def_update_pointer(void *drv_data, int id, int *result) { return -1; } static int in_def_update_keycode(void *drv_data, int *is_down) { return 0; } static int in_def_menu_translate(void *drv_data, int keycode, char *ccode) { return 0; } static int in_def_get_key_code(const char *key_name) { return -1; } @@ -1086,6 +1097,7 @@ int in_register_driver(const in_drv_t *drv, CHECK_ADD_STUB(new_drivers[in_driver_count], get_config); CHECK_ADD_STUB(new_drivers[in_driver_count], set_config); CHECK_ADD_STUB(new_drivers[in_driver_count], update_analog); + CHECK_ADD_STUB(new_drivers[in_driver_count], update_pointer); CHECK_ADD_STUB(new_drivers[in_driver_count], update_keycode); CHECK_ADD_STUB(new_drivers[in_driver_count], menu_translate); CHECK_ADD_STUB(new_drivers[in_driver_count], get_key_code); diff --git a/input.h b/input.h index 6a56bc1..ee1dfd4 100644 --- a/input.h +++ b/input.h @@ -89,6 +89,7 @@ struct InputDriver { int (*update)(void *drv_data, const int *binds, int *result); int (*update_kbd)(void *drv_data, const int *binds, int *result); int (*update_analog)(void *drv_data, int axis_id, int *result); + int (*update_pointer)(void *drv_data, int axis_id, int *result); /* return -1 on no event, -2 on error */ int (*update_keycode)(void *drv_data, int *is_down); int (*menu_translate)(void *drv_data, int keycode, char *charcode); @@ -135,6 +136,7 @@ void in_init(void); void in_probe(void); int in_update(int *result); int in_update_analog(int dev_id, int axis_id, int *value); +int in_update_pointer(int dev_id, int id, int *result); int in_update_keycode(int *dev_id, int *is_down, char *charcode, int timeout_ms); int in_update_kbd(int *result); int in_menu_wait_any(char *charcode, int timeout_ms);