Index: uspace/lib/display/include/types/display/wndparams.h
===================================================================
--- uspace/lib/display/include/types/display/wndparams.h	(revision 3be53668a72d42907f6124a3b95374fde7f15a53)
+++ uspace/lib/display/include/types/display/wndparams.h	(revision 64e9cf4cb45f1c9d53cbeffc39f56cd49f6e4861)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -74,4 +74,6 @@
 	/** Flags */
 	display_wnd_flags_t flags;
+	/** Input device ID associated with window's seat (or zero) */
+	sysarg_t idev_id;
 } display_wnd_params_t;
 
Index: uspace/lib/display/private/params.h
===================================================================
--- uspace/lib/display/private/params.h	(revision 3be53668a72d42907f6124a3b95374fde7f15a53)
+++ uspace/lib/display/private/params.h	(revision 64e9cf4cb45f1c9d53cbeffc39f56cd49f6e4861)
@@ -1,4 +1,4 @@
 /*
- * Copyright (c) 2022 Jiri Svoboda
+ * Copyright (c) 2023 Jiri Svoboda
  * All rights reserved.
  *
@@ -37,4 +37,5 @@
 
 #include <gfx/coord.h>
+#include <types/common.h>
 
 /** Window resize arguments. */
@@ -61,4 +62,6 @@
 	/** Flags */
 	display_wnd_flags_t flags;
+	/** Input device ID associated with window's seat (or zero) */
+	sysarg_t idev_id;
 } display_wnd_params_enc_t;
 
Index: uspace/lib/display/src/disp_srv.c
===================================================================
--- uspace/lib/display/src/disp_srv.c	(revision 3be53668a72d42907f6124a3b95374fde7f15a53)
+++ uspace/lib/display/src/disp_srv.c	(revision 64e9cf4cb45f1c9d53cbeffc39f56cd49f6e4861)
@@ -128,4 +128,5 @@
 	params.pos = eparams.pos;
 	params.flags = eparams.flags;
+	params.idev_id = eparams.idev_id;
 
 	rc = srv->ops->window_create(srv->arg, &params, &wnd_id);
Index: uspace/lib/display/src/display.c
===================================================================
--- uspace/lib/display/src/display.c	(revision 3be53668a72d42907f6124a3b95374fde7f15a53)
+++ uspace/lib/display/src/display.c	(revision 64e9cf4cb45f1c9d53cbeffc39f56cd49f6e4861)
@@ -176,4 +176,5 @@
 	eparams.pos = params->pos;
 	eparams.flags = params->flags;
+	eparams.idev_id = params->idev_id;
 
 	window = calloc(1, sizeof(display_window_t));
Index: uspace/lib/display/test/display.c
===================================================================
--- uspace/lib/display/test/display.c	(revision 3be53668a72d42907f6124a3b95374fde7f15a53)
+++ uspace/lib/display/test/display.c	(revision 64e9cf4cb45f1c9d53cbeffc39f56cd49f6e4861)
@@ -118,4 +118,5 @@
 	gfx_rect_t create_rect;
 	gfx_coord2_t create_min_size;
+	sysarg_t create_idev_id;
 	bool window_destroy_called;
 	sysarg_t destroy_wnd_id;
@@ -237,4 +238,5 @@
 	params.min_size.x = 11;
 	params.min_size.y = 12;
+	params.idev_id = 42;
 
 	rc = display_window_create(disp, &params, &test_display_wnd_cb,
@@ -247,4 +249,5 @@
 	PCUT_ASSERT_EQUALS(params.min_size.x, resp.create_min_size.x);
 	PCUT_ASSERT_EQUALS(params.min_size.y, resp.create_min_size.y);
+	PCUT_ASSERT_EQUALS(params.idev_id, resp.create_idev_id);
 	PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
 	PCUT_ASSERT_NULL(wnd);
@@ -289,4 +292,5 @@
 	params.rect.p0.x = 100;
 	params.rect.p0.y = 100;
+	params.idev_id = 42;
 
 	rc = display_window_create(disp, &params, &test_display_wnd_cb,
@@ -297,4 +301,5 @@
 	PCUT_ASSERT_EQUALS(params.rect.p1.x, resp.create_rect.p1.x);
 	PCUT_ASSERT_EQUALS(params.rect.p1.y, resp.create_rect.p1.y);
+	PCUT_ASSERT_EQUALS(params.idev_id, resp.create_idev_id);
 	PCUT_ASSERT_ERRNO_VAL(EOK, rc);
 	PCUT_ASSERT_NOT_NULL(wnd);
@@ -2138,4 +2143,5 @@
 	resp->create_rect = params->rect;
 	resp->create_min_size = params->min_size;
+	resp->create_idev_id = params->idev_id;
 	if (resp->rc == EOK)
 		*rwnd_id = resp->wnd_id;
