diff options
author | joerg <joerg@FreeBSD.org> | 1996-08-10 22:14:36 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 1996-08-10 22:14:36 +0000 |
commit | b0b6f5d7b9be67f05cb8414a19ad952f7ff1b4e5 (patch) | |
tree | f5a4d22a74413612b69d8f8087ed8b58b142eef9 /sys/i386/isa/pcvt/pcvt_kbd.c | |
parent | c1fd4cb7887898290a1d9bb895648f3889097aac (diff) | |
download | FreeBSD-src-b0b6f5d7b9be67f05cb8414a19ad952f7ff1b4e5.zip FreeBSD-src-b0b6f5d7b9be67f05cb8414a19ad952f7ff1b4e5.tar.gz |
Fix many long-standing bugs and problems with pcvt, namely:
. make pccncheck() work even when interrupts are disabled, so the
``Press a key on the console...'' procedure will work,
. make kernel colors #ifndef, so they can be overridden from the
config file,
. use shutdown_nice() instead of cpu_reset() if Ctrl-Alt-Del is
enabled,
. allow pccngetc() to return more than a single character, so the
arrow keys will work (and thus visual UserConfig!),
. fix a warning.
This closes all know PRs related to pcvt, in particular #845, #1236,
and #1265. PR #991 is a duplicate for 845, and PR #1283 has already
been fixed earlier in rev 1.11 of pcvt_conf.h.
Submitted by: Ulf Kieber (kieber@sax.de), for the kernel color fix
Diffstat (limited to 'sys/i386/isa/pcvt/pcvt_kbd.c')
-rw-r--r-- | sys/i386/isa/pcvt/pcvt_kbd.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/i386/isa/pcvt/pcvt_kbd.c b/sys/i386/isa/pcvt/pcvt_kbd.c index ae70327..e39b04e 100644 --- a/sys/i386/isa/pcvt/pcvt_kbd.c +++ b/sys/i386/isa/pcvt/pcvt_kbd.c @@ -935,10 +935,10 @@ loop: /* see if there is data from the keyboard available either from */ /* the keyboard fifo or from the 8042 keyboard controller */ - if ((( noblock) && (pcvt_kbd_count)) || - ((!noblock) && (inb(CONTROLLER_CTRL) & STATUS_OUTPBF))) + if ((noblock && pcvt_kbd_count) || + ((!noblock || kbd_polling) && (inb(CONTROLLER_CTRL) & STATUS_OUTPBF))) { - if (!noblock) /* source = 8042 */ + if (!noblock || kbd_polling) /* source = 8042 */ { PCVT_KBD_DELAY(); /* 7 us delay */ dt = inb(CONTROLLER_DATA); /* get from obuf */ @@ -1245,10 +1245,10 @@ no_mouse_event: /* see if there is data from the keyboard available either from */ /* the keyboard fifo or from the 8042 keyboard controller */ - if ((( noblock) && (pcvt_kbd_count)) || - ((!noblock) && (inb(CONTROLLER_CTRL) & STATUS_OUTPBF))) + if ((noblock && pcvt_kbd_count) || + ((!noblock || kbd_polling) && (inb(CONTROLLER_CTRL) & STATUS_OUTPBF))) { - if (!noblock) /* source = 8042 */ + if (!noblock || kbd_polling) /* source = 8042 */ { PCVT_KBD_DELAY(); /* 7 us delay */ dt = inb(CONTROLLER_DATA); @@ -1355,7 +1355,7 @@ regular: #if PCVT_CTRL_ALT_DEL /* Check for cntl-alt-del */ if((key == 76) && ctrl_down && (meta_down||altgr_down)) - cpu_reset(); + shutdown_nice(); #endif /* PCVT_CTRL_ALT_DEL */ #if !(PCVT_NETBSD || PCVT_FREEBSD >= 200) |