diff options
author | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-06-09 12:21:01 +0200 |
---|---|---|
committer | Hakim El Hattab <hakim.elhattab@gmail.com> | 2014-06-09 12:21:01 +0200 |
commit | d539c645c30ea38b7958c2fcb5e6397c1b183903 (patch) | |
tree | cc9cd64da8451d05db6c373a5a5e1ceb0177139f /js/reveal.js | |
parent | 65dcd94c864a72be93db011f20d747e9826f36c9 (diff) | |
parent | 594d9f6d85f6b1c6a953a64892cd2236529f0398 (diff) | |
download | perl-software-in-gnu-guix-d539c645c30ea38b7958c2fcb5e6397c1b183903.tar perl-software-in-gnu-guix-d539c645c30ea38b7958c2fcb5e6397c1b183903.tar.gz |
Merge branch 'keyboard_shortcuts_overlay' of https://github.com/navateja/reveal.js into dev
Diffstat (limited to 'js/reveal.js')
-rw-r--r-- | js/reveal.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/js/reveal.js b/js/reveal.js index cbfa859..a4d5f02 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -196,6 +196,20 @@ startCount: 0, captured: false, threshold: 40 + }, + + // Holds information about the keyboard shortcuts + keyboard_shortcuts = { + 'p': 'Previous slide', + 'n': 'Next slide', + 'h': 'Navigate left', + 'l': 'Navigate right', + 'k': 'Navigate up', + 'j': 'Navigate down', + 'Home': 'First slide', + 'End': 'Last slide', + 'b': 'Pause', + 'f': 'Fullscreen' }; /** @@ -863,6 +877,7 @@ if( config.keyboard ) { document.addEventListener( 'keydown', onDocumentKeyDown, false ); + document.addEventListener( 'keypress', onDocumentKeyPress, false ); } if( config.progress && dom.progress ) { @@ -906,6 +921,7 @@ eventsAreBound = false; document.removeEventListener( 'keydown', onDocumentKeyDown, false ); + document.removeEventListener( 'keypress', onDocumentKeyPress, false ); window.removeEventListener( 'hashchange', onWindowHashChange, false ); window.removeEventListener( 'resize', onWindowResize, false ); @@ -1269,6 +1285,44 @@ } /** + * Opens a overlay window for the keyboard shortcuts. + */ + function openShortcutsOverlay() { + + closePreview(); + + dom.preview = document.createElement( 'div' ); + dom.preview.classList.add( 'preview-link-overlay' ); + dom.wrapper.appendChild( dom.preview ); + + var html = '<h5>Keyboard Shortcuts</h5><br/>'; + html += '<table> <th>KEY</th> <th>ACTION</th>'; + for( var key in keyboard_shortcuts ) { + html += '<tr> <td>' + key + '</td> <td>' + keyboard_shortcuts[key] + '</td> </tr>' + } + html += '</table>'; + + dom.preview.innerHTML = [ + '<header>', + '<a class="close" href="#"><span class="icon"></span></a>', + '</header>', + '<div class="viewport">', + '<div class="shortcuts">'+html+'</div>', + '</div>' + ].join(''); + + dom.preview.querySelector( '.close' ).addEventListener( 'click', function( event ) { + closePreview(); + event.preventDefault(); + }, false ); + + setTimeout( function() { + dom.preview.classList.add( 'visible' ); + }, 1 ); + + } + + /** * Applies JavaScript-controlled layout rules to the * presentation. */ @@ -3233,6 +3287,17 @@ } /** + * Handler for the document level 'keypress' event. + */ + + function onDocumentKeyPress( event ) { + // Check if the pressed key is question mark + if( event.shiftKey && event.charCode == 63 ) { + openShortcutsOverlay(); + } + } + + /** * Handler for the document level 'keydown' event. */ function onDocumentKeyDown( event ) { |