aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHakim El Hattab <hakim.elhattab@gmail.com>2019-01-22 15:43:31 +0100
committerHakim El Hattab <hakim.elhattab@gmail.com>2019-01-22 15:43:42 +0100
commit4c3f778e6e39c885e1197c9970e098bdbc643398 (patch)
treebd381a0ddb8bb3bf655c49589c9bf3a23380e68d
parentfef15ea9d13d27225967d19944e0e3f9e45f9723 (diff)
downloadperl-software-in-gnu-guix-4c3f778e6e39c885e1197c9970e098bdbc643398.tar
perl-software-in-gnu-guix-4c3f778e6e39c885e1197c9970e098bdbc643398.tar.gz
refactor keyboard listener conditions
-rw-r--r--js/reveal.js130
1 files changed, 95 insertions, 35 deletions
diff --git a/js/reveal.js b/js/reveal.js
index 07a86e5..5743646 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -4909,6 +4909,9 @@
return true;
}
+ // Shorthand
+ var keyCode = event.keyCode;
+
// Remember if auto-sliding was paused so we can toggle it
var autoSlideWasPaused = autoSlidePaused;
@@ -4921,8 +4924,8 @@
// 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;
+ var firstSlideShortcut = ( event.metaKey || event.ctrlKey ) && keyCode === 37;
+ var lastSlideShortcut = ( event.metaKey || event.ctrlKey ) && keyCode === 39;
// Prevent all other events when a modifier is pressed
var unusedModifier = !prevSlideShortcut && !firstSlideShortcut && !lastSlideShortcut &&
@@ -4945,7 +4948,7 @@
}
}
- if( isPaused() && resumeKeyCodes.indexOf( event.keyCode ) === -1 ) {
+ if( isPaused() && resumeKeyCodes.indexOf( keyCode ) === -1 ) {
return false;
}
@@ -4957,7 +4960,7 @@
for( key in config.keyboard ) {
// Check if this binding matches the pressed key
- if( parseInt( key, 10 ) === event.keyCode ) {
+ if( parseInt( key, 10 ) === keyCode ) {
var value = config.keyboard[ key ];
@@ -4984,7 +4987,7 @@
for( key in registeredKeyBindings ) {
// Check if this binding matches the pressed key
- if( parseInt( key, 10 ) === event.keyCode ) {
+ if( parseInt( key, 10 ) === keyCode ) {
var action = registeredKeyBindings[ key ].callback;
@@ -5008,35 +5011,92 @@
// Assume true and try to prove false
triggered = true;
- switch( event.keyCode ) {
- // p, page up
- case 80: case 33: navigatePrev(); break;
- // n, page down
- case 78: case 34: navigateNext(); break;
- // h, left
- case 72: case 37: firstSlideShortcut ? slide( 0 ) : isOverview() || !config.simpleNavigation ? navigateLeft() : navigatePrev(); break;
- // l, right
- case 76: case 39: lastSlideShortcut ? slide( Number.MAX_VALUE ) : isOverview() || !config.simpleNavigation ? navigateRight() : navigateNext(); break;
- // k, up
- case 75: case 38: isOverview() || !config.simpleNavigation ? navigateUp() : navigatePrev(); break;
- // j, down
- case 74: case 40: isOverview() || !config.simpleNavigation ? navigateDown() : navigateNext(); break;
- // home
- case 36: slide( 0 ); break;
- // end
- case 35: slide( Number.MAX_VALUE ); break;
- // space
- case 32: isOverview() ? deactivateOverview() : event.shiftKey ? navigatePrev() : navigateNext(); break;
- // return
- case 13: isOverview() ? deactivateOverview() : triggered = false; break;
- // two-spot, semicolon, b, v, period, Logitech presenter tools "black screen" button
- case 58: case 59: case 66: case 86: case 190: case 191: togglePause(); break;
- // f
- case 70: enterFullscreen(); break;
- // a
- case 65: if ( config.autoSlideStoppable ) toggleAutoSlide( autoSlideWasPaused ); break;
- default:
- triggered = false;
+ // P, PAGE UP
+ if( keyCode === 80 || keyCode === 33 ) {
+ navigatePrev();
+ }
+ // N, PAGE DOWN
+ else if( keyCode === 78 || keyCode === 34 ) {
+ navigateNext();
+ }
+ // H, LEFT
+ else if( keyCode === 72 || keyCode === 37 ) {
+ if( firstSlideShortcut ) {
+ slide( 0 );
+ }
+ else if( !isOverview() && config.simpleNavigation ) {
+ navigatePrev();
+ }
+ else {
+ navigateLeft();
+ }
+ }
+ // L, RIGHT
+ else if( keyCode === 76 || keyCode === 39 ) {
+ if( lastSlideShortcut ) {
+ slide( Number.MAX_VALUE );
+ }
+ else if( !isOverview() && config.simpleNavigation ) {
+ navigateNext();
+ }
+ else {
+ navigateRight();
+ }
+ }
+ // K, UP
+ else if( keyCode === 75 || keyCode === 38 ) {
+ if( !isOverview() && config.simpleNavigation ) {
+ navigatePrev();
+ }
+ else {
+ navigateUp()
+ }
+ }
+ // J, DOWN
+ else if( keyCode === 74 || keyCode === 40 ) {
+ if( !isOverview() && config.simpleNavigation ) {
+ navigateNext()
+ }
+ else {
+ navigateDown()
+ }
+ }
+ // HOME
+ else if( keyCode === 36 ) {
+ slide( 0 );
+ }
+ // END
+ else if( keyCode === 35 ) {
+ slide( Number.MAX_VALUE );
+ }
+ // SPACE
+ else if( keyCode === 32 ) {
+ if( isOverview() ) {
+ deactivateOverview();
+ }
+ if( event.shiftKey ) {
+ navigatePrev();
+ }
+ else {
+ navigateNext();
+ }
+ }
+ // TWO-SPOT, SEMICOLON, B, V, PERIOD, LOGITECH PRESENTER TOOLS "BLACK SCREEN" BUTTON
+ else if( keyCode === 58 || keyCode === 59 || keyCode === 66 || keyCode === 86 || keyCode === 190 || keyCode === 191 ) {
+ togglePause();
+ }
+ // F
+ else if( keyCode === 70 ) {
+ enterFullscreen();
+ }
+ // A
+ else if( keyCode === 65 ) {
+ if ( config.autoSlideStoppable ) {
+ toggleAutoSlide( autoSlideWasPaused );
+ }
+ }
+ else {
+ triggered = false;
}
}
@@ -5047,7 +5107,7 @@
event.preventDefault && event.preventDefault();
}
// ESC or O key
- else if ( ( event.keyCode === 27 || event.keyCode === 79 ) && features.transforms3d ) {
+ else if ( ( keyCode === 27 || keyCode === 79 ) && features.transforms3d ) {
if( dom.overlay ) {
closeOverlay();
}