Re: Catching app-wide (system-wide) modifier keypress
Re: Catching app-wide (system-wide) modifier keypress
- Subject: Re: Catching app-wide (system-wide) modifier keypress
- From: Michael Babin <email@hidden>
- Date: Tue, 21 Aug 2012 07:12:42 -0500
On Aug 21, 2012, at 6:33 AM, Jean Suisse <email@hidden> wrote:
> In short :
> Is there a way to be notified of any change in the status of control keys (option, control, command, etc.) in a given NSWindowController, when another window of the app has the focus ?
>
> Long version (what I am trying to achieve) :
> The app I am currently working on is a multipurpose data acquisition software for scientists.
> To make it simple, let's say the app has two windows. One main window in which tasks are created and configured, one small HUD-window in which the user can see all created and scheduled tasks (pending execution).
>
> On the HUD window, tasks can be altered (started, stopped, removed, etc…) by means of appropriate buttons and pressing the option key while clicking on one of these buttons can modify the action (e.g. pressing option while clicking on the cancel will cancel all tasks instead of only the current task).
>
> Currently, I am using
>
> -(void)flagsChanged:(NSEvent *)theEvent
>
> in the NSWindowController to display the appropriate text/image on the button (so that the user knows which action will be executed upon hitting the button).
>
> The issue :
> When the main window of the application (or any other window but the HUD panel) has the focus, hitting the option key will not change the text on the panel button, since the panel will never get the event. However, clicking on one of the panel button will activate the panel and execute the right action (depending on the status of the option key). In this particular situation, the text/image displayed on the button does not match the executed action.
>
> Question:
> How can I catch app-wide flagsChanged events to always have my buttons display the appropriate text / image ?
See the Cocoa Event Handling Guide, particularly the section on Monitoring Events:
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/MonitoringEvents/MonitoringEvents.html
A local event monitor with the proper mask (NSFlagsChanged) should provide what you want.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden