Hotkey untuk memindahkan mouse dan klik

1

Saat ini saya menggunakan maestro Keyboard untuk membuat makro yang memungkinkan saya memindahkan kursor ke koordinat tertentu dan melakukan klik kiri.

Sayangnya di bawah Yosemite itu tidak berfungsi seperti yang diharapkan, karena itu klik secara sporadis (selalu menggerakkan kursor tetapi tidak mengklik setiap kali).

Apakah ada opsi lain yang layak untuk mencapai ini? Akan lebih bagus jika saya dapat mengatur koordinat relatif ke jendela aktif.

KingBOB
sumber
Silahkan lihat pada posting ini apple.stackexchange.com/questions/176555/...
markhunte
Saya lebih suka jika saya dapat mencapainya tanpa applescript, karena terlalu lama untuk memuat ketika saya mengklik hotkey ...
KingBOB
Bagian utama yang melakukan pemindahan dan mengklik bukanlah applescript. Abaikan Applescript.
markhunte
Saya telah memposting jawaban dengan contoh yang berfungsi untuk menunjukkan apa yang saya maksud.
markhunte

Jawaban:

1

Sebagai Adaption dari @ mat-burns code pada postingan ini (Catatan Anda juga perlu menginstal xcode .)

       #!/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()

Ubah garis:

let pointX = 396
let pointY = 214

untuk mencerminkan titik klik Anda.

Simpan kode ini sebagai moveClick.swift

Dan kemudian di Terminal.app jalankan /bin/chmod +x ~/scripts/moveClick.swiftuntuk membuat skrip dieksekusi

Ubah ~ / scripts / moveClick.swift ke path aktual Anda ke file swift Anda.

Saya tidak punya maestro Keyboard. Tapi saya melihatnya bisa menjalankan skrip shell.

Jalankan Shell Script Action

~/scripts/moveClick.swift


Pada contoh di atas kita telah mengkodekan titik klik dengan susah payah.

Tetapi jika Anda ingin membuatnya serbaguna, kita dapat membuat kode mengambil argumen.

Sebaliknya, gunakan kode ini.

    #!/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()

Lagi di maestro Keyboard.

Jalankan Shell Script Action

~/scripts/moveClick.swift 396, 214

markhunte
sumber
Terima kasih atas jawaban komprehensif Anda. Saya sudah mengujinya. Hanya sebuah pertanyaan: apakah kode kedua mengklik pada koordinat tersebut relatif ke jendela aktif? Saya ingin ini terjadi dan saya tidak sepenuhnya yakin saya memahami kode Anda :)
KingBOB
@ Giorgio Dalam pertanyaan Anda, Anda tidak benar-benar mengatakan jendela apa atau bagaimana metode Anda saat ini bekerja dan bagaimana cara mendapatkan tali. Bisakah Anda menambahkan itu dan info terkait lainnya. yang dapat membantu saya atau orang lain untuk memahami tujuan pasti Anda.
markhunte
@ Giorgio Juga kode kedua mengklik pada titik tepat yang Anda berikan terkait dengan layar. Anda harus mengetahui poin apa yang Anda inginkan sebelum menjalankannya dan kemudian menyediakannya ke perintah. Karenanya komentar terakhir saya meminta Anda menambahkan info. Juga apa yang Anda coba klik di jendela
markhunte