¿Cómo analizo la salida de lsappinfo?

1

Hay una buena herramienta lsappinfo que te permite hacer cosas como monitorear para cambiar de aplicación. Me gustaría escribir un programa que ejecute lsappinfo listen y realice acciones cuando la aplicación de primer plano cambie (específicamente, cambie los colores de los LED en mi nuevo teclado).

¿Alguien sabe cuál es el formato de serialización que utiliza lsappinfo? Se parece a esto:

$ lsappinfo listen +becameFrontmost forever
Notification: kLSNotifyBecameFrontmost time=10/18/2017 06:58:18.843 dataRef={ "ApplicationType"="Foreground", "CFBundleIdentifier"="com.google.Chrome", "LSASN"=ASN:0x0-0x10010:, "LSFrontApplicationSeed"=3367, "LSMenuBarOwnerApplicationSeed"=3270, "LSMenuBarOwnerASN"=ASN:0x0-0x10010:, "LSOtherASN"=ASN:0x0-0x2f52f5: } affectedASN="Google Chrome" ASN:0x0-0x10010:  context=0x0 sessionID=186a6 notificationID=0x7fb529d00a90
Notification: kLSNotifyBecameFrontmost time=+0.835684s  dataRef={ "ApplicationType"="Foreground", "CFBundleIdentifier"="org.gnu.Emacs", "LSASN"=ASN:0x0-0x2f52f5:, "LSFrontApplicationSeed"=3368, "LSMenuBarOwnerApplicationSeed"=3271, "LSMenuBarOwnerASN"=ASN:0x0-0x2f52f5:, "LSOtherASN"=ASN:0x0-0x10010: } affectedASN="Emacs" ASN:0x0-0x2f52f5:  context=0x0 sessionID=186a6 notificationID=0x7fb529d00a90

Quiero decir, puedo analizar esto con una expresión regular buscando solo el campo que quiero, pero sería mejor poder simplemente pasarlo a alguna biblioteca en lugar de usar una expresión regular hacky que podría fallar si los datos parecen raros . ¿Es este un tipo de formato de serialización interno de macOS estándar del que no he oído hablar, o es algo que han creado solo para esta herramienta?

    
pregunta David Glasser 18.10.2017 - 09:01

1 respuesta

0

No es necesario, hay un clon de código abierto en enlace que puede proporcionarle la API subyacente Llamadas que usa Apple.

    
respondido por el Technologeeks 07.11.2017 - 19:08

Lea otras preguntas en las etiquetas