diff options
author | yokota <yokota@FreeBSD.org> | 1997-07-14 03:36:50 +0000 |
---|---|---|
committer | yokota <yokota@FreeBSD.org> | 1997-07-14 03:36:50 +0000 |
commit | 15a89c532df933482d55cecc073f051fa611ceec (patch) | |
tree | 8a65d411a6c9c46cbc28a55ddc63a10f9e8976f4 /sys/isa | |
parent | e3faa34d53e70df949da831b848a9c199c0d4cde (diff) | |
download | FreeBSD-src-15a89c532df933482d55cecc073f051fa611ceec.zip FreeBSD-src-15a89c532df933482d55cecc073f051fa611ceec.tar.gz |
scgetc() referred to `spcl' in different ways when a key is pressed
and released. It should use `spcl' consistently in both cases,
otherwise shift/control/alt state may not be correctly set/reset.
(Even with this fix, you can still make syscons confused and fail to
change internal state if you really want to, by installing a really
arcane and artificial keymap.)
PR: i386/4030
Reviewed by: sos
Diffstat (limited to 'sys/isa')
-rw-r--r-- | sys/isa/syscons.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/isa/syscons.c b/sys/isa/syscons.c index 7b5cafb..71dc2b0 100644 --- a/sys/isa/syscons.c +++ b/sys/isa/syscons.c @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: syscons.c,v 1.222 1997/07/08 13:38:58 brian Exp $ + * $Id: syscons.c,v 1.223 1997/07/09 14:10:19 brian Exp $ */ #include "sc.h" @@ -3043,7 +3043,7 @@ next_code: /* Check for make/break */ action = key->map[state]; if (scancode & 0x80) { /* key released */ - if (key->spcl & 0x80) { + if (key->spcl & (0x80>>state)) { switch (action) { case LSH: shfts &= ~1; |