Handling keypresses in Morphic.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Handling keypresses in Morphic.

Blake-5
Hey, gang:

        I'm trying to figure out the best way to--well, this is probably  
blasphemy but--use Squeak as I would a more traditional development  
environment. To wit: Normally, when coding, I code, compile if necessary,  
then run. At that point, my development environment fades and I can focus  
on the results.

        In this situation, I'm writing morphic objects and I want to be able to  
control these through the keyboard. I think I need to use  
#handlesKeyboard, #keyDown, etc., but have found that not to work. And  
rather annoyingly, since I'm running things from the transcript, what  
usually happens is I wipe out my transcript code by typing without  
realizing it's still focussed.

        But then I thought, well, focus floats with the mouse anyway, so I  
probably don't want to design it so that the individual morphics respond  
to keystrokes (think "game" rather than "businss app"). Better to capture  
the keystrokes and convert them into commands that get sent to the various  
objects.

        So I create a morph that acts as a command center, and in the initialize  
I do this:

ActiveHand addKeyboardListener: self; keyboardFocus: self.

which makes it so that the command morph gets the keyboard commands and is  
set to have the focus. This initially caused some trouble since I  
apparently also needed to implement handleListenEvent. Because I didn't I  
got into a pickle where I couldn't use Squeak for all the DNUs that were  
popping up. This fixed it:

handleListenEvent: evt

That's the whole thing. I'm not sure why I need to handle the generic when  
I'm only interested in the key events.

        Now I want to handle events, starting with cursor keys. When I look at  
the up key in the debugger, it looks, rather pleasingly like this:

[keyDown '<up>']

but obviously I can't test for that:

(evt = [keyDown '<up>']) ifTrue: ...

Actually, that wasn't obvious. I tried it and it didn't work. So, do I  
have to test for the key code?

        Thanks for any thoughts!

        ===Blake===

_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Handling keypresses in Morphic.

Blake-5
As a partial answer/continuation of my own question:

        It seems that, in the past, cursor and function keys had to be mapped by  
each user according to OS-specific standards. If that's still the case,  
perhaps we can write a class to do this translation and return universal  
codes?

        I can handle the Windows side, if someone else can take Unix and Mac, etc.

        If it's still necessary, that is.

        ===Blake===
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners