117 lines
1.9 KiB
Matlab
117 lines
1.9 KiB
Matlab
|
/*
|
||
|
* NDHotKeyControl.m
|
||
|
* NDHotKeyEvent
|
||
|
*
|
||
|
* Created by Nathan Day on Wed Mar 05 2003.
|
||
|
* Copyright (c) 2002 Nathan Day. All rights reserved.
|
||
|
*/
|
||
|
|
||
|
#import "NDHotKeyControl.h"
|
||
|
#import "NDHotKeyEvent.h"
|
||
|
|
||
|
/*
|
||
|
* class implementation NDHotKeyControl
|
||
|
*/
|
||
|
@implementation NDHotKeyControl
|
||
|
|
||
|
/*
|
||
|
* -initWithFrame:
|
||
|
*/
|
||
|
- (id)initWithFrame:(NSRect)aFrame
|
||
|
{
|
||
|
if ( self = [super initWithFrame:aFrame] )
|
||
|
{
|
||
|
[self setEditable:NO];
|
||
|
requiresModifierKeys = YES;
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -initWithCoder:
|
||
|
*/
|
||
|
- (id)initWithCoder:(NSCoder *)aCoder
|
||
|
{
|
||
|
if ( self = [super initWithCoder:aCoder] )
|
||
|
{
|
||
|
[self setEditable:NO];
|
||
|
requiresModifierKeys = YES;
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -keyCode
|
||
|
*/
|
||
|
- (unsigned short)keyCode
|
||
|
{
|
||
|
return keyCode;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -character
|
||
|
*/
|
||
|
- (unichar)character
|
||
|
{
|
||
|
return character;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -modifierFlags
|
||
|
*/
|
||
|
- (unsigned long)modifierFlags
|
||
|
{
|
||
|
return modifierFlags;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -performKeyEquivalent:
|
||
|
*/
|
||
|
- (BOOL)performKeyEquivalent:(NSEvent*)anEvent
|
||
|
{
|
||
|
[self keyDown:anEvent];
|
||
|
return YES;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -keyDown:
|
||
|
*/
|
||
|
- (void)keyDown:(NSEvent *)theEvent
|
||
|
{
|
||
|
unsigned long theModifierFlags = [theEvent modifierFlags];
|
||
|
unichar theChar = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
|
||
|
theModifierFlags &= (NSShiftKeyMask|NSControlKeyMask|NSAlternateKeyMask|NSCommandKeyMask);
|
||
|
|
||
|
if( (theModifierFlags != 0 || !requiresModifierKeys || theChar > 255) && theChar != 0 )
|
||
|
{
|
||
|
keyCode = [theEvent keyCode];
|
||
|
modifierFlags = theModifierFlags;
|
||
|
character = theChar;
|
||
|
|
||
|
[self setStringValue:stringForKeyCodeAndModifierFlags( keyCode, character, modifierFlags )];
|
||
|
[self performClick:self];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* -hotKeyEvent
|
||
|
*/
|
||
|
- (NDHotKeyEvent *)hotKeyEvent
|
||
|
{
|
||
|
return [NDHotKeyEvent getHotKeyForKeyCode:[self keyCode] character:[self character] modifierFlags:[self modifierFlags]];
|
||
|
|
||
|
}
|
||
|
|
||
|
- (void)setRequiresModifierKeys:(BOOL)aFlag
|
||
|
{
|
||
|
requiresModifierKeys = aFlag;
|
||
|
}
|
||
|
|
||
|
- (BOOL)requiresModifierKeys
|
||
|
{
|
||
|
return requiresModifierKeys;
|
||
|
}
|
||
|
|
||
|
@end
|
||
|
|