Assuming this is for a game, you would effectively prevent someone "hammering" on a key to do some action repeatedly. Also this depends on the actual repeat rate which varies widely between systems. In my example there is no such fixed timeout, you simply would check if the key is pressed already (i.e. it is in the keys set).

- Bert -

Am Mar 5, 2008 um 18:46 schrieb stan shepherd <[EMAIL PROTECTED]>:


Bert, Thanks for the reply and example.

To get around the repeat key issue, I'm testing the elapsed time since last
keystroke. If it's too short, assume it's repeat key from the OS:

   keyDelay :=    (anEvent timeStamp) - (lastEventTime at: noteNo) .
   lastEventTime at: noteNo put: anEvent timeStamp.
(keyDelay < 250) ifTrue: [ "Transcript show: 'key repeat ignored'; cr."
               ^self].    "assume it's a key repeat'"

...Stan

p.s. I'm sure there is a 'Squeakier' way to do this.


Bert Freudenberg wrote:

On Mar 4, 2008, at 19:19 , stan shepherd wrote:

handleKeyUp: anEvent
   Transcript show: ' evt is down ',anEvent isKeyDown asString; cr.
       "now press and hold a key"

shows

evt is down false

Which is of course expected since only keyUp events are passed into
#handleKeyUp:, so #isKeyDown always is false.

You need to handle both keyDown and keyUp events, and track the state
of pressed keys.

Note that the keyValue in up/down events is system-specific (unlike
keyStroke events which have actual characters).

Also note that this behavior also depends on your OS and VM version.
The Windows VM handles up/down events nicely for a long time, Mac VMs
since recently, Unix VMs are broken I think.

I'm attaching a small example morph demonstrating this.

- Bert -



_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners



--
View this message in context: 
http://www.nabble.com/Detecting-keyboard-state---finding-older-fixes-tp15779144p15855607.html
Sent from the Squeak - Beginners mailing list archive at Nabble.com.

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners
_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to