If you are playing on a desktop, and want some key bindings on navigation, scrolling thru the event logs, etc, I present my scripts.
You need to:
1. Install this chrome extension https://chromewebstore.google.com/detai ... ldmpobfkfo
2. Open the tampermonkey dashboard.
3. Click the the + button on the top right.
4. Paste and save:
5. Open BGA, click tampermonkey, click enable.
You need to:
1. Install this chrome extension https://chromewebstore.google.com/detai ... ldmpobfkfo
2. Open the tampermonkey dashboard.
3. Click the the + button on the top right.
4. Paste and save:
Code: Select all
// ==UserScript==
// @name Board Game Arena - Nemesis Retaliation navigation keyboard bindings
// @namespace https://boardgamearena.com/gamepanel?game=nemesisretaliation
// @version 2026.07.31
// @description ⬅️ navigate back to main board | ⬆️ or ⬇️ navigate thru the player boards | ➡️ toggle help | CTRL/CMD+K toggle chat | PageDown see more event logs (you need to click 1 event log first)
// @author undrgrndbg
// @match https://boardgamearena.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=boardgamearena.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Track the current position in the DOM order sequence (-1 means inactive)
let currentIndex = -1;
let chatblock = 'none';
function isTypingInField(event) {
const target = event.target;
if (!target) return false;
const tagName = target.tagName;
if (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {
return true;
}
if (target.isContentEditable) {
return true;
}
return false;
}
document.addEventListener('keydown', function(event) {
if (isTypingInField(event)) {
return;
}
if (event.key === 'PageDown') {
event.preventDefault();
document.querySelectorAll('#seemorelogs_btn')[0]?.click();
}
if ((event.metaKey || event.ctrlKey) && event.key === 'k') {
if (chatblock == 'none') {
document.querySelectorAll('.chatwindowexpanded')[1].style.display = 'block';
chatblock = 'block';
} else {
document.querySelectorAll('.chatwindowexpanded')[1].style.display = 'none';
chatblock = 'none';
}
}
if (event.key === 'ArrowRight') {
document.querySelectorAll('#help-mode-chk')[0]?.click();
}
if (event.key === "ArrowLeft") {
currentIndex = -1;
window.scrollTo({
top: 0,
});
}
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
// 1. Find all player boards exactly as they appear in the HTML document order
const playerBoards = Array.from(document.querySelectorAll('.quick-access-btn[data-character]'));
if (playerBoards.length === 0) return;
// 2. Process key navigation with strict boundaries (no wrapping)
if (event.key === 'ArrowDown') {
if (currentIndex < playerBoards.length - 1) {
currentIndex++;
}
event.preventDefault();
} else if (event.key === 'ArrowUp') {
if (currentIndex > 0) {
currentIndex--;
} else {
window.scrollTo({
top: 0,
});
currentIndex = -1;
}
event.preventDefault();
}
// 3. Target the current player board in the sequence and trigger a click
const targetElement = playerBoards[currentIndex];
if (targetElement) {
targetElement.click();
return;
}
}
});
})();