On Jan 4, 2014, at 2:14 PM, Steve Mills <[email protected]> wrote:

> On Jan 4, 2014, at 10:13:46, Alex Hall <[email protected]> wrote:
> 
>> Yes, I can do it, but it seems like there must be a more efficient way than 
>> or-ing every combination of those five masks with the modifier flags each 
>> keypress contains. I can't be the first to have this question, but google is 
>> oddly quiet on the topic and I just keep ending up at the Event Handling 
>> Guide or other sites that aren't what I'm looking for. As always, any 
>> suggestions are greatly appreciated.
> 
> Since there are only 5 modifiers (6 if you count num lock, 7 if you count 
> fn), all modifiers could fit into a single byte as individual bits. And since 
> there are less than 128 keys on even a full size keyboard, the key value 
> could also fit into a single byte. Squish them together into a UInt16 and 
> there's something you can easily use as the key in a dictionary (or std::map 
> if you prefer). Or use a full UInt32 so you'll have room to expand if they 
> add more modifiers or keys in the future. The key events you get from the OS 
> already have the mods packed into 16 bits, so you really wouldn't even need 
> to redefine your own constants for them, and the key code is also already a 
> short. There ya go, 2 shorts make UInt32.

> Got you. So, here's some sample code of how I'm thinking this could work. Can 
> anyone see flaws in it? I mostly ask because, during testing of keystroke 
> capturing, I noticed modifierFlags was often 256 even when I had not pressed 
> any modifiers at all. I know my function signatures might be wrong, and there 
> is no error-checking, but this gives you the idea.

//store a keystroke
NSUInteger key=[event keyCode]+[event modifierFlags];
SEL funcToCall=@selector(myFunction:);
NSDictionary* hotkeys=@{key:funcToCall};

-(void) keyDown:(NSEvent) event{
SEL func=[hotkeys ObjectForKey:[event keyCode]+[event modifierFlags]];
[self performSelector:func];
}

> --
> Steve Mills
> office: 952-818-3871
> home: 952-401-6255
> 
> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list ([email protected])
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/mehgcap%40gmail.com
> 
> This email sent to [email protected]



Have a great day,
Alex (msg sent from Mac Mini)
[email protected]




_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to