FWIW, eu entendo sua situação e tenho procurado uma boa solução para isso. Passei por esse segmento porque estava procurando por um método um pouco mais rápido do que o que acabei inventando. Eu criei algo que, embora não seja exatamente o que eu esperava, funciona e é um compromisso aceitável. Estou usando o mesmo tipo de comandos de script da GUI que o @markhunte mostra (estrutura ligeiramente diferente, mas a mesma ideia), mas em vez de apenas colocar tudo em um fluxo de trabalho de serviço do Automator, eu o separei em um pacote .app criado com o Platypus. Fiz isso porque em minhas viagens e testes descobri que os serviços do Automator são executados muito lentamente sob certas condições. Se o seu Mac estiver sofrendo algum tipo de estresse, ou seja, uma verificação de disco em execução, o software A / V fazendo alguma coisa, o recebimento de e-mail pelo correio etc. o sistema operacional parece empurrar os serviços para o final da linha. Isso pode levar alguns segundos antes da execução do fluxo de trabalho (algumas vezes) e, ocasionalmente, alguns segundos antes da execução dos comandos da GUI no serviço. Muito chato se você está tentando "rapidamente" bloquear a tela e leva 10 segundos para fazer isso!
Ter um "aplicativo" independente também tem a vantagem de poder usar literalmente dezenas de aplicativos de terceiros diferentes para executá-lo, ou apenas usar o Spotlight ou um serviço Automator para iniciar o aplicativo. Qualquer um deles funciona. O mais rápido que encontrei é um antigo utilitário chamado Spark, que milagrosamente ainda funciona até na 10.8.4. Não me pergunte como desde a última vez que foi desenvolvido, o inimigo 10.4! Spark pode ser encontrado aqui - Spark
Além de tudo isso, lutei contra a questão dos comandos da GUI, às vezes executando lentamente, agrupando o cocoaDialog e chamando-o primeiro quando o aplicativo é executado para mostrar uma pequena bolha flutuante no meio da tela, indicando que uma tela de bloqueio está acontecendo. Normalmente, o bloqueio acontece logo depois, mas se houver um atraso, isso ao menos dará algum "feedback" visual de que você pressionou as teclas certas. Eu também fiz o auto-reparo - se "Habilitar acesso a dispositivos de assistência" não estiver ativado, ele alerta você com uma caixa de diálogo e permite que você a habilite imediatamente. Ele também garantirá que o Menu de acesso ao chaveiro seja exibido na barra de menus, pois isso é um requisito ou a falha na execução dos scripts da GUI.