mirror of
				https://github.com/TermiT/Flycut.git
				synced 2025-10-31 08:26:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			185 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
	
		
			6.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  SRCommon.h
 | |
| //  ShortcutRecorder
 | |
| //
 | |
| //  Copyright 2006-2007 Contributors. All rights reserved.
 | |
| //
 | |
| //  License: BSD
 | |
| //
 | |
| //  Contributors:
 | |
| //      David Dauer
 | |
| //      Jesper
 | |
| //      Jamie Kirkpatrick
 | |
| 
 | |
| #import <Cocoa/Cocoa.h>
 | |
| #import <Carbon/Carbon.h>
 | |
| #import <CoreServices/CoreServices.h>
 | |
| 
 | |
| #pragma mark Dummy class 
 | |
| 
 | |
| @interface SRDummyClass : NSObject {} @end
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Typedefs
 | |
| 
 | |
| typedef struct _KeyCombo {
 | |
| 	NSUInteger flags; // 0 for no flags
 | |
| 	NSInteger code; // -1 for no code
 | |
| } KeyCombo;
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Enums
 | |
| 
 | |
| // Unicode values of some keyboard glyphs
 | |
| enum {
 | |
| 	KeyboardTabRightGlyph       = 0x21E5,
 | |
| 	KeyboardTabLeftGlyph        = 0x21E4,
 | |
| 	KeyboardCommandGlyph        = kCommandUnicode,
 | |
| 	KeyboardOptionGlyph         = kOptionUnicode,
 | |
| 	KeyboardShiftGlyph          = kShiftUnicode,
 | |
| 	KeyboardControlGlyph        = kControlUnicode,
 | |
| 	KeyboardReturnGlyph         = 0x2305,
 | |
| 	KeyboardReturnR2LGlyph      = 0x21A9,	
 | |
| 	KeyboardDeleteLeftGlyph     = 0x232B,
 | |
| 	KeyboardDeleteRightGlyph    = 0x2326,	
 | |
| 	KeyboardPadClearGlyph       = 0x2327,
 | |
|     KeyboardLeftArrowGlyph      = 0x2190,
 | |
| 	KeyboardRightArrowGlyph     = 0x2192,
 | |
| 	KeyboardUpArrowGlyph        = 0x2191,
 | |
| 	KeyboardDownArrowGlyph      = 0x2193,
 | |
|     KeyboardPageDownGlyph       = 0x21DF,
 | |
| 	KeyboardPageUpGlyph         = 0x21DE,
 | |
| 	KeyboardNorthwestArrowGlyph = 0x2196,
 | |
| 	KeyboardSoutheastArrowGlyph = 0x2198,
 | |
| 	KeyboardEscapeGlyph         = 0x238B,
 | |
| 	KeyboardHelpGlyph           = 0x003F,
 | |
| 	KeyboardUpArrowheadGlyph    = 0x2303,
 | |
| };
 | |
| 
 | |
| // Special keys
 | |
| enum {
 | |
| 	kSRKeysF1 = 122,
 | |
| 	kSRKeysF2 = 120,
 | |
| 	kSRKeysF3 = 99,
 | |
| 	kSRKeysF4 = 118,
 | |
| 	kSRKeysF5 = 96,
 | |
| 	kSRKeysF6 = 97,
 | |
| 	kSRKeysF7 = 98,
 | |
| 	kSRKeysF8 = 100,
 | |
| 	kSRKeysF9 = 101,
 | |
| 	kSRKeysF10 = 109,
 | |
| 	kSRKeysF11 = 103,
 | |
| 	kSRKeysF12 = 111,
 | |
| 	kSRKeysF13 = 105,
 | |
| 	kSRKeysF14 = 107,
 | |
| 	kSRKeysF15 = 113,
 | |
| 	kSRKeysF16 = 106,
 | |
| 	kSRKeysF17 = 64,
 | |
| 	kSRKeysF18 = 79,
 | |
| 	kSRKeysF19 = 80,
 | |
| 	kSRKeysSpace = 49,
 | |
| 	kSRKeysDeleteLeft = 51,
 | |
| 	kSRKeysDeleteRight = 117,
 | |
| 	kSRKeysPadClear = 71,
 | |
| 	kSRKeysLeftArrow = 123,
 | |
| 	kSRKeysRightArrow = 124,
 | |
| 	kSRKeysUpArrow = 126,
 | |
| 	kSRKeysDownArrow = 125,
 | |
| 	kSRKeysSoutheastArrow = 119,
 | |
| 	kSRKeysNorthwestArrow = 115,
 | |
| 	kSRKeysEscape = 53,
 | |
| 	kSRKeysPageDown = 121,
 | |
| 	kSRKeysPageUp = 116,
 | |
| 	kSRKeysReturnR2L = 36,
 | |
| 	kSRKeysReturn = 76,
 | |
| 	kSRKeysTabRight = 48,
 | |
| 	kSRKeysHelp = 114
 | |
| };
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Macros
 | |
| 
 | |
| // Localization macros, for use in any bundle
 | |
| #define SRLoc(key) SRLocalizedString(key, nil)
 | |
| #define SRLocalizedString(key, comment) NSLocalizedStringFromTableInBundle(key, @"ShortcutRecorder", [NSBundle bundleForClass: [SRDummyClass class]], comment)
 | |
| 
 | |
| // Image macros, for use in any bundle
 | |
| //#define SRImage(name) [[[NSImage alloc] initWithContentsOfFile: [[NSBundle bundleForClass: [self class]] pathForImageResource: name]] autorelease]
 | |
