ปุ่มลัดเพื่อเลื่อนเมาส์แล้วคลิก


1

ขณะนี้ฉันใช้แป้นพิมพ์มาสโทรเพื่อสร้างมาโครที่ให้ฉันเลื่อนเคอร์เซอร์ไปยังพิกัดที่กำหนดและทำการคลิกซ้าย

น่าเสียดายภายใต้ Yosemite มันไม่ทำงานตามที่คาดไว้เนื่องจากมันคลิกเป็นระยะ ๆ (มันจะเลื่อนเคอร์เซอร์เสมอ แต่ไม่ได้คลิกทุกครั้ง)

มีตัวเลือกที่ทำงานได้อื่น ๆ เพื่อให้บรรลุนี้ มันจะดีถ้าฉันสามารถตั้งค่าพิกัดค่อนข้างหน้าต่างที่ใช้งานอยู่


ลองดูที่โพสต์นี้apple.stackexchange.com/questions/176555/…
markhunte

ฉันต้องการถ้าฉันสามารถประสบความสำเร็จได้โดยไม่ต้อง applescript เพราะมันใช้เวลานานเกินไปที่จะโหลดเมื่อฉันคลิกปุ่มลัด ...
KingBOB

ส่วนหลักที่ทำการย้ายและคลิกไม่ใช่ applescript ไม่สนใจ Applescript
markhunte

ฉันโพสต์คำตอบพร้อมตัวอย่างการทำงานเพื่อแสดงความหมายของฉัน
markhunte

คำตอบ:


1

ในฐานะที่เป็นการดัดแปลงจาก @ mat-burns code ในโพสต์นี้ (หมายเหตุคุณจะต้องติดตั้ง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()

เปลี่ยนสาย:

let pointX = 396
let pointY = 214

เพื่อสะท้อนจุดคลิกของคุณ

บันทึกรหัสนี้เป็น moveClick.swift

และจากนั้นใน Terminal.app ทำงาน/bin/chmod +x ~/scripts/moveClick.swiftเพื่อให้สคริปต์ที่ปฏิบัติการได้

เปลี่ยน ~ / สคริปต์ / moveClick.swift เป็นพา ธ ที่แท้จริงไปยังไฟล์ swift ของคุณ

ฉันไม่มี Keyboard มาสโทร แต่ฉันเห็นว่ามันสามารถรันเชลล์สคริปต์ได้

ดำเนินการ Shell Script Action

~/scripts/moveClick.swift


ในตัวอย่างด้านบนเราได้เขียนรหัสจุดคลิกอย่างหนัก

แต่ถ้าคุณต้องการทำให้มันใช้งานได้หลากหลายเราสามารถทำให้โค้ดขัดแย้งกันได้

ใช้รหัสนี้แทน

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

อีกครั้งใน Keyboard มาสโทร

ดำเนินการ Shell Script Action

~/scripts/moveClick.swift 396, 214


ขอบคุณสำหรับคำตอบที่ครอบคลุมของคุณ ฉันกำลังทดสอบอยู่ เพียงแค่คำถาม: รหัสที่สองคลิกที่พิกัดเหล่านั้นเมื่อเทียบกับหน้าต่างที่ใช้งานอยู่หรือไม่? ผมอยากให้มันเกิดขึ้นและฉันไม่ได้ทั้งหมดแน่ใจว่าผมเข้าใจรหัสของคุณ :)
KingBOB

@Giorgio ในคำถามของคุณคุณไม่ได้พูดจริงๆว่าหน้าต่างหรือวิธีการทำงานของคุณในปัจจุบันและวิธีการรับสาย คุณสามารถเพิ่มมันและข้อมูลที่เกี่ยวข้องใด ๆ ที่อาจช่วยให้ฉันหรือผู้อื่นเข้าใจเป้าหมายที่แน่นอนของคุณ
markhunte

@Giorgio นอกจากนี้รหัสที่สองคลิกตรงจุดที่คุณให้ที่เกี่ยวข้องกับหน้าจอ คุณจะต้องหาจุดที่ต้องการก่อนที่จะเรียกใช้จากนั้นให้คำสั่งนั้น ดังนั้นความคิดเห็นล่าสุดของฉันขอให้คุณเพิ่มข้อมูล นอกจากนี้คุณกำลังพยายามคลิกที่หน้าต่างอะไร
markhunte
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.