Is there a way to raise system-wide "keypress" events programmatically from within Mathematica?

Say "Ctrl+C" or "Ctrl+V", which all other programs can recognize?

This is an attempt to gain simple control/automation of other programs from within the Mathematica environment

  • 1
    $\begingroup$ I'm pretty sure that this cannot be done within Mathematica, as it is not a system-wide interface. But you can use the extremely easy-to-learn AutoHotkey which allows you to do exactly this. $\endgroup$ Commented Sep 25, 2013 at 6:55
  • $\begingroup$ Thanks for the solution. I was using Autoit and it is a Windows-specific solution. Doing it using Mathematica would be cross-platform I thought $\endgroup$ Commented Sep 25, 2013 at 7:30

1 Answer 1


One possibility is to use JLink

robotclass = JavaNew["java.awt.Robot"]; 
key = (Function[k,robotclass[keyPress[Symbol["KeyEvent`VKU"<>k]]]] /@ {##};
       Function[k,robotclass[keyRelease[Symbol["KeyEvent`VKU"<>k]]]] /@ {##}
(* e.g., select all Input cells in this notebook :*)
NotebookFind[InputNotebook[], "Input", All, CellStyle]; 
(* and press and reslase Ctrl C programmatically *)
key["CONTROL", "C"]; 

(* create a new document *)
CreateDocument[TextCell["Robot says hi ", "Text"]];
(* use the robotclass to hit the down arrow key, thus moving below the cell *)
(* and now ececut Ctrl V by robot: *)
key["CONTROL", "V"];

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.