*BSD News Article 18921


Return to BSD News archive

Newsgroups: comp.os.386bsd.bugs
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!decwrl!pa.dec.com!e2big.mko.dec.com!decvax.dec.com!jtkohl
From: jtkohl@zk3.dec.com (John Kohl)
Subject: Re: [HACK:] fix CAPSLOCK for good...
In-Reply-To: jtkohl@zk3.dec.com's message of Mon, 26 Jul 1993 17:10:51 GMT
Message-ID: <1993Jul27.124733.8899@e2big.mko.dec.com>
Sender: usenet@e2big.mko.dec.com (Mr. USENET)
Organization: Digital Equipment Corporation
References: <22h1vs$6a6@aggedor.rmit.OZ.AU> <22lm8l$c0k@cleese.apana.org.au>
	<22uoji$h3d@introl.introl.com> <1993Jul26.033520.19423@ucc.su.oz.au>
	<230oil$os1@introl.introl.com>
	<1993Jul26.171051.21986@e2big.mko.dec.com>
Date: Tue, 27 Jul 1993 12:47:33 GMT
Lines: 64

Here's my patch to x386Events.c to allow things like "xmodmap -L +C
Caps_Lock" to DTRT:

Apply this to x386Events.c:

*** /tmp/RCSA000325	Sun Mar  8 10:42:16 1992
--- x386Events.c	Sun Mar  8 02:38:33 1992
***************
*** 247,257 ****
        x386Info.scanPrefix = scanCode;  /* special prefixes */
        return;
  
-     case KEY_CapsLock:
-     case KEY_NumLock:
-     case KEY_ScrollLock:
-       updateLeds = TRUE;              /* led changes by firmware */
-       break;
      }
    }
  	
--- 247,252 ----
***************
*** 338,344 ****
     * LockKey special handling:
     * ignore releases, toggle on & off on presses.
     */
!   if (keysym[0] == XK_Caps_Lock ||
        keysym[0] == XK_Scroll_Lock ||
        keysym[0] == XK_Num_Lock)
      {
--- 333,343 ----
     * LockKey special handling:
     * ignore releases, toggle on & off on presses.
     */
!   /*
!    * Caps_Lock is special, since we really only want to toggle its light/state
!    * if the key is a modifier mapping to the Caps_Lock function.
!    */
!   if (keyc->modifierMap[keycode] & LockMask ||
        keysym[0] == XK_Scroll_Lock ||
        keysym[0] == XK_Num_Lock)
      {
***************
*** 352,358 ****
        else
  	flag = TRUE;
  
!       if (keysym[0] == XK_Caps_Lock)   x386Info.capsLock   = flag;
        if (keysym[0] == XK_Num_Lock)    x386Info.numLock    = flag;
        if (keysym[0] == XK_Scroll_Lock) x386Info.scrollLock = flag;
        updateLeds = TRUE;
--- 351,357 ----
        else
  	flag = TRUE;
  
!       if (keyc->modifierMap[keycode] & LockMask)   x386Info.capsLock   = flag;
        if (keysym[0] == XK_Num_Lock)    x386Info.numLock    = flag;
        if (keysym[0] == XK_Scroll_Lock) x386Info.scrollLock = flag;
        updateLeds = TRUE;

--
John Kohl <jtkohl@zk3.dec.com> or <jtkohl@mit.edu>
working for but not representing:	Digital Equipment Corporation
What are you pretending not to know?