You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

116 lines
3.2 KiB

//
// 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);