You are here: irt.org | FAQ | JavaScript | Misc | Q233 [ previous next ]
I've been able to trap Ctrl+[letter], although some combinations are reserved for the browsers. The first free letter in both Netscape Navigator 4 and Internet Explorer 4 is 'E':
<head>
<script language="JavaScript1.2"><!--
function netscapeKeyPress(e) {
var prefix = '';
if (e.modifiers & Event.CONTROL_MASK) prefix = 'c';
if (e.modifiers & Event.ALT_MASK) prefix += 'a'; // does not work !
if (e.modifiers & Event.SHIFT_MASK) prefix += 's';
document.test.output.value += prefix + e.which + ' ';
if (prefix + e.which == 'c5')
alert('Ctrl and E pressed');
}
function microsoftKeyPress() {
var prefix = '';
if (window.event.shiftKey) prefix = 's';
if (window.event.ctrlKey) prefix += 'c';
if (window.event.altKey) prefix += 'a';
document.test.output.value += prefix + window.event.keyCode + ' ';
if (prefix + window.event.keyCode == 'c5')
alert('Ctrl and E pressed');
}
if (navigator.appName == 'Netscape') {
window.captureEvents(Event.KEYPRESS);
window.onKeyPress = netscapeKeyPress;
}
//--></script>
</head>
<body onKeyPress="microsoftKeyPress()">
<form name="test"><textarea name="output" cols="40" rows="20" wrap="virtual"></textarea>
<script language="JavaScript"><!--
document.test.output.value = '';
//--></script>
</body>The netscapeKeyPress() function was amended after a useful suggestion from Martin Honnen.