Browse Source

enable reveal.js keyboard shortcuts anywhere in notes window

Hakim El Hattab 11 years ago
parent
commit
1e5ca748a4
2 changed files with 19 additions and 0 deletions
  1. 5 0
      js/reveal.js
  2. 14 0
      plugin/notes/notes.html

+ 5 - 0
js/reveal.js

@@ -3702,6 +3702,11 @@ var Reveal = (function(){
 			if( 'addEventListener' in window ) {
 				( dom.wrapper || document.querySelector( '.reveal' ) ).removeEventListener( type, listener, useCapture );
 			}
+		},
+
+		// Programatically triggers a keyboard event
+		triggerKey: function( keyCode ) {
+			onDocumentKeyDown( { keyCode: keyCode } );
 		}
 	};
 

+ 14 - 0
plugin/notes/notes.html

@@ -208,6 +208,7 @@
 						connected = true;
 
 						setupIframes( data );
+						setupKeyboard();
 						setupNotes();
 						setupTimer();
 					}
@@ -247,6 +248,19 @@
 				// Limit to max one state update per X ms
 				handleStateMessage = debounce( handleStateMessage, 200 );
 
+				/**
+				 * Forward keyboard events to the current slide window.
+				 * This enables keyboard events to work even if focus
+				 * isn't set on the current slide iframe.
+				 */
+				function setupKeyboard() {
+
+					document.addEventListener( 'keydown', function( event ) {
+						currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'triggerKey', args: [ event.keyCode ] }), '*' );
+					} );
+
+				}
+
 				/**
 				 * Creates the preview iframes.
 				 */