The following jQuery-less code works:
var keyboardEvent = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent[initMethod](
"keydown", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
17, // keyCodeArg : unsigned long the virtual key code, else 0
0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
);
element.dispatchEvent(keyboardEvent);
... and should work in many browsers, opposed to this simpler solution:
jQuery keydown trigger not working
I tried to find a way to let jQuery do the same, but unfortunately, the following code does not work:
var evt = $.Event('keydown');
evt.which = 17;
evt.keyCode = 17; // Ctrl
$(element).trigger(evt);
Here's the full GreaseMonkey script if you want to test your solutions:
http://userscripts.org/scripts/review/486617