diff --git a/input/dinput.c b/input/dinput.c index 222ba366e6..b86e90e32d 100644 --- a/input/dinput.c +++ b/input/dinput.c @@ -285,6 +285,8 @@ static int16_t dinput_mouse_state(struct dinput_input *di, unsigned id) return di->mouse_wu; case RETRO_DEVICE_ID_MOUSE_WHEELDOWN: return di->mouse_wd; + case RETRO_DEVICE_ID_MOUSE_MIDDLE: + return di->mouse_m; default: return 0; } diff --git a/input/sdl_input.c b/input/sdl_input.c index b829488946..ee0a90de9d 100644 --- a/input/sdl_input.c +++ b/input/sdl_input.c @@ -128,6 +128,8 @@ static int16_t sdl_mouse_device_state(sdl_input_t *sdl, unsigned id) return sdl->mouse_x; case RETRO_DEVICE_ID_MOUSE_Y: return sdl->mouse_y; + case RETRO_DEVICE_ID_MOUSE_MIDDLE: + return sdl->mouse_m; default: return 0; } diff --git a/input/udev_input.c b/input/udev_input.c index 5956427e6a..475018c73a 100644 --- a/input/udev_input.c +++ b/input/udev_input.c @@ -451,6 +451,8 @@ static int16_t udev_mouse_state(udev_input_t *udev, unsigned id) return udev->mouse_l; case RETRO_DEVICE_ID_MOUSE_RIGHT: return udev->mouse_r; + case RETRO_DEVICE_ID_MOUSE_MIDDLE: + return udev->mouse_m; default: return 0; } diff --git a/input/x11_input.c b/input/x11_input.c index 4a0cd58e43..4b497a8ff0 100644 --- a/input/x11_input.c +++ b/input/x11_input.c @@ -119,6 +119,8 @@ static int16_t x_mouse_state(x11_input_t *x11, unsigned id) return x11->mouse_wu; case RETRO_DEVICE_ID_MOUSE_WHEELDOWN: return x11->mouse_wd; + case RETRO_DEVICE_ID_MOUSE_MIDDLE: + return x11->mouse_m; default: return 0; } diff --git a/libretro-test/libretro-test.c b/libretro-test/libretro-test.c index f7c8cbc0e5..040374884a 100644 --- a/libretro-test/libretro-test.c +++ b/libretro-test/libretro-test.c @@ -208,6 +208,7 @@ static void update_input(void) bool mouse_r = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT); bool mouse_down = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN); bool mouse_up = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP); + bool mouse_middle = input_state_cb(0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_MIDDLE); if (mouse_x) logging.log(RETRO_LOG_INFO, "Mouse X: %d\n", mouse_x); if (mouse_y) @@ -220,6 +221,8 @@ static void update_input(void) logging.log(RETRO_LOG_INFO, "Mouse wheeldown pressed.\n"); if (mouse_up) logging.log(RETRO_LOG_INFO, "Mouse wheelup pressed.\n"); + if (mouse_middle) + logging.log(RETRO_LOG_INFO, "Mouse middle pressed.\n"); mouse_rel_x += mouse_x; mouse_rel_y += mouse_y; diff --git a/libretro.h b/libretro.h index c68a668eae..a0a748331c 100755 --- a/libretro.h +++ b/libretro.h @@ -144,6 +144,7 @@ extern "C" { #define RETRO_DEVICE_ID_MOUSE_RIGHT 3 #define RETRO_DEVICE_ID_MOUSE_WHEELUP 4 #define RETRO_DEVICE_ID_MOUSE_WHEELDOWN 5 +#define RETRO_DEVICE_ID_MOUSE_MIDDLE 6 // Id values for LIGHTGUN types. #define RETRO_DEVICE_ID_LIGHTGUN_X 0