faqts : Computers : Programming : Languages : JavaScript : Event handling

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

59 of 72 people (82%) answered Yes
Recently 8 of 10 people (80%) answered Yes

Entry

How can I set up hotkeys using 'control' keys? eg: CTRL+SHIFT+M

Apr 29th, 2001 15:59
Colin Fraser, Murray Webber, comp.lang.javascript


I got this answer from a newsgroup ages ago, it works well, all you need 
do is modify it to suit your particular need. 
The two issues I suspect that cause the most problems are how can you 
alert the user that that different hotkeys are available to them and how 
can you safely ignore the existing browser hotkeys. Also It would be 
nice to be able capture function keys, not just the modifier keys. 
 <HTML>
 <HEAD>
 <SCRIPT LANGUAGE="JavaScript1.2"><!--
 function netscapeKeyPress(e) {
     if (e.modifiers == 2) {
         // a - Select all
         // b - Edit bookmarks
         // c - Copy
         // d - Add bookmark
         if (e.which == 5 ) alert('Ctrl and e pressed'); 
         // f - Find in page
         // g - Find Again
         // h - Open History
         // i - Page Info
         if (e.which == 10) alert('Ctrl and j pressed');
         if (e.which == 11) alert('Ctrl and k pressed');
         if (e.which == 12) alert('Ctrl and l pressed');
         // m - New Message
         // n - New Navigator Window
         // o - Open Page
         // p - Print
         // q - Exit
         // r - Reload
         // s - Save As
         if (e.which == 20) alert('Ctrl and t pressed');
         // u - Page source
         // v - Paste
         // w - Close
         // x - Cut
         if (e.which == 25) alert('Ctrl and y pressed'); 
         // ?
     }
     else if (e.modifiers == 4) {
         if (e.which == 65) alert('Shift and A pressed');
         if (e.which == 66) alert('Shift and B pressed');
         if (e.which == 67) alert('Shift and C pressed');
         if (e.which == 68) alert('Shift and D pressed');
         if (e.which == 69) alert('Shift and E pressed');
         if (e.which == 70) alert('Shift and F pressed');
         if (e.which == 71) alert('Shift and G pressed');
         if (e.which == 72) alert('Shift and H pressed');
         if (e.which == 73) alert('Shift and I pressed');
         if (e.which == 74) alert('Shift and J pressed');
         if (e.which == 75) alert('Shift and K pressed');
         if (e.which == 76) alert('Shift and L pressed');
         if (e.which == 77) alert('Shift and M pressed');
         if (e.which == 78) alert('Shift and N pressed');
         if (e.which == 79) alert('Shift and O pressed');
         if (e.which == 80) alert('Shift and P pressed');
         if (e.which == 81) alert('Shift and Q pressed');
         if (e.which == 82) alert('Shift and R pressed');
         if (e.which == 83) alert('Shift and S pressed');
         if (e.which == 84) alert('Shift and T pressed');
         if (e.which == 85) alert('Shift and U pressed');
         if (e.which == 86) alert('Shift and V pressed');
         if (e.which == 87) alert('Shift and W pressed');
         if (e.which == 88) alert('Shift and X pressed');
         if (e.which == 89) alert('Shift and Y pressed');
         if (e.which == 90) alert('Shift and Z pressed');
     }
 }
 function microsoftKeyPress() {
     if (window.event.ctrlKey) {
         // a - Select All
         // b -Organise Favourites
         // c - Copy
         // d -Add to Favourites
         if (window.event.keyCode == 5 ) alert('Ctrl and e pressed');
         // f -Find (on this page)
         if (window.event.keyCode == 7 ) alert('Ctrl and g pressed');
         if (window.event.keyCode == 8 ) alert('Ctrl and h pressed');
         if (window.event.keyCode == 9 ) alert('Ctrl and i pressed');
         if (window.event.keyCode == 10) alert('Ctrl and j pressed');
         if (window.event.keyCode == 11) alert('Ctrl and k pressed');
         // l - Open
         if (window.event.keyCode == 13) alert('Ctrl and m pressed');
         // n - New Window
         // o - Open
         // p - Print
         if (window.event.keyCode == 17) alert('Ctrl and q pressed'); 
         // r - Reload
         // s - Save
         if (window.event.keyCode == 20) alert('Ctrl and t pressed');
         if (window.event.keyCode == 21) alert('Ctrl and u pressed');
         // v - Paste
         // w - Close
         // x -Cut
         if (window.event.keyCode == 25) alert('Ctrl and y pressed');
         if (window.event.keyCode == 26) alert('Ctrl and z pressed');
     }
     else if (window.event.shiftKey) {
         if (window.event.keyCode == 65) alert('Shift and A pressed');
         if (window.event.keyCode == 66) alert('Shift and B pressed');
         if (window.event.keyCode == 67) alert('Shift and C pressed');
         if (window.event.keyCode == 68) alert('Shift and D pressed');
         if (window.event.keyCode == 69) alert('Shift and E pressed');
         if (window.event.keyCode == 70) alert('Shift and F pressed');
         if (window.event.keyCode == 71) alert('Shift and G pressed');
         if (window.event.keyCode == 72) alert('Shift and H pressed');
         if (window.event.keyCode == 73) alert('Shift and I pressed');
         if (window.event.keyCode == 74) alert('Shift and J pressed');
         if (window.event.keyCode == 75) alert('Shift and K pressed');
         if (window.event.keyCode == 76) alert('Shift and L pressed');
         if (window.event.keyCode == 77) alert('Shift and M pressed');
         if (window.event.keyCode == 78) alert('Shift and N pressed');
         if (window.event.keyCode == 79) alert('Shift and O pressed');
         if (window.event.keyCode == 80) alert('Shift and P pressed');
         if (window.event.keyCode == 81) alert('Shift and Q pressed');
         if (window.event.keyCode == 82) alert('Shift and R pressed');
         if (window.event.keyCode == 83) alert('Shift and S pressed');
         if (window.event.keyCode == 84) alert('Shift and T pressed');
         if (window.event.keyCode == 85) alert('Shift and U pressed');
         if (window.event.keyCode == 86) alert('Shift and V pressed');
         if (window.event.keyCode == 87) alert('Shift and W pressed');
         if (window.event.keyCode == 88) alert('Shift and X pressed');
         if (window.event.keyCode == 89) alert('Shift and Y pressed');
         if (window.event.keyCode == 90) alert('Shift and Z pressed');
     }
 }
 if (navigator.appName == 'Netscape') {
     window.captureEvents(Event.KEYPRESS);
     window.onKeyPress = netscapeKeyPress;
 }
 //--></SCRIPT>
 </HEAD>
 <BODY onKeyPress="microsoftKeyPress()">
<h2>Key Pressing</h2>
Use some shift and control keys. 
 </BODY>
 </HTML>