|
|
// |
|
|
// SRCommon.h |
|
|
// ShortcutRecorder |
|
|
// |
|
|
// Copyright 2006-2012 Contributors. All rights reserved. |
|
|
// |
|
|
// License: BSD |
|
|
// |
|
|
// Contributors: |
|
|
// David Dauer |
|
|
// Jesper |
|
|
// Jamie Kirkpatrick |
|
|
// Andy Kim |
|
|
// Ilya Kulakov |
|
|
|
|
|
#import <Cocoa/Cocoa.h> |
|
|
#import <Carbon/Carbon.h> |
|
|
|
|
|
|
|
|
/*! |
|
|
Mask representing subset of Cocoa modifier flags suitable for shortcuts. |
|
|
*/ |
|
|
static const NSEventModifierFlags SRCocoaModifierFlagsMask = NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask; |
|
|
|
|
|
/*! |
|
|
Mask representing subset of Carbon modifier flags suitable for shortcuts. |
|
|
*/ |
|
|
static const NSUInteger SRCarbonModifierFlagsMask = cmdKey | optionKey | shiftKey | controlKey; |
|
|
|
|
|
|
|
|
/*! |
|
|
Converts carbon modifier flags to cocoa. |
|
|
*/ |
|
|
FOUNDATION_STATIC_INLINE NSEventModifierFlags SRCarbonToCocoaFlags(UInt32 aCarbonFlags) |
|
|
{ |
|
|
NSEventModifierFlags cocoaFlags = 0; |
|
|
|
|
|
if (aCarbonFlags & cmdKey) |
|
|
cocoaFlags |= NSCommandKeyMask; |
|
|
|
|
|
if (aCarbonFlags & optionKey) |
|
|
cocoaFlags |= NSAlternateKeyMask; |
|
|
|
|
|
if (aCarbonFlags & controlKey) |
|
|
cocoaFlags |= NSControlKeyMask; |
|
|
|
|
|
if (aCarbonFlags & shiftKey) |
|
|
cocoaFlags |= NSShiftKeyMask; |
|
|
|
|
|
return cocoaFlags; |
|
|
} |
|
|
|
|
|
/*! |
|
|
Converts cocoa modifier flags to carbon. |
|
|
*/ |
|
|
FOUNDATION_STATIC_INLINE UInt32 SRCocoaToCarbonFlags(NSEventModifierFlags aCocoaFlags) |
|
|
{ |
|
|
UInt32 carbonFlags = 0; |
|
|
|
|
|
if (aCocoaFlags & NSCommandKeyMask) |
|
|
carbonFlags |= cmdKey; |
|
|
|
|
|
if (aCocoaFlags & NSAlternateKeyMask) |
|
|
carbonFlags |= optionKey; |
|
|
|
|
|
if (aCocoaFlags & NSControlKeyMask) |
|
|
carbonFlags |= controlKey; |
|
|
|
|
|
if (aCocoaFlags & NSShiftKeyMask) |
|
|
carbonFlags |= shiftKey; |
|
|
|
|
|
return carbonFlags; |
|
|
} |
|
|
|
|
|
|
|
|
/*! |
|
|
Return Bundle where resources can be found. |
|
|
|
|
|
@discussion Throws NSInternalInconsistencyException if bundle cannot be found. |
|
|
*/ |
|
|
NSBundle *SRBundle(); |
|
|
|
|
|
|
|
|
/*! |
|
|
Convenient method to get localized string from the framework bundle. |
|
|
*/ |
|
|
NSString *SRLoc(NSString *aKey); |
|
|
|
|
|
|
|
|
/*! |
|
|
Convenient method to get image from the framework bundle. |
|
|
*/ |
|
|
NSImage *SRImage(NSString *anImageName); |
|
|
|
|
|
/*! |
|
|
Returns string representation of shortcut with modifier flags replaced with their localized |
|
|
readable equivalents (e.g. ? -> Option). |
|
|
*/ |
|
|
NSString *SRReadableStringForCocoaModifierFlagsAndKeyCode(NSEventModifierFlags aModifierFlags, unsigned short aKeyCode); |
|
|
|
|
|
/*! |
|
|
Returns string representation of shortcut with modifier flags replaced with their localized |
|
|
readable equivalents (e.g. ? -> Option) and ASCII character for key code. |
|
|
*/ |
|
|
NSString *SRReadableASCIIStringForCocoaModifierFlagsAndKeyCode(NSEventModifierFlags aModifierFlags, unsigned short aKeyCode); |
|
|
|
|
|
/*! |
|
|
Determines if given key code with flags is equal to key equivalent and flags |
|
|
(usually taken from NSButton or NSMenu). |
|
|
|
|
|
@discussion On Mac OS X some key combinations can have "alternates". E.g. option-A can be represented both as option-A and as <EFBFBD>. |
|
|
*/ |
|
|
BOOL SRKeyCodeWithFlagsEqualToKeyEquivalentWithFlags(unsigned short aKeyCode, |
|
|
NSEventModifierFlags aKeyCodeFlags, |
|
|
NSString *aKeyEquivalent, |
|
|
NSEventModifierFlags aKeyEquivalentModifierFlags);
|
|
|
|