in reply to Re^4: ioctl - does it actually work? replaced or preferred by something else?
in thread ioctl - does it actually work? replaced or preferred by something else?

It's not to hard for me to guess what happened. It cautions right in /linux/fd.h that those particular ioctl numbers, affect the LEDS, not the flags. So once you meddled with the LED flags by turning them on/off without the correct keypress, it probably assumes you want manual control of them, and leaves them in a "manual state", totally disconnected from the CapsLock key. If I toggle the led on with the script, it dosn't mean that I'm typing with caps, and vice/versa for off. I can still use the CapsLock key, but the light dosn't toggle anymore.

Like the other reply by Fletch said, those low-level ioctl calls don't do exactly what you would think they should do, they do what the system designed for them. And that brings us back to your node title, "do they actually work"..... yeah ioctl's work, but they don't always do what you think, because they are performing fuctions at the lowest system level. I'm sure a keyboard driver engineer would say that is the way they are supposed to work, in order to support normal keyboard operation.

There probably is a way to re-establish the proper link between the key and the LED, after being on manual, but it isn't obvious how to do it in the headers, so it was easier for me to reboot. :-) There are a few gimmick c programs out there for flashing the keyboard leds, maybe you could find one, and see what they do to reset normal operation when the program exits.


I'm not really a human, but I play one on earth. Cogito ergo sum a bum
  • Comment on Re^5: ioctl - does it actually work? replaced or preferred by something else?

Replies are listed 'Best First'.
Re^6: ioctl - does it actually work? replaced or preferred by something else?
by Jack B. Nymbol (Acolyte) on Feb 19, 2007 at 22:46 UTC
    I don't have to reboot my system to get the CAPS-LOCK LED back to normal. I'm using latest stable kernel. And yes, ioctl works but there's still some privilege issues I need to understand.
    I am well aware that the test code toggles the LED and not the CAPS-LOCK, there's a separate ioctl for that.
      Well just to clarify the issue with the patched security kernel, I test booted a vanilla kernel (2.6.20-mm3 with mm3 patches ) and the results were the same. Once I ran the script, the keyboard CapsLock LED would no longer toggle when I hit the CapsLock key. I'm not sure at all where the problem lies, there are kernel, and motherboard-bios differences, etc. I guess my point is, don't count on that ioctl script to work right for everyone.

      I'm not really a human, but I play one on earth. Cogito ergo sum a bum