Kısayol tuşu ile fareyi hareket ettirin ve tıklayın


1

Şu anda, imleci belirli koordinatlara getirmeme ve bir sol tıklama gerçekleştirmeme izin veren bir makro oluşturmak için Klavye maestro kullanıyorum.

Ne yazık ki Yosemite altında, sporadik olarak tıkladığı için beklendiği gibi çalışmaz (her zaman imleci hareket ettirir ancak her zaman tıklamaz).

Bunu başarmak için başka geçerli seçenekler var mı? Koordinatları nispeten aktif pencereye ayarlayabilirsem çok iyi olur.




Hareket eden ve tıklayan ana kısım el yazısı değil. Applescript'i yoksay.
markhunte

Ne demek istediğimi göstermek için çalışan bir örnekle bir cevap gönderdim.
markhunte

Yanıtlar:


1

@ Mat-burns kodundan bir Adaptasyon olarak bu yazıdaki (Not ayrıca xcode yüklü olması gerekecektir .)

       #!/usr/bin/env xcrun swift

import Foundation

let kDelayUSec : useconds_t = 500_000

func moveMouseClick( p1: CGPoint) {

    let mouseMove = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDragged), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
    let mouseDown = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDown), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
    let mouseUp = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseUp), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()


    CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseMove)
    usleep(kDelayUSec)
    CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseDown)
    usleep(kDelayUSec)
    CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseUp)
}


func main() {

    let pointX = 396
    let pointY = 214

    let p1 = CGPointMake( CGFloat(pointX),  CGFloat(pointY))
    moveMouseClick( p1)


}

main()

Satırları değiştir:

let pointX = 396
let pointY = 214

sizi yansıtmak için tıklayın.

Bu kodu moveClick.swift olarak kaydedin

Ve sonra Terminal.app'de /bin/chmod +x ~/scripts/moveClick.swiftkomut dosyasını çalıştırılabilir hale getirmek için çalıştırın

~ / Scripts / moveClick.swift komutunu, hızlı dosyanızın gerçek yoluna değiştirin.

Klavye maestroya sahip değilim ama bir kabuk betiğini çalıştırabildiğini görüyorum.

Bir Kabuk Betiği İşlemi Yürütme

~/scripts/moveClick.swift


Yukarıdaki örnekte, tıklama noktasını kodladık.

Ancak, çok yönlü hale getirmek istiyorsanız, kodu argümanlara götürebiliriz.

Bunun yerine bu kodu kullanmak.

    #!/usr/bin/env xcrun swift

import Foundation

let kDelayUSec : useconds_t = 500_000

func moveMouseClick( p1: CGPoint) {

    let mouseMove = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDragged), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
    let mouseDown = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDown), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
    let mouseUp = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseUp), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()


    CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseMove)
    usleep(kDelayUSec)
    CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseDown)
    usleep(kDelayUSec)
    CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseUp)
}


func main() {

    let p1 = CGPointMake( CGFloat(atof( C_ARGV[1])),  CGFloat(atof( C_ARGV[2])))


    moveMouseClick( p1)


}

main()

Yine Klavye maestro içinde.

Bir Kabuk Betiği İşlemi Yürütme

~/scripts/moveClick.swift 396, 214


Kapsamlı cevabınız için teşekkürler. Ben zaten test ediyorum. Sadece bir soru: İkinci kod nispeten aktif pencereye o koordinatları tıklıyor mu?
Olmasını

@ Giorgio Sorunuzda gerçekten hangi pencerenin veya nasıl bir yöntem kullandığınızı ve nasıl kablo kullandığını söylemiyorsunuz. Bunu ve ilgili herhangi bir bilgiyi ekleyebilir misiniz? bu bana veya başkalarına amacınızı anlama konusunda yardımcı olabilir.
markhunte

@Giorgio Ayrıca, ikinci kod, ekranla ilgili verdiğiniz nokta kodlarını tam olarak tıklar. Çalıştırmadan önce bu noktanın ne istediğini hesaplamak zorunda kalacaksın ve sonra komuta vermelisin. Dolayısıyla sizden son isteğim için sizden bilgi ekleyin. Ayrıca pencerede ne tıklamaya çalışıyorsunuz
markhunte
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.