Hi Glen, I tried your code (somewhat modified, see below, to get the desired traces) but it gives me the same result. E.g. if I hit (right) Alt-5 it traces:
onKeyDown: _ctrlKeyDown=true, _altKeyDown=false, keyCode=17 onKeyDown: _ctrlKeyDown=true, _altKeyDown=true, keyCode=18 onKeyDown: _ctrlKeyDown=true, _altKeyDown=true, keyCode=53 onKeyUp: _ctrlKeyDown=true, _altKeyDown=true, keyCode=53 onKeyUp: _ctrlKeyDown=true, _altKeyDown=false, keyCode=18 Notice that the KEY_DOWN event fires twice for the right alt key! If I just press and release the right alt key it traces: onKeyDown: _ctrlKeyDown=true, _altKeyDown=false, keyCode=17 onKeyDown: _ctrlKeyDown=true, _altKeyDown=true, keyCode=18 onKeyUp: _ctrlKeyDown=true, _altKeyDown=false, keyCode=18 So the first trace shows a phantom control key press ... This lead me to the following work-around (Flash Pro script): import flash.events.KeyboardEvent; import flash.ui.Keyboard; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownOrUpHandler); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyDownOrUpHandler); var _ctrlKeyDown:Boolean; var _altKeyDown:Boolean; function onKeyDownOrUpHandler(e:KeyboardEvent):void { if (e.keyCode==17 || e.keyCode==18) // then always test both Ctrl and Alt to work around possible bug: { _ctrlKeyDown = e.keyCode == Keyboard.CONTROL; _altKeyDown = e.keyCode == Keyboard.ALTERNATE; } trace(e.type + ": _ctrlKeyDown=" + _ctrlKeyDown + ", _altKeyDown=" + _altKeyDown + ", character: " + String.fromCharCode(e.charCode)); } So the trick is to flag both ctrlKeyIsDown and _altKeyIsDown every time. This will override the phantom event. It would be great if you and/or anybody else could confirm the initial bogus key down event for the right alt key on press. I tested this so far on two systems with MS Vista and tested with various debug 10 and 10.1 players, stand alone and in browser. In all cases I got the bogus control event when pressing alt. If this is a bug I will log it to Adobe's bug base with the discovered work-around. Thanks! - Benny By the way this is how I modified your code to get the traces I want (in Flash Pro): import flash.events.KeyboardEvent; const CTRL_KEYCODE:int = 17; const ALT_KEYCODE:int = 18; var _ctrlKeyDown:Boolean = false; var _altKeyDown:Boolean = false; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler); function onKeyDownHandler(e:KeyboardEvent):void { switch(e.keyCode) { case CTRL_KEYCODE: _ctrlKeyDown = true; break; case ALT_KEYCODE: _altKeyDown = true; break; } trace("onKeyDown: _ctrlKeyDown=" + _ctrlKeyDown + ", _altKeyDown=" + _altKeyDown + ", keyCode="+e.keyCode); } function onKeyUpHandler(e:KeyboardEvent):void { switch(e.keyCode) { case CTRL_KEYCODE: _ctrlKeyDown = false; break; //your choice if you put break after return case ALT_KEYCODE: _altKeyDown = false; break; } trace("onKeyUp: _ctrlKeyDown=" + _ctrlKeyDown + ", _altKeyDown=" + _altKeyDown + ", keyCode="+e.keyCode); } -----Oorspronkelijk bericht----- Van: flashcoders-boun...@chattyfig.figleaf.com [mailto:flashcoders-boun...@chattyfig.figleaf.com] Namens Glen Pike Verzonden: dinsdag 16 november 2010 1:08 Aan: Flash Coders List Onderwerp: Re: [Flashcoders] How to detect for modifier (alt/ctrl) keys Yes, but if you don't use keyEvent.ctrlKey in your event handler, but check for CTRL and set a flag: e.g. public static const CTRL_KEYCODE:int = 17; private var _ctrlKeyDown:Boolean = false; //etc function onKeyDownHandler(e:KeyboardEvent):void { switch(e.keyCode) { case CTRL_KEYCODE: _ctrlKeyDown = true; return; break; //your choice if you put break after return //case ALT_KEYCODE: // _altKeyDown = true; // return; // break; default: break; } trace("onKeyDown: ctrlKeyDown=" + _ctrlKeyDown); } function onKeyUpHandler(e:KeyboardEvent):void { switch(e.keyCode) { case CTRL_KEYCODE: _ctrlKeyDown = false; return; break; //your choice if you put break after return //case ALT_KEYCODE: // _altKeyDown = false; / return; // break; default: break; } trace("onKeyUp: e.ctrlKey=" + e.ctrlKey + ", e.altKey=" + e.altKey); } _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders