Search code examples
automationosx-mountain-lionui-automationretina-display

xdotool with mountain lion and macbook retina


xdotool doesn't seem to work with my new macbook retina with mountain lion installed. It launchs XQuartz but does't seem to simulate mouse click or keyboard inputs like before. I don't know if it's related to mountain lion or to the retina display. A tool like cliclick (http://www.bluem.net/en/mac/cliclick/) seems to work though and does the job. Nevertheless, I prefer a tool that work both on mac and on linux. Does anyone experience the same issue?

Using:

  • OS X 10.8.1
  • MacBook Pro Retina
  • xdotool 2.20110530.1 from macports
  • XQuartz 2.7.3

Solution

  • I've found this one for Mac OS X which does the same job as xdotool:

    Website Url: http://www.bluem.net/en/mac/cliclick/

    It works with Retina Display and Mountain Lion. It's pretty simple to use. Here the manual :

    cliclick ("Command Line Interface Click") is a tool for executing mouse- and keyboard-related actions from the shell/Terminal
    
    USAGE
      cliclick [-m <mode>] [-r] command1 [command2] [...]
    
    OPTIONS
      -r        Restore initial mouse location when finished
      -m <mode> The mode can be either “verbose” (cliclick will print a
                description of each action to stdout just before it is
                performed) or “test” (cliclick will only print the
                description, but not perform the action)
    
    COMMANDS
    To use cliclick, you pass an arbitrary number of commands as arguments. A command consists of a command identifier (a string that tells cliclick what kind of action to perform) and usually one or more arguments to the command, which are separated from the command identifier by a colon. Example: “c:123,456” is the command for clicking (the “c” is the command identifier for clicking) at the position with x coordinate 123 and y coordinate 456. See below for a list of all commands and the arguments they expect.
    
    LIST OF COMMANDS
    
      m:x,y   MOVE the mouse to the point with the given coordinates.
              Example: “m:12,34” will move the mouse to the point with
              x coordinate 12 and y coordinate 34.
    
      c:x,y   Will CLICK at the point with the given coordinates.
              Example: “c:12,34” will click at the point with x coordinate
              12 and y coordinate 34. Instead of x and y values, you may
              also use “.”, which means: the current position.
    
      dc:x,y  Will DOUBLE-CLICK at the point with the given coordinates.
              Example: “dc:12,34” will double-click at the point with x
              coordinate 12 and y coordinate 34. Instead of x and y values,
              you may also use “.”, which means: the current position.
    
      tc:x,y  Will TRIPLE-CLICK at the point with the given coordinates.
              Example: “tc:12,34” will triple-click at the point with x
              coordinate 12 and y coordinate 34. Instead of x and y values,
              you may also use “.”, which means: the current position.
    
      kd:keys Will trigger a KEY DOWN event for a comma-separated list of
              modifier keys (“cmd”, “alt” or “ctrl”).
              Example: “kd:cmd,alt” will press the command key and the
              option key (and will keep them down until you release them
              with another command)
    
      ku:keys Will trigger a KEY UP event for a comma-separated list of
              modifier keys (“cmd”, “alt” or “ctrl”).
              Example: “ku:cmd,ctrl” will release the command key and the
              control key (which will only have an effect if you performed
              a “key down” before)
    
      p[:str] Will PRINT the given string. If the string is “.”, the
              current MOUSE POSITION is printed. As a convenience, you can skip
              the string completely and just write “p” to get the current position.
              Example: “p:.” or “p” will print the current mouse position
              Example: “p:'Hello world'” will print “Hello world”
    
      w:ms    Will wait/pause for the given number of milliseconds.
              Example: “w:500” will pause command execution for half a second
    
    Version 2.0, released 08/17/2012
    Author: Carsten Blüm, <[email protected]>
    Website: www.bluem.net/jump/cliclick/