Si no les molesta, me gustaría hacer una sugerencia:
No prueben por document.all, existe en Opera por "compatibilidad", pero no existe en Firefox ni en ningún navegador basado en WebKit. Es decir, "!document.all" se cumple para Firefox y los webkit, como mínimo. Recuerden que la web no es solamente IE y Firefox.
El tema de la detección de caracteres es muy complejo, fíjense en estos artículo de quirksmode, sobretodo en el tercero que es específico del tema:
http://www.quirksmode.org/js/introevents.html http://www.quirksmode.org/dom/events/index.html http://www.quirksmode.org/js/keys.html
Saludos.