| #define SRResIndImage(name) [SRSharedImageProvider supportingImageWithName:name]
 | |
| #define SRImage(name) SRResIndImage(name)
 | |
| 
 | |
| //#define SRCommonWriteDebugImagery
 | |
| 
 | |
| // Macros for glyps
 | |
| #define SRInt(x) [NSNumber numberWithInteger:x]
 | |
| #define SRChar(x) [NSString stringWithFormat: @"%C", x]
 | |
| 
 | |
| // Some default values
 | |
| #define ShortcutRecorderEmptyFlags 0
 | |
| #define ShortcutRecorderAllFlags ShortcutRecorderEmptyFlags | (NSCommandKeyMask | NSAlternateKeyMask | NSControlKeyMask | NSShiftKeyMask | NSFunctionKeyMask)
 | |
| #define ShortcutRecorderEmptyCode -1
 | |
| 
 | |
| // These keys will cancel the recoding mode if not pressed with any modifier
 | |
| #define ShortcutRecorderEscapeKey 53
 | |
| #define ShortcutRecorderBackspaceKey 51
 | |
| #define ShortcutRecorderDeleteKey 117
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Getting a string of the key combination
 | |
| 
 | |
| //
 | |
| // ################### +- Returns string from keyCode like NSEvent's -characters
 | |
| // #   EXPLANATORY   # | +- Returns string from keyCode like NSEvent's -charactersUsingModifiers
 | |
| // #      CHART      # | | +- Returns fully readable and localized name of modifier (if modifier given)
 | |
| // ################### | | | +- Returns glyph of modifier (if modifier given)
 | |
| // SRString...         X - - X
 | |
| // SRReadableString... X - X -
 | |
| // SRCharacter...      - X - -
 | |
| //
 | |
| NSString * SRStringForKeyCode( NSInteger keyCode );
 | |
| NSString * SRStringForCarbonModifierFlags( NSUInteger flags );
 | |
| NSString * SRStringForCarbonModifierFlagsAndKeyCode( NSUInteger flags, NSInteger keyCode );
 | |
| NSString * SRStringForCocoaModifierFlags( NSUInteger flags );
 | |
| NSString * SRStringForCocoaModifierFlagsAndKeyCode( NSUInteger flags, NSInteger keyCode );
 | |
| NSString * SRReadableStringForCarbonModifierFlagsAndKeyCode( NSUInteger flags, NSInteger keyCode );
 | |
| NSString * SRReadableStringForCocoaModifierFlagsAndKeyCode( NSUInteger flags, NSInteger keyCode );
 | |
| NSString *SRCharacterForKeyCodeAndCarbonFlags(NSInteger keyCode, NSUInteger carbonFlags);
 | |
| NSString *SRCharacterForKeyCodeAndCocoaFlags(NSInteger keyCode, NSUInteger cocoaFlags);
 | |
| 
 | |
| #pragma mark Converting between Cocoa and Carbon modifier flags
 | |
| 
 | |
| NSUInteger SRCarbonToCocoaFlags( NSUInteger carbonFlags );
 | |
| NSUInteger SRCocoaToCarbonFlags( NSUInteger cocoaFlags );
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Animation pace function
 | |
| 
 | |
| CGFloat SRAnimationEaseInOut(CGFloat t);
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Inlines
 | |
| 
 | |
| FOUNDATION_STATIC_INLINE KeyCombo SRMakeKeyCombo(NSInteger code, NSUInteger flags) {
 | |
| 	KeyCombo kc;
 | |
| 	kc.code = code;
 | |
| 	kc.flags = flags;
 | |
| 	return kc;
 | |
| }
 | |
| 
 | |
| FOUNDATION_STATIC_INLINE BOOL SRIsSpecialKey(NSInteger keyCode) {
 | |
| 	return (keyCode == kSRKeysF1 || keyCode == kSRKeysF2 || keyCode == kSRKeysF3 || keyCode == kSRKeysF4 || keyCode == kSRKeysF5 || keyCode == kSRKeysF6 || keyCode == kSRKeysF7 || keyCode == kSRKeysF8 || keyCode == kSRKeysF9 || keyCode == kSRKeysF10 || keyCode == kSRKeysF11 || keyCode == kSRKeysF12 || keyCode == kSRKeysF13 || keyCode == kSRKeysF14 || keyCode == kSRKeysF15 || keyCode == kSRKeysF16 || keyCode == kSRKeysSpace || keyCode == kSRKeysDeleteLeft || keyCode == kSRKeysDeleteRight || keyCode == kSRKeysPadClear || keyCode == kSRKeysLeftArrow || keyCode == kSRKeysRightArrow || keyCode == kSRKeysUpArrow || keyCode == kSRKeysDownArrow || keyCode == kSRKeysSoutheastArrow || keyCode == kSRKeysNorthwestArrow || keyCode == kSRKeysEscape || keyCode == kSRKeysPageDown || keyCode == kSRKeysPageUp || keyCode == kSRKeysReturnR2L || keyCode == kSRKeysReturn || keyCode == kSRKeysTabRight || keyCode == kSRKeysHelp);
 | |
| }
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Additions
 | |
| 
 | |
| @interface NSAlert( SRAdditions )
 | |
| + (NSAlert *) alertWithNonRecoverableError:(NSError *)error;
 | |
| @end
 | |
| 
 | |
| #pragma mark -
 | |
| #pragma mark Image provider
 | |
| 
 | |
| @interface SRSharedImageProvider : NSObject
 | |
| + (NSImage *)supportingImageWithName:(NSString *)name;
 | |
| @end
 |