From 94e152bb571ad79c7cb889ea4f6482cd3d5371be Mon Sep 17 00:00:00 2001 From: Araxeus Date: Sat, 17 Apr 2021 04:14:54 +0300 Subject: [PATCH] add optional arrowkeys controls option --- plugins/precise-volume/front.js | 24 ++++++++++++++++++++++++ plugins/precise-volume/menu.js | 10 ++++++++++ 2 files changed, 34 insertions(+) create mode 100644 plugins/precise-volume/menu.js diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js index ce657fb1..18b1b45c 100644 --- a/plugins/precise-volume/front.js +++ b/plugins/precise-volume/front.js @@ -1,9 +1,11 @@ const { setOptions } = require("../../config/plugins"); +const { ipcRenderer } = require("electron"); module.exports = (options) => { setPlaybarOnwheel(options); setObserver(options); firstRun(options); + setupArrowShortcuts(options); }; function saveVolume(volume, options) { @@ -42,6 +44,28 @@ function setPlaybarOnwheel(options) { }; } +function setupArrowShortcuts(options) { + //change options from renderer to keep sync + ipcRenderer.on("setArrowsShortcut", (event, value) => { + options.arrowsShortcut = value; + setOptions("precise-volume", options); + }); + + //register shortcuts if enabled + if (options.arrowsShortcut) { + window.addEventListener('keydown', (event) => { + switch (event.code) { + case `ArrowUp`: + changeVolume(true, options); + break; + case `ArrowDown`: + changeVolume(false, options); + break; + } + }, true); + } +} + function changeVolume(increase, options) { // Need to change both the slider and the actual volume const videoStream = document.querySelector(".video-stream"); diff --git a/plugins/precise-volume/menu.js b/plugins/precise-volume/menu.js new file mode 100644 index 00000000..9b870efd --- /dev/null +++ b/plugins/precise-volume/menu.js @@ -0,0 +1,10 @@ +module.exports = (win, options) => [ + { + label: "Arrowkeys controls", + type: "checkbox", + checked: !!options.arrowsShortcut, + click: (item) => { + win.webContents.send("setArrowsShortcut", item.checked); + } + } +];