.\" Generated by scdoc 1.11.1 .\" Complete documentation for this program is not available as a GNU info page .ie \n(.g .ds Aq \(aq .el .ds Aq ' .nh .ad l .\" Begin generated content: .TH "YDOTOOL" "1" "2022-02-01" .P .SH NAME .P ydotool - command-line \fI/dev/uinput\fR automation tool .P .SH SYNOPSIS .P \fBydotool\fR \fBcmd\fR \fIargs.\&.\&.\&\fR .P \fBydotool\fR \fBcmd\fR --help .P .SH DESCRIPTION .P \fBydotool\fR lets you programmatically (or manually) simulate keyboard input and mouse activity, etc.\& It does this by writing directly to \fI/dev/uinput\fR so it generally needs to run as root.\& .P Currently implemented command(s): .P \fBtype\fR .RS 4 Type a string .RE \fBkey\fR .RS 4 Press keys .RE \fBmousemove\fR .RS 4 Move mouse pointer to absolute position .RE \fBmousemove_relative\fR .RS 4 Move mouse pointer to relative position .RE \fBclick\fR .RS 4 Click on mouse buttons .RE \fBrecorder\fR .RS 4 Record/replay input events .RE \fBmouseup\fR .RS 4 Send a mouse up event.\& .RE \fBmousedown\fR .RS 4 Send a mouse down event.\& .P .RE .SH KEYBOARD COMMANDS \fBkey\fR [\fB--up\fR] [\fB--down\fR] [\fB--delay\fR \fI\fR] [\fB--key-delay\fR \fI\fR] [\fB--repeat\fR \fI\fR] [\fB--repeat-delay \fR] [\fB--persist-delay \fR] \fI\fR .P .RS 4 Type a given keystroke.\& Examples being "alt+r", "ctrl+J", "ctrl+alt+n", "backspace".\& .P Options: .P \fB--up\fR .RS 4 Only keyup .P .RE \fB--down\fR .RS 4 Only keydown .P .RE \fB--delay\fR \fI\fR .RS 4 Delay before starting to output keystrokes.\& Default 100ms.\& .P .RE \fB--key-delay\fR \fI\fR .RS 4 Delay time between keystrokes.\& Default 12ms.\& .P .RE \fB--repeat\fR \fI\fR .RS 4 Times to repeat the key sequence.\& .P .RE \fB--repeat-delay\fR \fI\fR .RS 4 Delay time between repetitions.\& Default 0ms.\& .P .RE \fB--persist-delay\fR \fI\fR .RS 4 Keep virtual device alive for \fI\fR ms.\& Should be used in conjunction with \fB--down\fR or \fB--up\fR .P .RE Generally, any valid name from \fI/usr/include/linux/input-event-codes.\&h\fR will work.\& Multiple keys are separated by '+'.\& .P Each key sequence can be any number of modifiers and keys, separated by plus (+) For example: alt+r Alt+F4 CTRL+alt+f3 aLT+1+2+3 ctrl+Backspace .P Since we are emulating keyboard input, combinations like Shift+# is invalid because typing a `#' involves pressing Shift and 3.\& .P Example: Switch to tty1: .RS 4 ydotool key ctrl+alt+f1 .P .RE Example: Close a window in graphical environment: .RS 4 ydotool key Alt+F4 .P .RE .RE \fBtype\fR [\fB--delay\fR \fI\fR] [\fB--key-delay\fR \fI\fR] [\fB--args\fR \fI\fR] [\fB--file\fR \fI\fR] "\fIsomething to type\fR" .P .RS 4 Types text as if you had typed it on the keyboard.\& .P Options: .P \fB--delay\fR \fI\fR .RS 4 Delay before starting typing.\& Default 100ms.\& .P .RE \fB--key-delay\fR \fI\fR .RS 4 Delay time between keystrokes.\& Default 12ms.\& .P .RE \fB--args\fR \fI\fR .RS 4 ?\&?\&?\&?\& .P .RE \fB--file\fR \fI\fR .RS 4 Specify a file, the contents of which will be typed as if passed as an argument.\& The filepath may also be '-' to read from stdin.\& .P .RE Example: to type 'Hello world!\&' you would do: .RS 4 ydotool type 'Hello world!\&' .P .RE .RE .SH MOUSE COMMANDS .P \fBmousemove\fR [\fB--delay\fR \fI\fR] \fI \fR .RS 4 Move the mouse to the specific X and Y coordinates on the screen.\& .P Options: \fB--delay\fR \fI\fR .RS 4 Delay before starting move.\& Default 100ms.\& .P .RE Example: to move the cursor to absolute coordinates (100,100): .RS 4 ydotool mousemove 100 100 .P .RE .RE \fBmousemove_relative\fR [\fB--delay\fR \fI\fR] \fI\fR \fI\fR .RS 4 Move the mouse x,y pixels relative to the current position of the mouse cursor.\& .P Options: \fB--delay\fR \fI\fR .RS 4 Delay before starting move.\& Default 100ms.\& .P .RE Example: Relatively move mouse pointer to -100,100: .RS 4 ydotool mousemove_relative -- -100 100 .P .RE .RE \fBclick\fR [\fB--delay\fR \fI\fR] \fIbutton\fR .RS 4 Send a click.\& Buttons are: 1=left 2=right 3=middle .P Options: .P \fB--delay\fR \fI\fR .RS 4 Delay before click.\& Default 100ms.\& .P .RE Example: Mouse right click: .RS 4 ydotool click 2 .P .RE .RE \fBrecorder\fR [\fB--delay\fR \fI\fR] [\fB--record\fR \fI\fR] [\fB--replay\fR \fI\fR] [\fB--display\fR] [\fB--duration\fR \fI\fR] .P .RS 4 Options: .P \fB--delay\fR \fI\fR .RS 4 Delay time before start recording/replaying.\& Default 5000ms.\& .P .RE \fB--record\fR \fI\fR .RS 4 Devices to record from.\& Default is all, including non-keyboard devices.\& .P .RE \fB--replay\fR \fI\fR .RS 4 The record file can't be replayed on an architecture with different endianness.\& .P .RE \fB--display\fR .RS 4 ?\&?\&?\&?\& .P .RE \fB--duration\fR \fI\fR .RS 4 Record duration.\& Otherwise use SIGINT to stop recording.\& .P .RE .RE \fBmouseup\fR [\fB--delay\fR \fI\fR] \fIbutton\fR .RS 4 Send a mouse up event.\& Buttons are: 1=left 2=right 3=middle .P Options: .P \fB--delay\fR \fI\fR .RS 4 Delay before click.\& Default 100ms.\& .P .RE Example: Mouse right click: .RS 4 ydotool click 2 .P .RE .RE \fBmousedown\fR [\fB--delay\fR \fI\fR] \fIbutton\fR .RS 4 Send a mouse down event.\& Buttons are: 1=left 2=right 3=middle .P Options: .P \fB--delay\fR \fI\fR .RS 4 Delay before click.\& Default 100ms.\& .P .RE Example: Mouse right click: .RS 4 ydotool click 2 .P .RE .RE .SH AUTHOR .P ydotool was written by ReimuNotMoe.\& .P This man page by bob.\&hepple@gmail.\&com .P .SH BUGS .P When \fBydotool\fR(1) runs and creates a virtual input device, it will take some time for your graphical environment (eg X11/Wayland) to recognize and enable the virtual input device.\& (Usually done by udev) .P If the delay is too short, the virtual input device may not be recognized & enabled by the graphical environment in time.\& .P In order to solve this problem, there is a persistent background service, \fBydotoold\fR(1), to hold a persistent virtual device, and accept input from \fBydotool\fR(1).\& When \fBydotoold\fR(1) is unavailable, \fBydotool\fR(1) will work without it.\& .P .SH COPYRIGHT MIT License .P .SH SEE ALSO .P \fBydotoold\fR(8) .P Project site: