I'm trying to set up a TamperMonkey script to reassign the Right Arrow
key to F
key.
I tried this code, but so far, nothing happens when I press F
.
(function(){
document.addEventListener('keydown', function(e) {
// pressed F
if (e.keyCode == 70 && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) {
keyCode == 39 // this should trigger the right arrow
}
}, false);
})();
Can someone enlighten me on this, please?
You'll want to use the KeyboardEvent
constructor and then run dispatchEvent
on either the entire document
or a specific element via document.querySelector
, document.getElementById
, etc.
Run the snippet below to see this in action.
(BTW, using KeyboardEvent.keyCode
is depricated in favor of KeyboardEvent.key
. It still works in major web browsers for backwards compatibility, but it's been officially deprecated in the standards)
(Also make sure your TamperMonkey script is running at document-end
if you're wanting to run the keyboard event on a custom DOM element)
window.addEventListener('keydown', (e) => {
if (e.key == 'ArrowRight') console.log('right arrow pressed');
});
// Your TamperMonkey script starts here
(() => {
window.addEventListener('keydown', (e) => {
if (e.key == 'f' && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) {
console.log('f pressed');
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent
const keyboardEvent = new KeyboardEvent('keydown', {
key: 'ArrowRight',
keyCode: 39,
bubbles: true,
cancelable: true,
shiftKey: false,
ctrlKey: false,
altKey: false,
metaKey: false,
});
// https://stackoverflow.com/a/44190874/12101554
// replace `document` with a specific element if you want to do a specific
document.dispatchEvent(keyboardEvent);
}
});
})();
<p>
press right arrow & f key to see things happen
</p>
<button onclick="document.querySelector('.as-console').innerHTML = ''">clear console</button>
However, there isn't a way to disable f from doing other things on that website. If you want to do this, you can install AutoHotKey (Wikipedia Link), create an AutoHotKey script with this one line:
f::^Right
https://www.autohotkey.com/docs/misc/Remap.htm#Remap
When you start this AHK script, AHK will intercept the key event before (most) programs and modify it.