Technical Q&A QA1519
Detecting the Caps Lock Key
Q: How do I detect when the caps lock key is turned on or off in my Cocoa application?
A: You must implement flagsChanged:
in order to detect this key.
NSResponder
keyDown:
and keyUp:
methods do not fire when just a modifier key is pressed. So if you want to catch this event, you will need to override:
- (void)flagsChanged:(NSEvent*)
and examine the NSEvent
from there.
The flagsChanged:
method comes from NSResponder
, so any responder in the responder chain can react to it.
Listing 1 Detecting the caps lock key.
- (void)flagsChanged:(NSEvent*)event |
{ |
if ([event keyCode] == 0x39) // 57 = key code for caps lock |
{ |
NSUInteger flags = [event modifierFlags]; |
if (flags & NSAlphaShiftKeyMask) |
NSLog(@"capsLock on"); |
else |
NSLog(@"capsLock off"); |
} |
} |
Related Documentation
Document Revision History
Date | Notes |
---|---|
2013-01-28 | Repaired outdated links to documentation. |
2007-05-11 | New document that explains how to detect when the caps lock key is turned on and off. |
Copyright © 2013 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2013-01-28