From 7915b040a9ccd71f0dccb813bd46b925418e45a2 Mon Sep 17 00:00:00 2001 From: Grant Date: Fri, 18 Jun 2021 03:55:25 +0100 Subject: [PATCH 1/5] only add mouse if it ha buttons and add vebose device friendly names --- input/drivers/udev_input.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index c6bec5e3ab..6b9492a8f2 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -482,6 +482,7 @@ static void udev_handle_mouse(void *data, static bool udev_input_add_device(udev_input_t *udev, enum udev_input_dev_type type, const char *devnode, device_handle_cb cb) { + unsigned char keycaps[(KEY_MAX / 8) + 1]; int fd; struct stat st; #if defined(HAVE_EPOLL) @@ -516,6 +517,9 @@ static bool udev_input_add_device(udev_input_t *udev, /* UDEV_INPUT_MOUSE may report in absolute coords too */ if (type == UDEV_INPUT_MOUSE || type == UDEV_INPUT_TOUCHPAD ) { + if (ioctl(fd, EVIOCGBIT(EV_KEY, sizeof (keycaps)), keycaps) == -1) + return 0; /* gotta have some buttons! :) */ + if (ioctl(fd, EVIOCGABS(ABS_X), &absinfo) >= 0) { if (absinfo.minimum >= absinfo.maximum ) @@ -1227,9 +1231,7 @@ static bool open_devices(udev_input_t *udev, struct udev_list_entry *devs = NULL; struct udev_list_entry *item = NULL; struct udev_enumerate *enumerate = udev_enumerate_new(udev->udev); -#ifdef DEBUG int device_index = 0; -#endif if (!enumerate) return false; @@ -1254,15 +1256,21 @@ static bool open_devices(udev_input_t *udev, if (fd != -1) { bool check = udev_input_add_device(udev, type, devnode, cb); -#ifdef DEBUG + if (!check) - RARCH_ERR("[udev] Failed to open device: %s (%s).\n", + RARCH_DBG("[udev] udev_input_add_device SKIPPED : %s (%s).\n", devnode, strerror(errno)); else - RARCH_LOG("[udev]: %s #%d (%s).\n", + { + char ident[255]; + if (ioctl(fd, EVIOCGNAME(sizeof(ident)), ident) < 0) + ident[0] = '\0'; + RARCH_LOG("[udev]: Added Device %s %s (%s).\n", type == UDEV_INPUT_KEYBOARD ? "Keyboard" : "Mouse", - device_index++, devnode); -#endif + ident, + devnode); + } + (void)check; close(fd); } From 54eed6341862be97e1a40ba19984bc666f368592 Mon Sep 17 00:00:00 2001 From: Grant Date: Sat, 19 Jun 2021 07:00:09 +0100 Subject: [PATCH 2/5] fix game focus mode on udev as well --- input/drivers/udev_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 6b9492a8f2..0a726c91ce 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -1060,7 +1060,7 @@ static int16_t udev_input_state( (binds[port][id].key < RETROK_LAST) && udev_keyboard_pressed(udev, binds[port][id].key) && (( id == RARCH_GAME_FOCUS_TOGGLE) - || !keyboard_mapping_blocked) + && !keyboard_mapping_blocked) ) return 1; else if (udev_mouse_button_pressed(udev, port, From 863aaa5b9dcbb7967e10538b294d79e6fd9b88bc Mon Sep 17 00:00:00 2001 From: Grant Date: Sat, 19 Jun 2021 07:44:02 +0100 Subject: [PATCH 3/5] Revert "fix game focus mode on udev as well" This reverts commit 54eed6341862be97e1a40ba19984bc666f368592. --- input/drivers/udev_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 0a726c91ce..6b9492a8f2 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -1060,7 +1060,7 @@ static int16_t udev_input_state( (binds[port][id].key < RETROK_LAST) && udev_keyboard_pressed(udev, binds[port][id].key) && (( id == RARCH_GAME_FOCUS_TOGGLE) - && !keyboard_mapping_blocked) + || !keyboard_mapping_blocked) ) return 1; else if (udev_mouse_button_pressed(udev, port, From eef86d5f727cf3ac109b395b584ef785af8aa36b Mon Sep 17 00:00:00 2001 From: Grant Date: Sat, 19 Jun 2021 07:59:06 +0100 Subject: [PATCH 4/5] fix game focus mode --- input/drivers/udev_input.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 6b9492a8f2..b139e2cb8e 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -1057,6 +1057,13 @@ static int16_t udev_input_state( if (binds[port][id].valid) { if ( + (binds[port][id].key < RETROK_LAST) && + udev_keyboard_pressed(udev, binds[port][id].key) + && (( id != RARCH_GAME_FOCUS_TOGGLE) + || !keyboard_mapping_blocked) + ) + return 1; + else if ( (binds[port][id].key < RETROK_LAST) && udev_keyboard_pressed(udev, binds[port][id].key) && (( id == RARCH_GAME_FOCUS_TOGGLE) From 6e2709d62a4892cd2f19cc0c5da15a241d30db9c Mon Sep 17 00:00:00 2001 From: Grant Date: Sat, 19 Jun 2021 08:47:35 +0100 Subject: [PATCH 5/5] cleanup --- input/drivers/udev_input.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index b139e2cb8e..8cb4182668 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -1060,14 +1060,13 @@ static int16_t udev_input_state( (binds[port][id].key < RETROK_LAST) && udev_keyboard_pressed(udev, binds[port][id].key) && (( id != RARCH_GAME_FOCUS_TOGGLE) - || !keyboard_mapping_blocked) + && !keyboard_mapping_blocked) ) return 1; else if ( (binds[port][id].key < RETROK_LAST) && udev_keyboard_pressed(udev, binds[port][id].key) - && (( id == RARCH_GAME_FOCUS_TOGGLE) - || !keyboard_mapping_blocked) + && ( id == RARCH_GAME_FOCUS_TOGGLE) ) return 1; else if (udev_mouse_button_pressed(udev, port,