add cmd/ctrl + arrow key shortcuts to first/last slides
This commit is contained in:
		
							
								
								
									
										22
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -324,8 +324,8 @@ | |||||||
| 			'→  ,  L':					'Navigate right', | 			'→  ,  L':					'Navigate right', | ||||||
| 			'↑  ,  K':					'Navigate up', | 			'↑  ,  K':					'Navigate up', | ||||||
| 			'↓  ,  J':					'Navigate down', | 			'↓  ,  J':					'Navigate down', | ||||||
| 			'Home':					'First slide', | 			'Home  ,  ⌘/CTRL ←':	'First slide', | ||||||
| 			'End':					'Last slide', | 			'End  ,  ⌘/CTRL →':		'Last slide', | ||||||
| 			'B  ,  .':							'Pause', | 			'B  ,  .':							'Pause', | ||||||
| 			'F':								'Fullscreen', | 			'F':								'Fullscreen', | ||||||
| 			'ESC, O':							'Slide overview' | 			'ESC, O':							'Slide overview' | ||||||
| @@ -4865,15 +4865,23 @@ | |||||||
|  |  | ||||||
| 		onUserInput( event ); | 		onUserInput( event ); | ||||||
|  |  | ||||||
| 		// Check if there's a focused element that could be using | 		// Is there a focused element that could be using the keyboard? | ||||||
| 		// the keyboard |  | ||||||
| 		var activeElementIsCE = document.activeElement && document.activeElement.contentEditable !== 'inherit'; | 		var activeElementIsCE = document.activeElement && document.activeElement.contentEditable !== 'inherit'; | ||||||
| 		var activeElementIsInput = document.activeElement && document.activeElement.tagName && /input|textarea/i.test( document.activeElement.tagName ); | 		var activeElementIsInput = document.activeElement && document.activeElement.tagName && /input|textarea/i.test( document.activeElement.tagName ); | ||||||
| 		var activeElementIsNotes = document.activeElement && document.activeElement.className && /speaker-notes/i.test( document.activeElement.className); | 		var activeElementIsNotes = document.activeElement && document.activeElement.className && /speaker-notes/i.test( document.activeElement.className); | ||||||
|  |  | ||||||
|  | 		// Whitelist specific modified + keycode combinations | ||||||
|  | 		var prevSlideShortcut = event.shiftKey && event.keyCode === 32; | ||||||
|  | 		var firstSlideShortcut = ( event.metaKey || event.ctrlKey ) && event.keyCode === 37; | ||||||
|  | 		var lastSlideShortcut = ( event.metaKey || event.ctrlKey ) && event.keyCode === 39; | ||||||
|  |  | ||||||
|  | 		// Prevent all other events when a modifier is pressed | ||||||
|  | 		var unusedModifier = 	!prevSlideShortcut && !firstSlideShortcut && !lastSlideShortcut && | ||||||
|  | 								( event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ); | ||||||
|  |  | ||||||
| 		// Disregard the event if there's a focused element or a | 		// Disregard the event if there's a focused element or a | ||||||
| 		// keyboard modifier key is present | 		// keyboard modifier key is present | ||||||
| 		if( activeElementIsCE || activeElementIsInput || activeElementIsNotes || (event.shiftKey && event.keyCode !== 32) || event.altKey || event.ctrlKey || event.metaKey ) return; | 		if( activeElementIsCE || activeElementIsInput || activeElementIsNotes || unusedModifier ) return; | ||||||
|  |  | ||||||
| 		// While paused only allow resume keyboard events; 'b', 'v', '.' | 		// While paused only allow resume keyboard events; 'b', 'v', '.' | ||||||
| 		var resumeKeyCodes = [66,86,190,191]; | 		var resumeKeyCodes = [66,86,190,191]; | ||||||
| @@ -4957,9 +4965,9 @@ | |||||||
| 				// n, page down | 				// n, page down | ||||||
| 				case 78: case 34: navigateNext(); break; | 				case 78: case 34: navigateNext(); break; | ||||||
| 				// h, left | 				// h, left | ||||||
| 				case 72: case 37: navigateLeft(); break; | 				case 72: case 37: firstSlideShortcut ? slide( 0 ) : navigateLeft(); break; | ||||||
| 				// l, right | 				// l, right | ||||||
| 				case 76: case 39: navigateRight(); break; | 				case 76: case 39: lastSlideShortcut ? slide( Number.MAX_VALUE ) : navigateRight(); break; | ||||||
| 				// k, up | 				// k, up | ||||||
| 				case 75: case 38: navigateUp(); break; | 				case 75: case 38: navigateUp(); break; | ||||||
| 				// j, down | 				// j, down | ||||||
|   | |||||||
| @@ -200,7 +200,7 @@ function Hilitor(id, tag) | |||||||
| 			toggleSearch(); | 			toggleSearch(); | ||||||
| 		} | 		} | ||||||
| 	}, false ); | 	}, false ); | ||||||
| 	if( window.Reveal ) Reveal.registerKeyboardShortcut( 'Ctrl-Shift-F', 'Search' ); | 	if( window.Reveal ) Reveal.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' ); | ||||||
| 	closeSearch(); | 	closeSearch(); | ||||||
| 	return { open: openSearch }; | 	return { open: openSearch }; | ||||||
| })(); | })(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user