Skip to content

Commit bd7c28a

Browse files
Merge pull request #60 from theohbrothers/enhancement/gallery-disable-keyboard-shortcuts-on-ctrl-alt-or-shift
Enhancement (gallery): Disable keyboard shortcuts on `CTRL`, `ALT`, or `SHIFT`
2 parents afe3bd8 + fa2956c commit bd7c28a

File tree

1 file changed

+91
-10
lines changed

1 file changed

+91
-10
lines changed

webize

+91-10
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ EOF
372372
toggleSortMode();
373373
});
374374
375-
var keyHandler = function(event) {
375+
var keydownHandler = function(event) {
376376
var ele = event.target || event.srcElement;
377377
var keyCode = event.keyCode || event.charCode;
378378
@@ -392,12 +392,10 @@ EOF
392392
if (keyCode === 80) {
393393
togglePinHandler();
394394
}
395-
396-
// console.log(keyCode);
397395
};
398396
399397
return {
400-
keyHandler: keyHandler,
398+
keydownHandler: keydownHandler,
401399
get sortMode() {
402400
return sortModes[sortModeIndex];
403401
},
@@ -836,11 +834,10 @@ EOF
836834
setMode(mode, true);
837835
}
838836
839-
var keyHandler = function(event) {
837+
var keydownHandler = function(event) {
840838
var ele = event.target || event.srcElement;
841839
var keyCode = event.keyCode || event.charCode;
842840
var key = event.key;
843-
console.log('keyCode: ' + keyCode + ', key: ' + key);
844841
845842
// LEFT arrow key
846843
if (keyCode === 37) {
@@ -945,8 +942,10 @@ EOF
945942
946943
// console.log(keyCode);
947944
};
948-
949945
return {
946+
get keyEnabled() {
947+
return keyEnabled;
948+
},
950949
get mode() {
951950
return mode;
952951
},
@@ -965,14 +964,96 @@ EOF
965964
}
966965
},
967966
sort: sort,
968-
keyHandler: keyHandler
967+
keydownHandler: keydownHandler
969968
};
970969
})(imageObjects);
971970
971+
var keyController = (function() {
972+
var keyEnabled = true;
973+
var shiftKeyDown = false;
974+
var ctrlKeyDown = false;
975+
var altKeyDown = false;
976+
977+
var keydownHandler = function(event) {
978+
var ele = event.target || event.srcElement;
979+
var keyCode = event.keyCode || event.charCode;
980+
var key = event.key;
981+
console.log('[keydownHandler] keyCode: ' + keyCode + ', key: ' + key);
982+
983+
// Disable hotkeys when any of SHIFT, CTRL, ALT keys are pressed
984+
if (keyCode == 16) {
985+
shiftKeyDown = true;
986+
}
987+
if (keyCode == 17) {
988+
ctrlKeyDown = true;
989+
}
990+
if (keyCode == 18) {
991+
altKeyDown = true;
992+
}
993+
if (shiftKeyDown || ctrlKeyDown || altKeyDown) {
994+
console.log('[keydownHandler] Disabling hotkeys');
995+
keyEnabled = false;
996+
}
997+
998+
if (!keyEnabled) {
999+
return;
1000+
}
1001+
menu.keydownHandler(event);
1002+
gallery.keydownHandler(event);
1003+
}
1004+
1005+
var keyupHandler = function(event) {
1006+
var ele = event.target || event.srcElement;
1007+
var keyCode = event.keyCode || event.charCode;
1008+
var key = event.key;
1009+
console.log('[keyupHandler] keyCode: ' + keyCode + ', key: ' + key);
1010+
1011+
// Enable hotkeys only when SHIFT, CTRL, and ALT keys are not pressed
1012+
if (keyCode == 16) {
1013+
shiftKeyDown = false;
1014+
}
1015+
if (keyCode == 17) {
1016+
ctrlKeyDown = false;
1017+
}
1018+
if (keyCode == 18) {
1019+
altKeyDown = false;
1020+
}
1021+
// If pressing SHIFT+TAB, CTRL+TAB, ALT+TAB, consider keys as not pressed
1022+
// if (keyCode == 9) {
1023+
// console.log('[keydownHandler] TAB detected, considering all keys as not pressed');
1024+
// shiftKeyDown = false;
1025+
// ctrlKeyDown = false;
1026+
// altKeyDown = false;
1027+
// }
1028+
if (!shiftKeyDown && !ctrlKeyDown && !altKeyDown) {
1029+
console.log('[keydownHandler] Enabling hotkeys');
1030+
keyEnabled = true;
1031+
}
1032+
}
1033+
1034+
var visibilityChangeHandler = function(event) {
1035+
console.log('[visibilitychange] visbilityState: ' + document.hidden);
1036+
console.log('[visibilitychange] Considering all keys as not pressed');
1037+
shiftKeyDown = false;
1038+
ctrlKeyDown = false;
1039+
altKeyDown = false;
1040+
}
1041+
return {
1042+
keydownHandler: keydownHandler,
1043+
keyupHandler: keyupHandler,
1044+
visibilityChangeHandler: visibilityChangeHandler
1045+
};
1046+
}());
1047+
9721048
// App Events
9731049
window.addEventListener("keydown", function (event) {
974-
menu.keyHandler(event);
975-
gallery.keyHandler(event);
1050+
keyController.keydownHandler(event);
1051+
});
1052+
window.addEventListener("keyup", function (event) {
1053+
keyController.keyupHandler(event);
1054+
});
1055+
document.addEventListener("visibilitychange", function (event) {
1056+
keyController.visibilityChangeHandler(event);
9761057
});
9771058
</script>
9781059
</body>

0 commit comments

Comments
 (0)