diff --git a/src/conio/GNUmakefile b/src/conio/GNUmakefile
index 97bc0e4a1b2317d70a79d3f2443ad61611a16630..e08470b16296e277710aa728b532bfbb3463e898 100644
--- a/src/conio/GNUmakefile
+++ b/src/conio/GNUmakefile
@@ -68,3 +68,7 @@ $(MTOBJODIR)$(DIRSEP)ciolib_res${OFILE}: ciolib.rc syncicon64.ico ciolib.manifes
 	@echo Creating $< ...
 	$(QUIET)${WINDRES} $(WINDRESFLAGS) -O coff -i ciolib.rc -o $@
 endif
+
+quittest: quittest.c $(CIOLIB-MT_BUILD)
+	${QUIET}$(CC) $(CFLAGS) $(MT_CFLAGS) $(LDFLAGS) $(MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) quittest.c -o $@ $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS)
+
diff --git a/src/conio/quittest.c b/src/conio/quittest.c
new file mode 100644
index 0000000000000000000000000000000000000000..1b1222e364ffc7e4a069b901ee9e06b4a0175851
--- /dev/null
+++ b/src/conio/quittest.c
@@ -0,0 +1,52 @@
+#include "ciolib.h"
+#include "genwrap.h"
+
+int main(int argc, char **argv)
+{
+	int mode = CIOLIB_MODE_AUTO;
+	for (int i = 1; i < argc; i++) {
+		switch(argv[i][0]) {
+			case 'G':
+				mode = CIOLIB_MODE_GDI_FULLSCREEN;
+				break;
+			case 'g':
+				mode = CIOLIB_MODE_GDI;
+				break;
+			case 'S':
+				mode = CIOLIB_MODE_SDL_FULLSCREEN;
+				break;
+			case 's':
+				mode = CIOLIB_MODE_SDL;
+				break;
+			case 'X':
+				mode = CIOLIB_MODE_X_FULLSCREEN;
+				break;
+			case 'x':
+				mode = CIOLIB_MODE_X;
+				break;
+			default:
+				puts("GgSsXx");
+				exit(0);
+		}
+	}
+
+	initciolib(mode);
+
+	for (;;) {
+		if(!kbhit())
+			SLEEP(100);
+		int k = getch();
+		if (k == 0 || k == 0xe0)
+			k = k | (getch() << 8);
+		switch(k) {
+			case 'q':
+				exit(1);
+			case CIO_KEY_QUIT:
+				cputs("Got quit\n");
+				break;
+			default:
+				cprintf("Key: %d (q to quit)\n", k);
+				break;
+		}
+	}
+}