Sto provando a scrivere un semplice registratore di macro in Python per OSX, qualcosa che può catturare gli eventi del mouse e dei tasti mentre lo script viene eseguito in background e riprodurli. Posso usare autopy per quest'ultimo, c'è una libreria altrettanto semplice per il primo?Posso usare Python per catturare eventi di tastiera e mouse in OSX?
risposta
Non sembra esserci un modo per farlo in Python su OSX.
So che è possibile utilizzare curses
per acquisire l'input da tastiera, ma non sono sicuro dell'input del mouse. Non solo, ma se non sbaglio è incluso nella libreria std con 2.7.2.
Ecco una soluzione senza utilizzare curses
:
http://docs.python.org/faq/library.html#how-do-i-get-a-single-keypress-at-a-time
Questa domanda è stato chiesto qualche tempo fa qui - Python cross-platform listening for keypresses?
Si potrebbe trovare il codice di esempio non utile!
Mi sono imbattuto in alcune soluzioni a questo problema oggi e ho pensato di tornare indietro e condividere qui così altri potrebbero risparmiare il tempo di ricerca.
Una soluzione cross-platform ingegnoso per la simulazione di input da tastiera e mouse: http://www.autopy.org/
Ho trovato anche una breve ma di lavoro (come di Mountain Lion) esempio di come a livello globale il login colpi di chiave. L'unica avvertenza è che devi usare Python2.6 poiché 2,7 non sembra avere i moduli objc disponibili.
#!/usr/bin/python2.6
"""PyObjC keylogger for Python
by ljos https://github.com/ljos
"""
from Cocoa import *
import time
from Foundation import *
from PyObjCTools import AppHelper
class AppDelegate(NSObject):
def applicationDidFinishLaunching_(self, aNotification):
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSKeyDownMask, handler)
def handler(event):
NSLog(u"%@", event)
def main():
app = NSApplication.sharedApplication()
delegate = AppDelegate.alloc().init()
NSApp().setDelegate_(delegate)
AppHelper.runEventLoop()
if __name__ == '__main__':
main()
Per input del mouse, è sufficiente sostituire NSKeyDownMask
con la maschera relativa dall'elenco disponibile qui: http://developer.apple.com/library/mac/#documentation/cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html#//apple_ref/occ/clm/NSEvent/addGlobalMonitorForEventsMatchingMask:handler:
Per esempio, NSMouseMovedMask
lavori per il monitoraggio dei movimenti del mouse. Da lì, è possibile accedere a event.locationInWindow() o ad altri attributi.
Calvin Cheng, grazie. il tuo suggerimento funziona su OS X 10.8.5.
Codice da http://docs.python.org/faq/library.html#how-do-i-get-a-single-keypress-at-a-time
#!/usr/bin/python
import termios, fcntl, sys, os
fd = sys.stdin.fileno()
oldterm = termios.tcgetattr(fd)
newattr = termios.tcgetattr(fd)
newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
termios.tcsetattr(fd, termios.TCSANOW, newattr)
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
try:
while 1:
try:
c = sys.stdin.read(1)
print "Got character", repr(c)
except IOError: pass
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
Un'altra soluzione Key Listeners in python?
- 1. Invia eventi mouse e tastiera
- 2. Ignora eventi mouse e tastiera in Qt
- 3. Come posso controllare la tastiera e il mouse con Python?
- 4. Trova dispositivo di eventi per la tastiera, il mouse
- 5. Accesso diretto agli eventi della tastiera in OSX
- 6. Come toccare/gancio eventi della tastiera in OSX e segnare i tastiera incendi ogni evento
- 7. Pygame non gestisce correttamente eventi di tastiera o mouse
- 8. Come posso catturare tutti gli eventi del mouse in un JFrame/Swing?
- 9. Filtro HID OSX per tastiera secondaria?
- 10. Come posso consumare eventi chiave solo su una tastiera con un HID specifico in Mac OSX?
- 11. Come importare e usare l'estensione Levenshtein di python su OSX?
- 12. Selezionare un'area da catturare usando il mouse
- 13. NodeJS nativi di mouse e tastiera attacchi
- 14. Qt - widget di livello superiore con trasparenza di eventi tastiera e mouse?
- 15. Monitoraggio eventi salvaschermo in OSX
- 16. Eventi di tastiera per elementi figlio in un div Contentedit?
- 17. Come posso creare eventi di passaggio del mouse sullo scorrimento della pagina?
- 18. Come catturare gli eventi di visualizzazione ioni?
- 19. allegare eventi della tastiera alla tela HTML5
- 20. Eventi movimento del mouse in NCurses
- 21. Ascolta gli eventi della tastiera e il movimento del mouse all'esterno dell'app Electron
- 22. disabilita o blocca mouse e keybord in python?
- 23. OSX quarzo evento Rubinetti: tipi di eventi e come modificare gli eventi
- 24. Generare eventi di tastiera per l'applicazione in primo piano
- 25. OSX: come rilevare se il controllo missione è in esecuzione?
- 26. Highcharts: STOP grafico da intrappolare gli eventi del mouse, o catturare un clic del mouse sul grafico INTERO
- 27. Framework di eventi per Python?
- 28. D3 eventi mouse - Click & dragend
- 29. Mouse multipli Eventi in un controllo
- 30. iPad Safari per mappare gli eventi del mouse per toccare gli eventi nelle mappe di immagini
Alcuni pacchetti di cui qui hanno il supporto OS X (ad esempio 'keyboard'): https://stackoverflow.com/questions/11918999/key -listeners-in-python / –