From 367aa44ae5aaa751693a35fe7f0a2c5408d31e64 Mon Sep 17 00:00:00 2001 From: sobomax Date: Wed, 24 Jan 2001 09:05:35 +0000 Subject: Minor fixes: - Use "OPOST | ONLCR" as a c_oflag in the raw mode instead of 0, which should make debug output mode readable; - flush input buffer when switching to/from raw mode. This should prevent leaking raw scancodes into your shell prompt when program called VGLKeyboardEnd() w/o processing all scancodes in the buffer. --- lib/libvgl/keyboard.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib/libvgl') diff --git a/lib/libvgl/keyboard.c b/lib/libvgl/keyboard.c index 85850f5..fe1286a 100644 --- a/lib/libvgl/keyboard.c +++ b/lib/libvgl/keyboard.c @@ -51,14 +51,14 @@ VGLKeyboardInit(int mode) term = VGLKeyboardTty; cfmakeraw(&term); term.c_iflag = IGNPAR | IGNBRK; - term.c_oflag = 0; + term.c_oflag = OPOST | ONLCR; term.c_cflag = CREAD | CS8; term.c_lflag &= ~(ICANON | ECHO | ISIG); term.c_cc[VTIME] = 0; term.c_cc[VMIN] = 0; cfsetispeed(&term, 9600); cfsetospeed(&term, 9600); - tcsetattr(0, TCSANOW, &term); + tcsetattr(0, TCSANOW | TCSAFLUSH, &term); switch (mode) { case VGL_RAWKEYS: @@ -79,7 +79,7 @@ VGLKeyboardEnd() { if (VGLKeyboardMode != -1) { ioctl(0, KDSKBMODE, VGLKeyboardMode); - tcsetattr(0, TCSANOW, &VGLKeyboardTty); + tcsetattr(0, TCSANOW | TCSAFLUSH, &VGLKeyboardTty); } } -- cgit v1.1