Multiple Key detection issue

Hi,
New here, have a little problem

I’m using Michael Avila’s muti key detection class

 /* Created to allow us to listen for key combinations.
*
* @author Michael Avila
* @version 1.0
*/
class KeyDetection
{
 // a list of all the key codes that have been pressed
 private var keys_pressed : Array;
 // a multi-dimensional list of all of our key combinations
 private var key_combinations : Array;
 // objects listening to this detection
 private var listeners : Array;
 /* Constructor */
 public function KeyDetection ()
 {
  keys_pressed = new Array ();
  key_combinations = new Array ();
  listeners = new Array ();
  // allow this object to listen for events from the key object
  Key.addListener (this);
 }
 /* Registers an object to listen for events from the KeyDetection class
 *
 * @param The object that will listen for the events
 */
 public function addListener (listener : Object) : Void
 {
  for (var i : Number = 0; i < listeners.length; i ++)
  {
   if (listeners * == listener) return;
  }
  listeners.push (listener);
 }
 /* Unregisters an object that is listening for events from the KeyDetection class
 *
 * @param The object you wish to remove from the listeners list
 */
 public function removeListener (listener : Object) : Void
 {
  for (var i : Number = 0; i < listeners.length; i ++)
  {
   if (listeners * == listener) listeners.splice (i, 1);
  }
 }
 /* Adds a key combination to listen for
 *
 * @param The name you are giving this combination.  Note that this is how you will identify which combination
 *     has been pressed.
 * ...
 * @param The key codes that are part of this combination.  Note that they will need to be pressed in the order
 *     that you list them in order for the combination to fire successfully.
 *
 * @usage <pre>var key_detector = new KeyDetection();
 *       key_detector.addCombination("undo", Key.CONTROL, 90);
 * </pre>
 *
 */
 public function addCombination (name : String, keyCode1 : Number, keyCode2 : Number) : Void
 {
  key_combinations.push (arguments);
 }
 
 
 // invokes the onKeyCombination event on all listeners
 private function invokeOnKeyCombination (combo_name : String ) : Void
 {
  for (var i : Number = 0; i < listeners.length; i ++)
  {
   listeners *.onKeyCombination (combo_name);
  }
 }
 private function onKeyDown ()
 {
  var key : Number = Key.getCode ();
  cleanKeysPressed ();
  if (key != keys_pressed [keys_pressed.length - 1])
  {
   keys_pressed.push (key);
  }
  checkCombinations ();
 }
 private function checkCombinations ()
 {
  for (var j : Number = 0; j < key_combinations.length; j ++)
  {
   for (var i : Number = 0; i < keys_pressed.length; i ++)
   {
    if (keys_pressed * == key_combinations [j][i + 1])
    {
     if (i == key_combinations [j].length - 2)
     {
      invokeOnKeyCombination (key_combinations [j][0]);
      return;
     }
    } else
    {
     break;
    }
   }
  }
 }
 private function cleanKeysPressed ()
 {
  for (var i : Number = 0; i < keys_pressed.length; i ++)
  {
   if ( ! Key.isDown (keys_pressed *))
   {
    keys_pressed.splice (i, (keys_pressed.length - i));
   }
  }
 }
}

in my movie I am trying to detect a sequential key press from “k” to “d”
and then a sound plays.

var combo_kd:KeyDetection = new KeyDetection();
combo_kd.addCombination("k_d",75,68);
var listener_obj:Object = new Object();
var someListener = new Object();
listener_obj.onKeyCombination = function()
{
 mcroar.gotoAndPlay(2);
};
combo_kd.addListener(listener_obj);

The issue I need help with is that it keeps tracing
as “k” and “d” is held down
whereas I would like it to trace once and then
trigger again after “k” and “d” are pressed again.

Thanks for the help!