0 votos

Automatizar el cambio de escritorios virtuales en macOS

Estoy haciendo una aplicación (en Python) que requiere una manera de cambiar los escritorios virtuales de MacOS (espacios) utilizando un atajo de teclado, comando de terminal, etc. Prácticamente no importa cómo se haga, siempre y cuando no interfiera con el uso del ordenador y se pueda activar con Python.

Actualmente he probado a utilizar el pynput y keyboard Bibliotecas de Python para presionar ctrl+left/right arrow pero no funciona (el permiso de accesibilidad está activado). En lugar de cambiar al espacio de la izquierda o de la derecha sólo muestra cosas como ^[[1;5C1 en el terminal, o que no tiene ningún efecto aparente cuando hay otras aplicaciones enfocadas. Cambiar el atajo de teclado para cambiar de espacio de ctrl+left/right a shift+left/right no parece ayudar.

¿Hay alguna forma de hacerlo?

0voto

Marc Wilson Puntos 146

Usar ctrl-izquierda y ctrl-derecha para cambiar de escritorio es frágil, porque dependes de que el usuario tenga eso en sus asignaciones de teclado.

Dicho esto, este fragmento de Applescript desplazará los escritorios a la izquierda o a la derecha, según.

tell application "System Events"
    -- key code 123 is left arrow
    -- key code 124 is right arrow
    key code 123 using {control down}
end tell

Si quieres ejecutar esto desde Python, una buena referencia es la publicación del Dr. Drang en leancrew . Reproduzco aquí las partes importantes en caso de que la publicación desaparezca. El post es lo suficientemente antiguo como para que sea python2, lo he arreglado para python3.

Primero el módulo, applescript.py

# dr drang appleScript handler for python
# http://www.leancrew.com/all-this/2013/03/combining-python-and-applescript/

import subprocess

def asrun(ascript):
  "Run the given AppleScript and return the standard output and error."

  osa = subprocess.Popen(['osascript', '-'],
                         stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE)
  return osa.communicate(bytes(ascript,'UTF-8'))[0]

def asquote(astr):
  "Return the AppleScript equivalent of the given string."

  astr = astr.replace('"', '" & quote & "')
  return '"{}"'.format(astr)

Aquí hay un ejemplo, todo en un archivo frente a la importación del módulo. Esto moverá un escritorio a la izquierda.

# dr drang appleScript handler for python
# http://www.leancrew.com/all-this/2013/03/combining-python-and-applescript/

import subprocess

def asrun(ascript):
  "Run the given AppleScript and return the standard output and error."

  osa = subprocess.Popen(['osascript', '-'],
                         stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE)
  return osa.communicate(bytes(ascript,'UTF-8'))[0]

def asquote(astr):
  "Return the AppleScript equivalent of the given string."

  astr = astr.replace('"', '" & quote & "')
  return '"{}"'.format(astr)

ascript = '''
tell application "System Events"
    -- key code 123 is left arrow
    -- key code 124 is right arrow
    key code 123 using {control down}
end tell
'''

asrun(ascript)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X