<div dir="ltr"><div dir="ltr">On Thu, Aug 1, 2024 at 4:23 PM <<a href="mailto:ken.dickey@whidbey.com" target="_blank">ken.dickey@whidbey.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">On 2024-08-01 13:44, Mark Volkmann via Cuis-dev wrote:<br>
<br>
> I'm able to get mouse events in a custom morph, but I haven't been able <br>
> to do the same for keyboard events. Here is what I tried:<br>
> <br>
> I created a subclass of PlacedMorph.<br>
> <br>
> In the initialize method I have this:<br>
> <br>
> initialize<br>
> super initialize.<br>
> self setProperty: #handlesKeyboard toValue: true.<br>
> <br>
> In the keyDown: method I have this:<br>
> <br>
> keyDown: aKeyboardEvent<br>
> 'got keyDown' print.<br>
> <br>
> I create an instance of my custom morph in a Workspace and send it <br>
> #openInWorld to render it.<br>
> I then move the mouse over it and press a key, but I don't see output <br>
> in the Transcript.<br>
> Does anyone see what I'm missing?<br>
<br>
Yes.  You are forgetting to ask for #handlesKeyboard iMplementors.<br>
<br>
Morph>>processKeystroke: shows you need to supply a handler to <br>
#'keyStroke:'<br></blockquote><div><br></div><div>The main thing I was missing was to get keyboard focus on mouse enter. I needed to add the following instance methods:</div><div><br></div><div><font face="monospace">handlesMouseOver: aMouseEvent<br>    ^ true.<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">mouseEnter: event<br>    (Preferences at: #focusFollowsMouse) ifTrue: [ event hand newKeyboardFocus: self ].<br></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">mouseLeave: event<br>    (Preferences at: #focusFollowsMouse) ifTrue: [ event hand releaseKeyboardFocus: self ].</font><br></div><div><br></div></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div><font face="arial, helvetica, sans-serif">R. Mark Volkmann</font></div><div><span style="font-size:12.8px"><font face="arial, helvetica, sans-serif">Object Computing, Inc.</font></span></div></div></div></div></div></div></div></div></div>