Index: uspace/lib/ui/src/menu.c
===================================================================
--- uspace/lib/ui/src/menu.c	(revision ee3b28a97324351b0acfb1161a2ed94632eab95c)
+++ uspace/lib/ui/src/menu.c	(revision 7dbf1f638b9208de583dc8a8bb3a419e0c25b6f4)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2023 Jiri Svoboda
+ * Copyright (c) 2024 Jiri Svoboda
  * All rights reserved.
  *
@@ -578,4 +578,5 @@
 	ui_menu_t *menu = (ui_menu_t *)arg;
 
+	menu->idev_id = ui_popup_get_idev_id(menu->popup);
 	ui_menu_kbd_event(menu, event);
 }
@@ -592,4 +593,6 @@
 	gfx_coord2_t spos;
 
+	menu->idev_id = ui_popup_get_idev_id(menu->popup);
+
 	spos.x = 0;
 	spos.y = 0;
@@ -641,4 +644,14 @@
 }
 
+/** Get ID of last device that input event.
+ *
+ * @param menu Menu
+ * @return Input device ID
+ */
+sysarg_t ui_menu_get_idev_id(ui_menu_t *menu)
+{
+	return menu->idev_id;
+}
+
 /** @}
  */
Index: uspace/lib/ui/src/popup.c
===================================================================
--- uspace/lib/ui/src/popup.c	(revision ee3b28a97324351b0acfb1161a2ed94632eab95c)
+++ uspace/lib/ui/src/popup.c	(revision 7dbf1f638b9208de583dc8a8bb3a419e0c25b6f4)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2023 Jiri Svoboda
+ * Copyright (c) 2024 Jiri Svoboda
  * All rights reserved.
  *
@@ -190,4 +190,14 @@
 }
 
+/** Get ID of device that sent the last position event.
+ *
+ * @param popup Popup window
+ * @return Input device ID
+ */
+sysarg_t ui_popup_get_idev_id(ui_popup_t *popup)
+{
+	return popup->idev_id;
+}
+
 /** Handle close event in popup window.
  *
@@ -214,4 +224,7 @@
 	ui_popup_t *popup = (ui_popup_t *)arg;
 
+	/* Remember ID of device that sent the last event */
+	popup->idev_id = event->kbd_id;
+
 	if (popup->cb != NULL && popup->cb->kbd != NULL)
 		popup->cb->kbd(popup, popup->arg, event);
@@ -229,4 +242,7 @@
 	ui_popup_t *popup = (ui_popup_t *)arg;
 
+	/* Remember ID of device that sent the last event */
+	popup->idev_id = event->pos_id;
+
 	if (popup->cb != NULL && popup->cb->pos != NULL)
 		popup->cb->pos(popup, popup->arg, event);
