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.
This commit is contained in:
parent
45e889896e
commit
5c9a541b66
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user