From: Joseph Spiros Date: Sun, 28 Sep 2003 20:22:15 +0000 (+0000) Subject: Removing old HotKey code... X-Git-Tag: v1.0~41 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/0147e1dcf90e00eb4e0875c2ea2f9971fe3c51ef Removing old HotKey code... --- diff --git a/HotKeyCenter.h b/HotKeyCenter.h deleted file mode 100755 index 10ab9f8..0000000 --- a/HotKeyCenter.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// HotKeyCenter.h -// -// Created by Quentin D. Carnicelli on Thu Jun 06 2002. -// Copyright (c) 2002 Subband inc.. All rights reserved. -// -// Feedback welcome at qdc@subband.com -// This code is provided AS IS, so don't hurt yourself with it... -// - -#import - -#import "KeyCombo.h" - -@interface HotKeyCenter : NSObject -{ - BOOL mEnabled; - NSMutableDictionary *mHotKeys; -} - -+ (id)sharedCenter; - -- (BOOL)addHotKey:(NSString *)name combo:(KeyCombo *)combo target:(id)target action:(SEL)action; -- (void)removeHotKey:(NSString *)name; - -- (NSArray *)allNames; -- (KeyCombo *)keyComboForName:(NSString *)name; - -- (void)setEnabled:(BOOL)enabled; -- (BOOL)enabled; - -- (void)sendEvent:(NSEvent *)event; - -@end diff --git a/HotKeyCenter.m b/HotKeyCenter.m deleted file mode 100755 index 9698fdb..0000000 --- a/HotKeyCenter.m +++ /dev/null @@ -1,344 +0,0 @@ -// -// HotKeyCenter.m -// -// Created by Quentin D. Carnicelli on Thu Jun 06 2002. -// Copyright (c) 2002 Subband inc.. All rights reserved. -// -// Feedback welcome at qdc@subband.com -// This code is provided AS IS, so don't hurt yourself with it... -// - -#import "HotKeyCenter.h" -#import "KeyCombo.h" - -#import - -#define kHotKeyCenterSignature 'HKyC' - -//*** _HotKeyData -@interface _HotKeyData : NSObject -{ - @public - BOOL mRegistered; - EventHotKeyRef mRef; - KeyCombo *mCombo; - id mTarget; - SEL mAction; -} -@end - -@implementation _HotKeyData -@end - -//**** HotKeyCenter -@interface HotKeyCenter (Private) - - (OSStatus)handleHotKeyEvent: (EventRef)inEvent; - - - (BOOL)_registerHotKeyIfNeeded:(_HotKeyData *)hk; - - (void)_unregisterHotKeyIfNeeded:(_HotKeyData *)hk; - - + (BOOL)_systemSupportsHotKeys; - - (void)_hotKeyUp:(_HotKeyData *)hotKey; - - (void)_hotKeyDown:(_HotKeyData *)hotKey; - - (void)_hotKeyDownWithRef:(EventHotKeyRef)ref; - - (void)_hotKeyUpWithRef:(EventHotKeyRef)ref; - - (_HotKeyData*)_findHotKeyWithRef:(EventHotKeyRef)ref; - - pascal OSErr keyEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEvent, void *refCon); -@end - -@implementation HotKeyCenter - -static id _sharedHKCenter = nil; - -+ (id)sharedCenter -{ - if (_sharedHKCenter != nil) - { - return _sharedHKCenter; - } - - _sharedHKCenter = [[HotKeyCenter alloc] init]; - - if ([self _systemSupportsHotKeys]) - { - EventTypeSpec eventSpec[2] = - { - { kEventClassKeyboard, kEventHotKeyPressed }, - { kEventClassKeyboard, kEventHotKeyReleased } - }; - - InstallEventHandler( GetEventDispatcherTarget(), NewEventHandlerUPP((EventHandlerProcPtr) keyEventHandler), 2, eventSpec, nil, nil); - } - - return _sharedHKCenter; -} - -- (id)init -{ - if ( (self = [super init]) ) - { - mEnabled = YES; - mHotKeys = [[NSMutableDictionary alloc] init]; - } - return self; -} - -- (void)dealloc -{ - [mHotKeys release]; - [super dealloc]; -} - -- (BOOL)addHotKey:(NSString *)name combo:(KeyCombo *)combo target:(id)target action:(SEL)action -{ - _HotKeyData *oldHotKey; - _HotKeyData *newHotKey; - - NSParameterAssert(name != nil); - NSParameterAssert(combo != nil); - NSParameterAssert(target != nil); - NSParameterAssert(action != nil); - - //** Check if we have one of these yet - oldHotKey = [mHotKeys objectForKey:name]; - - if (oldHotKey) //Registered already? - { - [self removeHotKey:name]; - } - - //** Save the hot key to our own list - newHotKey = [[[_HotKeyData alloc] init] autorelease]; - newHotKey->mRegistered = NO; - newHotKey->mRef = nil; - newHotKey->mCombo = [combo retain]; - newHotKey->mTarget = target; //Retain this? - newHotKey->mAction = action; - - [mHotKeys setObject:newHotKey forKey:name]; - - return [self _registerHotKeyIfNeeded:newHotKey]; -} - -- (void)removeHotKey:(NSString *)name; -{ - _HotKeyData *hotKey; - - hotKey = [mHotKeys objectForKey:name]; - if (hotKey == nil) //Not registered - return; - - [self _unregisterHotKeyIfNeeded:hotKey]; - [hotKey->mCombo release]; - - //Drop it from our hot key list - [mHotKeys removeObjectForKey: name]; -} - -- (NSArray *)allNames -{ - return [mHotKeys allKeys]; -} - -- (KeyCombo *)keyComboForName:(NSString *)name -{ - _HotKeyData * hotKey; - - hotKey = [mHotKeys objectForKey:name]; - if( hotKey == nil ) //Not registered - return nil; - - return hotKey->mCombo; -} - -- (void)setEnabled:(BOOL)enabled -{ - NSEnumerator *enumerator; - _HotKeyData *hotKey; - - enumerator = [mHotKeys objectEnumerator]; - - while ((hotKey = [enumerator nextObject]) != nil) - { - if (enabled) - [self _registerHotKeyIfNeeded:hotKey]; - else - [self _unregisterHotKeyIfNeeded:hotKey]; - } - - mEnabled = enabled; -} - -- (BOOL)enabled -{ - return mEnabled; -} - -- (void)sendEvent:(NSEvent *)event; -{ - long subType; - EventHotKeyRef hotKeyRef; - - //We only have to intercept sendEvent to do hot keys on old system versions - if ([HotKeyCenter _systemSupportsHotKeys] == YES) - return; - - if ([event type] == NSSystemDefined) - { - subType = [event subtype]; - - if (subType == 6) //6 is hot key down - { - hotKeyRef = (EventHotKeyRef)[event data1]; //data1 is our hot key ref - if (hotKeyRef != nil) - { - [self _hotKeyDownWithRef:hotKeyRef]; - } - } - else if (subType == 9) //9 is hot key up - { - hotKeyRef = (EventHotKeyRef)[event data1]; - if (hotKeyRef != nil) - { - [self _hotKeyUpWithRef:hotKeyRef]; - } - } - } -} - -- (OSStatus)handleHotKeyEvent:(EventRef)inEvent -{ - OSStatus err; - EventHotKeyID hotKeyID; - _HotKeyData *hk; - - //Shouldnt get here on non-hotkey supporting system versions - NSAssert([HotKeyCenter _systemSupportsHotKeys] == YES, @""); - NSAssert(GetEventClass(inEvent) == kEventClassKeyboard, @"Got unhandled event class"); - - err = GetEventParameter(inEvent, kEventParamDirectObject, typeEventHotKeyID, nil, sizeof(EventHotKeyID), nil, &hotKeyID); - - if (err) - { - return err; - } - - NSAssert(hotKeyID.signature == kHotKeyCenterSignature, @"Got unknown hot key"); - - hk = (_HotKeyData *)hotKeyID.id; - NSAssert(hk != nil, @"Got bad hot key"); - - switch (GetEventKind(inEvent)) - { - case kEventHotKeyPressed: - [self _hotKeyDown:hk]; - break; - - case kEventHotKeyReleased: - [self _hotKeyUp:hk]; - break; - - default: - break; - } - - return noErr; -} - -+ (BOOL)_systemSupportsHotKeys -{ - SInt32 vers; - Gestalt(gestaltSystemVersion,&vers); - return (vers >= 0x00001020); -} - -- (BOOL)_registerHotKeyIfNeeded:(_HotKeyData *)hk -{ - KeyCombo *combo; - - NSParameterAssert(hk != nil); - - combo = hk->mCombo; - - if( mEnabled == YES && hk->mRegistered == NO && [combo isValid] == YES ) - { - EventHotKeyID keyID; - OSStatus err; - - keyID.signature = kHotKeyCenterSignature; - keyID.id = (unsigned long)hk; - err = RegisterEventHotKey([combo keyCode], [combo modifiers], - keyID, GetEventDispatcherTarget(), 0, &hk->mRef); - if (err) - { - return NO; - } - - hk->mRegistered = YES; - } - - return YES; -} - -- (void)_unregisterHotKeyIfNeeded:(_HotKeyData *)hk -{ - NSParameterAssert(hk != nil); - - if (hk->mRegistered && hk->mRef != nil) - { - UnregisterEventHotKey(hk->mRef); - } -} - -- (void)_hotKeyDown:(_HotKeyData *)hotKey -{ - id target = hotKey->mTarget; - SEL action = hotKey->mAction; - [target performSelector:action withObject:self]; -} - -- (void)_hotKeyUp: (_HotKeyData *)hotKey -{ -} - -- (void)_hotKeyDownWithRef:(EventHotKeyRef)ref -{ - _HotKeyData *hotKey; - - hotKey = [self _findHotKeyWithRef:ref]; - if (hotKey) - { - [self _hotKeyDown:hotKey]; - } -} - -- (void)_hotKeyUpWithRef:(EventHotKeyRef)ref -{ -} - -- (_HotKeyData *)_findHotKeyWithRef:(EventHotKeyRef)ref -{ - NSEnumerator *enumerator; - _HotKeyData *hotKey; - - enumerator = [mHotKeys objectEnumerator]; - - while ((hotKey = [enumerator nextObject]) != nil) - { - if (hotKey->mRef == ref) - { - return hotKey; - } - } - - return nil; -} - -pascal OSErr keyEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEvent, void *refCon) -{ - return [[HotKeyCenter sharedCenter] handleHotKeyEvent:inEvent]; -} - -@end - diff --git a/KeyBroadcaster.h b/KeyBroadcaster.h deleted file mode 100755 index 19df649..0000000 --- a/KeyBroadcaster.h +++ /dev/null @@ -1,9 +0,0 @@ -/* KeyBroadcaster */ - -#import - -@interface KeyBroadcaster : NSButton -{ -} -+ (long)cocoaToCarbonModifiers:(long)modifiers; -@end diff --git a/KeyBroadcaster.m b/KeyBroadcaster.m deleted file mode 100755 index 724c7a2..0000000 --- a/KeyBroadcaster.m +++ /dev/null @@ -1,60 +0,0 @@ -#import "KeyBroadcaster.h" -#import - -@interface KeyBroadcaster (Private) -- (void)_broadcastKeyCode:(short)keyCode andModifiers:(long)modifiers; -@end - -@implementation KeyBroadcaster - -- (void)keyDown:(NSEvent *)event -{ - short keyCode; - long modifiers; - - keyCode = [event keyCode]; - modifiers = [event modifierFlags]; - - modifiers = [KeyBroadcaster cocoaToCarbonModifiers:modifiers]; - if (modifiers > 0) { - [self _broadcastKeyCode:keyCode andModifiers:modifiers]; - } -} - -- (BOOL)performKeyEquivalent:(NSEvent *)event -{ - [self keyDown:event]; - return YES; -} - -- (void)_broadcastKeyCode:(short)keyCode andModifiers:(long)modifiers -{ - NSNumber *keycodeNum = [NSNumber numberWithShort:keyCode]; - NSNumber *modifiersNum = [NSNumber numberWithLong:modifiers]; - NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys: - keycodeNum, @"KeyCode", modifiersNum, @"Modifiers", nil, nil]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"KeyBroadcasterEvent" object:self userInfo:info]; -} - -+ (long)cocoaToCarbonModifiers:(long)modifiers -{ - long carbonModifiers = 0; - int i; - static long cocoaToCarbon[6][2] = - { - { NSCommandKeyMask, cmdKey }, - { NSAlternateKeyMask, optionKey }, - { NSControlKeyMask, controlKey }, - { NSShiftKeyMask, shiftKey }, - }; - for (i = 0; i < 6; i++) - { - if (modifiers & cocoaToCarbon[i][0]) - { - carbonModifiers += cocoaToCarbon[i][1]; - } - } - return carbonModifiers; -} - -@end diff --git a/KeyCombo.h b/KeyCombo.h deleted file mode 100755 index 743c77b..0000000 --- a/KeyCombo.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// KeyCombo.h -// -// Created by Quentin D. Carnicelli on Tue Jun 18 2002. -// Copyright (c) 2001 Subband inc.. All rights reserved. -// - -#import - - -@interface KeyCombo : NSObject -{ - short mKeyCode; - long mModifiers; -} - -+ (id)keyCombo; -+ (id)clearKeyCombo; -+ (id)keyComboWithKeyCode:(short)keycode andModifiers:(long)modifiers; - -- (id)initWithKeyCode:(short)keycode andModifiers:(long)modifiers; - -- (id)copyWithZone:(NSZone *)zone; -- (BOOL)isEqual:(id)object; - -- (short)keyCode; -- (short)modifiers; - -- (BOOL)isValid; - -- (NSString *)userDisplayRep; -+ (NSDictionary *)keyCodesDictionary; - -@end - -@interface NSUserDefaults (KeyComboAdditions) - -- (void)setKeyCombo: (KeyCombo *)combo forKey: (NSString *)key; -- (KeyCombo *)keyComboForKey: (NSString *)key; - -@end diff --git a/KeyCombo.m b/KeyCombo.m deleted file mode 100755 index 409c992..0000000 --- a/KeyCombo.m +++ /dev/null @@ -1,201 +0,0 @@ -// -// KeyCombo.m -// -// Created by Quentin D. Carnicelli on Tue Jun 18 2002. -// Copyright (c) 2001 Subband inc.. All rights reserved. -// - -#import "KeyCombo.h" - -#import -#import - -@interface KeyCombo (Private) - + (NSString*)_stringForModifiers:(long)modifiers; - + (NSString*)_stringForKeyCode:(short)keyCode; -@end - - -@implementation KeyCombo - -+ (id)keyCombo -{ - return [[[self alloc] init] autorelease]; -} - -+ (id)clearKeyCombo -{ - return [self keyComboWithKeyCode:-1 andModifiers:-1]; -} - -+ (id)keyComboWithKeyCode: (short)keycode andModifiers: (long)modifiers -{ - return [[[self alloc] initWithKeyCode:keycode andModifiers:modifiers] autorelease]; -} - -- (id)initWithKeyCode: (short)keycode andModifiers: (long)modifiers -{ - if ( (self = [super init]) ) - { - mKeyCode = keycode; - mModifiers = modifiers; - } - return self; -} - -- (id)init -{ - return [self initWithKeyCode: -1 andModifiers: -1]; -} - -- (id)copyWithZone:(NSZone *)zone; -{ - return [self retain]; -} - -- (id)initWithCoder:(NSCoder *)aDecoder -{ - if ( (self = [super init]) ) { - [aDecoder decodeValueOfObjCType: @encode(short) at: &mKeyCode]; - [aDecoder decodeValueOfObjCType: @encode(long) at: &mModifiers]; - } - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder -{ - [aCoder encodeValueOfObjCType:@encode(short) at:&mKeyCode]; - [aCoder encodeValueOfObjCType:@encode(long) at:&mModifiers]; -} - -- (BOOL)isEqual:(KeyCombo *)object -{ - return ( ([object isKindOfClass:[KeyCombo class]]) && - ([object keyCode] == [self keyCode]) && - ([object modifiers] == [self modifiers]) ); -} - -- (NSString *)description -{ - return [self userDisplayRep]; -} - -- (short)keyCode -{ - return mKeyCode; -} - -- (short)modifiers -{ - return mModifiers; -} - -- (BOOL)isValid -{ - return ((mKeyCode >= 0) && (mModifiers >= 0)); -} - -- (NSString *)userDisplayRep -{ - if ( ! [self isValid] ) { - return @""; - } else { - return [NSString stringWithFormat: @"%@%@", - [KeyCombo _stringForModifiers: mModifiers], - [KeyCombo _stringForKeyCode: mKeyCode]]; - } -} - -+ (NSString *)_stringForModifiers: (long)modifiers -{ - static long modToChar[4][2] = { - { cmdKey, 0x23180000 }, - { optionKey, 0x23250000 }, - { controlKey, 0x23030000 }, - { shiftKey, 0x21e70000 } - }; - - NSString *str = [NSString string]; - NSString *charStr; - long i; - - for (i = 0; i < 4; i++) { - if (modifiers & modToChar[i][0]) { - charStr = [NSString stringWithCharacters:(const unichar *)&modToChar[i][1] length:1]; - str = [str stringByAppendingString:charStr]; - } - } - - return str; -} - -+ (NSString *)_stringForKeyCode:(short)keyCode -{ - NSDictionary *dict; - id key; - NSString *str; - - dict = [self keyCodesDictionary]; - key = [NSString stringWithFormat: @"%d", keyCode]; - str = [dict objectForKey: key]; - - if( !str ) { - str = [NSString stringWithFormat: @"%X", keyCode]; - } - - return str; -} - -+ (NSDictionary *)keyCodesDictionary -{ - static NSDictionary *keyCodes = nil; - - if (keyCodes == nil) { - NSString *path; - NSString *contents; - - path = [[NSBundle bundleForClass: [KeyCombo class]] pathForResource: @"KeyCodes" ofType: @"plist"]; - - contents = [NSString stringWithContentsOfFile: path]; - keyCodes = [[contents propertyList] retain]; - } - - return keyCodes; -} - -@end - -@implementation NSUserDefaults (KeyComboAdditions) - -- (void)setKeyCombo:(KeyCombo *)combo forKey:(NSString *)key -{ - NSData *data; - if (combo) { - data = [NSArchiver archivedDataWithRootObject:combo]; - } else { - data = nil; - } - [self setObject:data forKey:key]; -} - -- (KeyCombo *)keyComboForKey:(NSString *)key -{ - NSData *data = [self objectForKey:key]; - KeyCombo *combo; - - if (data) { - combo = [NSUnarchiver unarchiveObjectWithData:data]; - } else { - combo = nil; - } - - return combo; -} - -@end - - - - -