Add hotkeys to navigate the Steam Discovery Queue
当前为
// ==UserScript==
// @name Steam Hotkeys
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Add hotkeys to navigate the Steam Discovery Queue
// @author Lex
// @match http://store.steampowered.com/*
// @require https://code.jquery.com/jquery-3.2.1.min.js
// @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function($, undefined) {
'use strict';
var ONE_CLICK_ADVANCE = true;
var HOTKEYS_ENABLED = true;
function loadSettings() {
ONE_CLICK_ADVANCE = GM_getValue("ONE_CLICK_ADVANCE", ONE_CLICK_ADVANCE);
HOTKEYS_ENABLED = GM_getValue("HOTKEYS_ENABLED", HOTKEYS_ENABLED);
}
function saveSettings() {
GM_setValue("ONE_CLICK_ADVANCE", ONE_CLICK_ADVANCE);
GM_setValue("HOTKEYS_ENABLED", HOTKEYS_ENABLED);
}
function inQueue() {
return Boolean(document.querySelector("div.next_in_queue_content"));
}
function clickNextQueue() {
document.querySelectorAll("div.btn_next_in_queue, #refresh_queue_btn, .queue_actions_ctn a[href='http://store.steampowered.com/explore/']")[0].click();
}
function doc_keyUp(e) {
if (!HOTKEYS_ENABLED)
return;
switch (e.keyCode) {
case 87:
// w
let rm = document.querySelector("#add_to_wishlist_area_success:not([style*='none'])");
let add = document.querySelector("#add_to_wishlist_area:not([style*='none']) a");
(rm || add).click();
if (ONE_CLICK_ADVANCE && inQueue()) {
let keyElement;
if (rm !== null)
keyElement = "#add_to_wishlist_area:not([style*='none']) a";
else if (add !== null)
keyElement = "#add_to_wishlist_area_success:not([style*='none'])";
waitForKeyElements(keyElement, clickNextQueue, true);
}
break;
case 83:
// s
document.querySelector("div.queue_btn_ignore div:not([style*='none'])").click();
if (ONE_CLICK_ADVANCE && inQueue()) {
waitForKeyElements("div.queue_btn_active:not([style*='none'])", clickNextQueue, true);
}
break;
case 78:
case 68:
// d
clickNextQueue();
break;
default:
break;
}
}
function addHotkeySettings() {
var enableChecked = HOTKEYS_ENABLED ? `checked="checked"` : ``;
var autoAdvance = ONE_CLICK_ADVANCE ? `checked="checked"` : ``;
var HotKeysSettings = `<div style="float:right; width:50%"><div class="dq_settings_section_title">Hotkeys:</div>
<div class="dq_settings_checkrow"><input type="checkbox" id="sdqhotkeys_enabled" ${enableChecked}><label for="sdqhotkeys_enabled">Hotkeys enabled</label></div>
<div class="dq_settings_checkrow"><input type="checkbox" id="sdqhotkeys_autoadvance" ${autoAdvance}><label for="sdqhotkeys_autoadvance" title="Automatically go to the next game after adding to wishlist or marking not interested">Auto advance</label></div>
</div>`;
$(HotKeysSettings).prependTo($("div.dq_settings_content div.dq_settings_section:first"));
$("#sdqhotkeys_enabled").change(function(){ HOTKEYS_ENABLED = Boolean(this.checked); saveSettings(); });
$("#sdqhotkeys_autoadvance").change(function(){ ONE_CLICK_ADVANCE = Boolean(this.checked); saveSettings(); });
}
loadSettings();
waitForKeyElements("div.dq_settings_content", addHotkeySettings, false);
document.addEventListener('keyup', doc_keyUp, false);
})(jQuery);