From d2068ee0234e00ed285606331021ccbaa3598f60 Mon Sep 17 00:00:00 2001 From: Joakim Almgren Date: Tue, 6 Jun 2017 00:59:15 +0200 Subject: [PATCH] v1.1 added customizeable keybinds --- js/keyboard-shortcuts.js | 85 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 78 insertions(+), 7 deletions(-) diff --git a/js/keyboard-shortcuts.js b/js/keyboard-shortcuts.js index 1f8d56bf..b0f8c2eb 100644 --- a/js/keyboard-shortcuts.js +++ b/js/keyboard-shortcuts.js @@ -1,13 +1,17 @@ // author: joakimoa // keyboard navigation option -// v1.0 +// v1.1 // adding checkbox for turning on/off if (window.Options && Options.get_tab('general')) { Options.extend_tab("general", "
Keyboard Navigation " + - ("") + - "
"); + ("") + + "" + + "" + + "" + + "" + + "
ActionKey
Next Reply
Previous Reply
Expand File
"); } $('.keyboardnav').on('change', function(){ @@ -20,13 +24,81 @@ $('.keyboardnav').on('change', function(){ if (!localStorage.keyboardnav) { localStorage.keyboardnav = 'false'; } +if (!localStorage["next.reply.key"]) { + localStorage["next.reply.key"] = 74; +} +if (!localStorage["previous.reply.key"]) { + localStorage["previous.reply.key"] = 75; +} +if (!localStorage["expando.key"]) { + localStorage["expando.key"] = 69; +} // getting locally stored setting function getSetting(key) { return (localStorage[key] == 'true'); } +function isKeySet(key) { + return (localStorage[key] !== false); +} + +var nextReplyInput = document.getElementsByName("next-reply")[0]; +var previousReplyInput = document.getElementsByName("previous-reply")[0]; +var expandoInput = document.getElementsByName("expando")[0]; + +var nextReplyKeycode = 74; +var previousReplyKeycode = 75; +var expandoKeycode = 69; + if (getSetting('keyboardnav')) $('#keyboardnav>input').prop('checked', 'checked'); +if (isKeySet('next.reply.key')) { + nextReplyKeycode = localStorage["next.reply.key"]; + nextReplyInput.value = nextReplyKeycode; +} // need to add so it loads the settings if there are any, to both the vars and to the text fields +if (isKeySet('previous.reply.key')) { + previousReplyKeycode = localStorage["previous.reply.key"]; + previousReplyInput.value = previousReplyKeycode; +} +if (isKeySet('expando.key')) { + expandoKeycode = localStorage["expando.key"]; + expandoInput.value = expandoKeycode; +} + +document.getElementsByName("next-reply")[0].value = String.fromCharCode(nextReplyKeycode); +document.getElementsByName("previous-reply")[0].value = String.fromCharCode(previousReplyKeycode); +document.getElementsByName("expando")[0].value = String.fromCharCode(expandoKeycode); + +nextReplyInput.addEventListener("keyup", changeNextReplyKey, false); +previousReplyInput.addEventListener("keyup", changePreviousReplyKey, false); +expandoInput.addEventListener("keyup", changeExpandoKey, false); + +function changeNextReplyKey(e) { + //console.log(String.fromCharCode(e.keyCode)); + nextReplyInput.value = ""; + if (e.keyCode >= 65 && e.keyCode <= 90) { + nextReplyInput.value = String.fromCharCode(e.keyCode); + localStorage["next.reply.key"] = e.keyCode; + } +} + +function changePreviousReplyKey(e) { + //console.log(String.fromCharCode(e.keyCode)); + previousReplyInput.value = ""; + if (e.keyCode >= 65 && e.keyCode <= 90) { + previousReplyInput.value = String.fromCharCode(e.keyCode); + localStorage["previous.reply.key"] = e.keyCode; + } +} + +function changeExpandoKey(e) { + //console.log(String.fromCharCode(e.keyCode)); + expandoInput.value = ""; + if (e.keyCode >= 65 && e.keyCode <= 90) { + expandoInput.value = String.fromCharCode(e.keyCode); + localStorage["expando.key"] = e.keyCode; + } +} // loads the main function function loadKeyboardNav() { @@ -68,11 +140,11 @@ function loadKeyboardNav() { window.addEventListener("keydown", checkKeyPressed, false); function checkKeyPressed(e) { - if (e.keyCode == "74") { + if (e.keyCode == nextReplyKeycode) { scrollDown(); - } else if (e.keyCode == "75") { + } else if (e.keyCode == previousReplyKeycode) { scrollUp(); - } else if (e.keyCode == "69") { + } else if (e.keyCode == expandoKeycode && k > -1) { expandFile(); } } @@ -80,6 +152,5 @@ function loadKeyboardNav() { // loads main function if checkbox toggled and in a thread if (getSetting('keyboardnav') && document.getElementsByClassName("thread").length === 1) { - console.log("test"); loadKeyboardNav(); }