Avec les propriétés événementielles de l'AS3, cela ne semble pas poser de souci technique. Voici le morceau de code que j'utilise avec l'événement MouseEvent.CLICK :

protected function onClick(evt:MouseEvent):void
{
	if (evt.ctrlKey)
	{
		trace("Control is activated");
	}
}

Et il s'avère que justement ça ne fonctionne pas aussi bien avec le FPL :(

Pour exemple, voici une petite démonstration qui permet d'illustrer le problème. Pour le constater, il suffit de cliquer une fois dedans le carré gris, puis de maintenir la touche control enfoncée et de re-cliquer plusieurs fois.

KeyTester

Il arrive assez régulièrement que la valeur KeyboardEvent.ctrlKey soit false alors que la touche est bien active... Et c'est la même chose pour la touche shift !

D'après mes tests, ce bug n'apparait que sous le Flash Player Linux (standalone et navigateur). Sous Windows, lorsque l'on appuye sur la touche control, l'événement KeyboardEvent.KEY_DOWN est bien envoyé à intervalle régulier alors qu'il ne l'est qu'une fois sour linux...

Concernant la touche alt, c'est encore plus drôle : plus aucun événement n'est envoyé. Cela doit probablement être du à un problème de focus sur l'application flash à moins que ce ne soit un autre souci du Flash Player lui-même.

Encore une dernière remarque à propos des constantes représentant la valeur des touches : on trouve bien Keyboard.CONTROL et Keyboard.SHIFT par contre la constante Keyboard.ALTERNATE n'est disponible que pour AIR. Toutefois les événements KeyboardEvent.KEY_DOWN et KeyboardEvent.KEY_UP de alt sont bien reçus par les applis flash. Quelqu'un voit-il une explication logique ?

J'ai mis en annexe le code de la petite démonstration ci-dessus pour ceux qui aimeraient approfondir !