Subject: port-hp300/4689: CAPS LOCK keymap on hp300 wrong
To: None <gnats-bugs@gnats.netbsd.org>
From: David Jones <dej@inode.org>
List: netbsd-bugs
Date: 12/14/1997 18:41:36
>Number:         4689
>Category:       port-hp300
>Synopsis:       CAPS LOCK behaves as if SHIFT were pressed
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    gnats-admin (GNATS administrator)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 14 16:05:01 1997
>Last-Modified:
>Originator:     David Jones
>Organization:
	INODE Community Networking
>Release:        NetBSD-current Oct 4, 1997
>Environment:
	
System: NetBSD endplay 1.2G NetBSD 1.2G (ENDPLAY) #3: Sat Jun 21 19:01:21 EDT 1997 dej@endplay:/usr/src/sys/arch/hp300/compile/ENDPLAY hp300


>Description:
When the CAPS LOCK key is depressed, the machine behaves as if the SHIFT
key were held down.  This is not correct for non-alphabetic keys.
For non-alphabetic keys, CAPS LOCK should have no effect.
(At least this is my opinion, and this is how machines have worked with the
exception of the Commodore 64 :-)
>How-To-Repeat:
Engage CAPS LOCK and type "l;".  It comes out as "L:" but it should be
"L;"
>Fix:
Line 555 of ite.c reads:

        case KBD_KEY:
                if (!capsmode) {
                        code = kbd_keymap[c];
                        break;
                }
                /* FALLTHROUGH */

        case KBD_SHIFT:
                code = kbd_shiftmap[c];
                break;

You need to replace the /* FALLTHROUGH */ with code that does the
equivalent of toupper(kbd_keymap[c]).  Doing this in a local-aware
manner is not trivial.
>Audit-Trail:
>Unformatted: