Merge branch 'plugin-key-bindings' of https://github.com/denehyg/reveal.js into dev
This commit is contained in:
		
							
								
								
									
										73
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -289,7 +289,10 @@ | ||||
| 			'B  ,  .':				'Pause', | ||||
| 			'F':					'Fullscreen', | ||||
| 			'ESC, O':				'Slide overview' | ||||
| 		}; | ||||
| 		}, | ||||
| 		 | ||||
| 		// Holds custom key code mappings | ||||
| 		registeredKeyBindings = {}; | ||||
|  | ||||
| 	/** | ||||
| 	 * Starts up the presentation if the client is capable. | ||||
| @@ -1261,6 +1264,33 @@ | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Add a custom key binding with optional description to be added to the help screen | ||||
| 	 */ | ||||
| 	function addKeyBinding(binding, callback) { | ||||
| 		if (typeof binding === 'object' && binding.keyCode) { | ||||
| 			registeredKeyBindings[binding.keyCode] = { | ||||
| 				callback: callback, | ||||
| 				key: binding.key, | ||||
| 				description: binding.description | ||||
| 			}; | ||||
| 		} | ||||
| 		else { | ||||
| 			registeredKeyBindings[binding] = { | ||||
| 				callback: callback, | ||||
| 				key: null, | ||||
| 				description: null | ||||
| 			}; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Removes the specified custom key binding | ||||
| 	 */ | ||||
| 	function removeKeyBinding(binding) { | ||||
| 		delete registeredKeyBindings[binding]; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Extend object a with the properties of object b. | ||||
| 	 * If there's a conflict, object b takes precedence. | ||||
| @@ -1748,6 +1778,13 @@ | ||||
| 				html += '<tr><td>' + key + '</td><td>' + keyboardShortcuts[ key ] + '</td></tr>'; | ||||
| 			} | ||||
|  | ||||
| 			// add custom key bindings that have associated descriptions | ||||
| 			for( var binding in registeredKeyBindings ) { | ||||
| 				if (registeredKeyBindings[binding].key && registeredKeyBindings[binding].description) { | ||||
| 					html += '<tr><td>' + registeredKeyBindings[binding].key + '</td><td>' + registeredKeyBindings[binding].description + '</td></tr>'; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			html += '</table>'; | ||||
|  | ||||
| 			dom.overlay.innerHTML = [ | ||||
| @@ -4397,7 +4434,7 @@ | ||||
|  | ||||
| 		// If there's a condition specified and it returns false, | ||||
| 		// ignore this event | ||||
| 		if( typeof config.keyboardCondition === 'function' && config.keyboardCondition() === false ) { | ||||
| 		if( typeof config.keyboardCondition === 'function' && config.keyboardCondition(event) === false ) { | ||||
| 			return true; | ||||
| 		} | ||||
|  | ||||
| @@ -4462,7 +4499,31 @@ | ||||
|  | ||||
| 		} | ||||
|  | ||||
| 		// 2. System defined key bindings | ||||
| 		// 2. Registered custom key bindings | ||||
| 		if( triggered === false ) { | ||||
|  | ||||
| 			for( key in registeredKeyBindings ) { | ||||
|  | ||||
| 				// Check if this binding matches the pressed key | ||||
| 				if( parseInt( key, 10 ) === event.keyCode ) { | ||||
|  | ||||
| 					var action = registeredKeyBindings[ key ].callback; | ||||
|  | ||||
| 					// Callback function | ||||
| 					if( typeof action === 'function' ) { | ||||
| 						action.apply( null, [ event ] ); | ||||
| 					} | ||||
| 					// String shortcuts to reveal.js API | ||||
| 					else if( typeof action === 'string' && typeof Reveal[ action ] === 'function' ) { | ||||
| 						Reveal[ action ].call(); | ||||
| 					} | ||||
|  | ||||
| 					triggered = true; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// 3. System defined key bindings | ||||
| 		if( triggered === false ) { | ||||
|  | ||||
| 			// Assume true and try to prove false | ||||
| @@ -5222,6 +5283,12 @@ | ||||
| 			} | ||||
| 		}, | ||||
|  | ||||
| 		// Adds a custom key binding | ||||
| 		addKeyBinding: addKeyBinding, | ||||
|  | ||||
| 		// Removes a custom key binding | ||||
| 		removeKeyBinding: removeKeyBinding, | ||||
|  | ||||
| 		// Programatically triggers a keyboard event | ||||
| 		triggerKey: function( keyCode ) { | ||||
| 			onDocumentKeyDown( { keyCode: keyCode } ); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user