> > Have these keys been hardcoded? > > BenH explained this before, I think he said it was a hardware problem (the > Caps-Lock key not sending a keycode when it goes back up, or something like > that), that would also explain why you can't switch these 2 keys. Is there a > fix > for that ?
The original Apple keyboards had the capslock key implemented sticky (in hardware), it doesn't send a key up event so the keyboard_input routine in the kernel keyboard driver fakes a key up immediately on seeing the key down. Swapping caps lock with any other modifier key in the input layer will result in the new modifier key behave funny because the ADB layer still generates the missing key up immediately. What you can do is read the status of the keyboard via ADB command each time you see the caps lock event - see the notorious space aliens technote for details on the register format reflecting keyboard status. Please think twice before sending ab ADB request from keyboard_input: the routine itself is called from the ADB interrupt handler upon completion of a packet receive so you might have to play tricks if the ADB interrupt handler still has the ADB bus marked busy at that time. Sounds like fun? Thats's Apple ADB for you :-) Michael