I would like to check wether the control key on the keyboard was pressed while a button was clicked.
async function main(eventDetails){
console.log(eventDetails.shiftKey);
document.getElementById("XYZ").addEventListener('click', (event) => { main(event); });
This works fine (also with “eventDetails.altKey”). If i exchange it to “ctrlKey”, however, I always get false. I mean, as it generally works, is it a bug? Or am I (again) missing something? If i just console log the event itself, it says the object has a ctrlKey attribute…
I found this, which says its just not working, but nobody else explains why in the thread:
In the end, the solution just uses “event.ctrlKey”…
So basically on Windows the control key isnt “ctrlKey”, but the “metaKey”, which I think is very wierd. Shouldnt the “metaKey” rather be the Windows key, which opens the start menu, and “ctrlKey” be the control key on both platforms? (Just a rhetoric question, no need for an answer…)
No, on Windows, the Ctrl key is referred to as the CtrlKey, while on macOS, it is called the Command key (metaKey), which corresponds to the Ctrl key on Windows.
the ctrlKey part of ctrlKey || metaKey is superfluous. on macOS, this property will be true when the ctrl (^) key is pressed, which is undesirable. on Windows, this property will always be false; indeed confusingly metaKey corresponds to Ctrl instead. so if you only want to check for ⌘ on macOS and Ctrl on Windows, you should only check for metaKey.