• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Key event data not available in eventRef
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Key event data not available in eventRef


  • Subject: Re: Key event data not available in eventRef
  • From: Eric Schlegel <email@hidden>
  • Date: Tue, 04 Mar 2014 11:51:31 -0800

On Mar 4, 2014, at 11:28 AM, Mills, Steve <email@hidden> wrote:

> On Mar 4, 2014, at 13:03:34, Mills, Steve <email@hidden> wrote:
>
>> I'm seeing something really odd. We get the NSEvent for the current keyDown when the user types an unmodified space. From that we get the eventRef to pass to some legacy code. Sometimes that EventRef will contain the correct space character (32) in kEventParamKeyMacCharCodes and the correct space character (32) in kEventParamKeyUnicodes. Other times it will pass back an INcorrect 0-value for kEventParamKeyMacCharCodes (and return noErr) and generate error -9870 (eventParameterNotFoundErr) for kEventParamKeyUnicodes. In both cases the kEventParamKeyCode will be correct (49). In all cases, the NSEvent contains the correct space character.
>>
>> Any ideas why NSEvent is creating an incorrect EventRef under some circumstances but not others? In our app, switching tools causes the different results, which will swap in/out tool-specific menus in the menubar. None of the menus use modified or unmodified space as a key equiv.
>
> Weird. If I set a breakpoint in our app's sendEvent handler and get the eventRef, it contains the correct key char and uni char. But by the time the NSEvent's _eventRef is NULL (so I guess NSApplication has duplicated the NSEvent but not the EventRef when we pass it to super), and then getting the eventRef from that version of the NSEvent produces the bad key char and uni char. This is getting more mysterious.

A little architectural background first: normally, when a keyboard event first arrives in the HIToolbox event queue from the window server, the initial contents are just as you saw - a keycode and key modifiers, but no unicode values. The unicode text doesn’t get added until later when the key event is put into the event queue and the Text Services Manager takes a look at it and processes the key event through the active input method.

In this case, if the NSEvent needs to cons up an EventRef from its own data, it probably just creates a kEventRawKeyDown with keycode but nothing else. No unicode text is added because the event isn’t seen by TSM.

-eric


_______________________________________________

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


  • Follow-Ups:
    • Re: Key event data not available in eventRef
      • From: "Mills, Steve" <email@hidden>
References: 
 >Key event data not available in eventRef (From: "Mills, Steve" <email@hidden>)
 >Re: Key event data not available in eventRef (From: "Mills, Steve" <email@hidden>)

  • Prev by Date: Re: Key event data not available in eventRef
  • Next by Date: Re: Key event data not available in eventRef
  • Previous by thread: Re: Key event data not available in eventRef
  • Next by thread: Re: Key event data not available in eventRef
  • Index(es):
    • Date
    • Thread