But it does not work :-)

DEVICE_INIT
...
call InitKeyboardDeviceStruct()
    ...
    call KbdCtrl()
         set LEDS in accordance with the ctrl->leds
         I have not found yet a way to startup X
         so ctrl->leds were not zero
...
call InitKBD() (LEDS has already repaid)
     manipulation InitKBD do not matter

But I really lost sight of that save state NumLock etc. be useful.
I'll prepare a new series of patches, this series can be ignored.

On Thu, Feb 17, 2011 at 04:20:10PM -0800, Alan Coopersmith wrote:
> Why have you decided to remove the functionality of initializing the
> state of things like NumLock based on the initial LED state?   It was
> a bit of the hack to propogate things like "NumLock on by default" from
> the BIOS up through to the X server, but it worked.    (At least it used
> to, I haven't checked in a while.)
> 
>       -alan-
> 
> On 02/17/11 04:10 PM, Alexandr Shadchin wrote:
> > Before calling InitKBD called KbdCtrl, which sets the LEDS in
> > accordance with the ctrl->leds. Therefore, further manipulation
> > InitKBD do not matter.
> > 
> > Signed-off-by: Alexandr Shadchin <alexandr.shadc...@gmail.com>
> > ---
> >  src/kbd.c |   53 +----------------------------------------------------
> >  1 files changed, 1 insertions(+), 52 deletions(-)
> > 
> > diff --git a/src/kbd.c b/src/kbd.c
> > index 86b5be5..bb1a177 100644
> > --- a/src/kbd.c
> > +++ b/src/kbd.c
> > @@ -46,8 +46,6 @@
> >  #define SCROLLFLAG 4
> >  #define MODEFLAG   8
> >  #define COMPOSEFLAG        16
> > -/* Used to know when the first DEVICE_ON after a DEVICE_INIT is called */
> > -#define INITFLAG   (1U << 31)
> >  
> >  #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
> >  static InputInfoPtr KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags);
> > @@ -59,9 +57,6 @@ static void KbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl);
> >  static void KbdBell(int percent, DeviceIntPtr dev, pointer ctrl, int 
> > unused);
> >  static void PostKbdEvent(InputInfoPtr pInfo, unsigned int key, Bool down);
> >  
> > -static void InitKBD(InputInfoPtr pInfo, Bool init);
> > -static void UpdateLeds(InputInfoPtr pInfo);
> > -
> >  _X_EXPORT InputDriverRec KBD = {
> >     1,
> >     "kbd",
> > @@ -209,22 +204,6 @@ KbdBell(int percent, DeviceIntPtr dev, pointer ctrl, 
> > int unused)
> >  }
> >  
> >  static void
> > -UpdateLeds(InputInfoPtr pInfo)
> > -{
> > -    KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
> > -    unsigned long leds = 0;
> > -
> > -    if (pKbd->keyLeds & CAPSFLAG)    leds |= XLED1;
> > -    if (pKbd->keyLeds & NUMFLAG)     leds |= XLED2;
> > -    if (pKbd->keyLeds & SCROLLFLAG ||
> > -        pKbd->keyLeds & MODEFLAG)    leds |= XLED3;
> > -    if (pKbd->keyLeds & COMPOSEFLAG) leds |= XLED4;
> > -
> > -    pKbd->leds = leds;
> > -    pKbd->SetLeds(pInfo, pKbd->leds);
> > -}
> > -
> > -static void
> >  KbdCtrl( DeviceIntPtr device, KeybdCtrl *ctrl)
> >  {
> >     unsigned long leds;
> > @@ -256,35 +235,6 @@ KbdCtrl( DeviceIntPtr device, KeybdCtrl *ctrl)
> >    pKbd->SetLeds(pInfo, pKbd->leds);
> >  }
> >  
> > -static void
> > -InitKBD(InputInfoPtr pInfo, Bool init)
> > -{
> > -  KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
> > -
> > -  pKbd->scanPrefix      = 0;
> > -
> > -  if (init) {
> > -      pKbd->keyLeds = pKbd->GetLeds(pInfo);
> > -      UpdateLeds(pInfo);
> > -      pKbd->keyLeds |= INITFLAG;
> > -  } else {
> > -      unsigned long leds = pKbd->keyLeds;
> > -
> > -      pKbd->keyLeds = pKbd->GetLeds(pInfo);
> > -      UpdateLeds(pInfo);
> > -      if ((pKbd->keyLeds & CAPSFLAG) !=
> > -     ((leds & INITFLAG) ? 0 : (leds & CAPSFLAG))) {
> > -     pKbd->PostEvent(pInfo, KEY_CapsLock, TRUE);
> > -     pKbd->PostEvent(pInfo, KEY_CapsLock, FALSE);
> > -      }
> > -      if ((pKbd->keyLeds & NUMFLAG) !=
> > -     (leds & INITFLAG ? 0 : leds & NUMFLAG)) {
> > -     pKbd->PostEvent(pInfo, KEY_NumLock, TRUE);
> > -     pKbd->PostEvent(pInfo, KEY_NumLock, FALSE);
> > -      }
> > -  }
> > -}
> > -
> >  static int
> >  KbdProc(DeviceIntPtr device, int what)
> >  {
> > @@ -333,7 +283,6 @@ KbdProc(DeviceIntPtr device, int what)
> >                                           (KbdCtrlProcPtr)KbdCtrl);
> >           }
> >  #endif /* XINPUT ABI 5*/
> > -         InitKBD(pInfo, TRUE);
> >           break;
> >    case DEVICE_ON:
> >      if (device->public.on)
> > @@ -354,7 +303,7 @@ KbdProc(DeviceIntPtr device, int what)
> >      }
> >  
> >      device->public.on = TRUE;
> > -    InitKBD(pInfo, FALSE);
> > +    pKbd->scanPrefix = 0;
> >      break;
> >  
> >    case DEVICE_CLOSE:
> 
> 
> -- 
>       -Alan Coopersmith-        alan.coopersm...@oracle.com
>        Oracle Solaris Platform Engineering: X Window System
> 
> _______________________________________________
> xorg-devel@lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel

-- 
Alexandr Shadchin

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to