From bf879f1c93407c497ad7bf11c9e4311e39f4ec42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Tue, 7 Jan 2025 03:18:02 -0500 Subject: [PATCH] Add simple test for CIO_KEY_QUIT behaviour. Basically, this allows figuring out if you can intercept and block closing the window. --- src/conio/GNUmakefile | 4 ++++ src/conio/quittest.c | 52 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 src/conio/quittest.c diff --git a/src/conio/GNUmakefile b/src/conio/GNUmakefile index 97bc0e4a1b..e08470b162 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 0000000000..1b1222e364 --- /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; + } + } +} -- GitLab