function eventsInit()
{
    if (document.addEventListener)
    {
       document.addEventListener("keydown",keydown,false);
       document.addEventListener("keypress",keypress,false);
       document.addEventListener("keyup",keyup,false);
       document.addEventListener("textinput",textinput,false);
    }
    else if (document.attachEvent)
    {
       document.attachEvent("onkeydown", keydown);
       document.attachEvent("onkeypress", keypress);
       document.attachEvent("onkeyup", keyup);
       document.attachEvent("ontextinput", textinput);
    }
    else
    {
       document.onkeydown= keydown;
       document.onkeypress= keypress;
       document.onkeyup= keyup;
       document.ontextinput= textinput;
    }

}

function keyinfo(n)
{
    if (n == null) return 'undefined';
    var s= '' + n;
    if (n >= 32 && n < 127) s+= ' (' + String.fromCharCode(n) + ')';
    while (s.length < 9) s+= ' ';
    return s;
}

function keychar(n)
{
   if (n == null) return 'undefined';
   return String.fromCharCode(n);
}

function alertkeyevent(message,e)
{
   alert(message + '  keyCode=' + keyinfo(e.keyCode) +
                 ' which=' + keyinfo(e.which) +
                 ' charCode=' + keyinfo(e.charCode) +
                 ' keyIdentifier='+ e.keyIdentifier);
}

var typedKeys = "";

function keydown(e)
{
   if (!e) e= event;
   if (e.keyCode==8)
   {
      typedKeys="";
   }
   var keyChar=keychar(e.keyCode);
   typedKeys += keyChar;


   if (typedKeys=="MEMORY" || typedKeys=="memory")
   {
      activateMyrome();
   }
   //alertkeyevent("keydown", e)
   return true;
}

function keyup(e)
{
/*
   if (!e) e= event;
   alertkeyevent('keyup   ',e);
*/
   return true;
}

function keypress(e)
{
/*
   if (!e) e= event;
   alertkeyevent('keypress',e);
*/
   return true;
}

function textinput(e)
{
   if (!e) e= event;
   emesg('textinput',e);
   return true;
}
