diff --git a/poetry.lock b/poetry.lock
index 7ef33c3ff97de03c0d3f6b32e6bed15f43c5dc83..550465b596e5674ced7127fe5482aa7c780bd201 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -4199,6 +4199,21 @@ rllib = ["dm-tree", "gym (<0.22)", "lz4", "matplotlib (!=3.4.3)", "pandas", "pyy
 serve = ["aiohttp (>=3.7)", "aiohttp-cors", "aiorwlock", "colorful", "fastapi", "gpustat (>=1.0.0b1)", "opencensus", "prometheus-client (>=0.7.1,<0.14.0)", "py-spy (>=0.2.0)", "requests", "smart-open", "starlette", "uvicorn (==0.16.0)"]
 tune = ["pandas", "requests", "tabulate", "tensorboardX (>=1.9)"]
 
+[[package]]
+name = "readchar"
+version = "4.0.3"
+description = "Library to easily read single chars and key strokes"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+files = [
+    {file = "readchar-4.0.3-py3-none-any.whl", hash = "sha256:3d4351c563aba4ae7d4e0b821a234d48bc748f45b74e3f38b50cba3857b57acb"},
+    {file = "readchar-4.0.3.tar.gz", hash = "sha256:1d920d0e9ab76ec5d42192a68d15af2562663b5dfbf4a67cf9eba520e1ca57e6"},
+]
+
+[package.dependencies]
+setuptools = ">=41.0"
+
 [[package]]
 name = "requests"
 version = "2.28.2"
@@ -5491,4 +5506,4 @@ omero = ["omero-py"]
 [metadata]
 lock-version = "2.0"
 python-versions = ">=3.8, <3.11"
-content-hash = "31bfed07b2eb2ab8f19b6dbf1b1a662329dc193b4fa8f8b44ea34556d23ed363"
+content-hash = "c057d7f7f0b6f9d0069a2ed3b558f017b7c37dd58ffb8d16aac50a8f7d8c1e24"
diff --git a/pyproject.toml b/pyproject.toml
index 23db1cb12ad759172f46e8b12e0112eb12d7bf02..47e4304027a1e7d6230fb1c6ea34fe6e598a9332 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -79,6 +79,7 @@ coverage = "^7.0.4"
 # napari = ">=0.4.16"
 jupytext = "^1.14.4"
 grid-strategy = "^0.0.1"
+readchar = "^4.0.3"
 
 [tool.poetry.group.docs]
 optional = true