ลบ Keystroke จาก AppleScript


0

บริบท

ใน Safari มีฟิลด์ข้อความซึ่งประกอบด้วยชื่อของภาพที่มีนามสกุล.pngและฉันต้องลบนามสกุลนั้น

วิธีการแก้

เขียนสคริปต์ซึ่งจำลองDelete(⌫)คีย์ 4 ครั้งหากอักขระก่อนหน้าคือ.pngดังนั้นจึงลบส่วนขยาย

ปัญหา

นี่มันบอกว่าควรจะทำkey code 51แต่ดูเหมือนจะไม่ทำงาน การค้นหาของ Google เกิดขึ้นกับรหัสสำคัญอื่น ๆ เช่น 127

สิ่งที่ต้องแก้ไขโซลูชันของฉัน

รหัสคีย์ที่ถูกต้องคืออะไร? มีวิธีในการค้นหาด้วยตัวคุณเองเช่นปุ่มสำหรับการตรวจสอบการเข้าถึงปุ่มเขตข้อมูลและอื่น ๆ ที่ฉันลองบันทึกไม่ทำงานหรือไม่ Apple มีรายการอย่างเป็นทางการว่าเป็นรหัสสำคัญหรือไม่

สำหรับผู้ที่สนใจด้านล่างคือสคริปต์ไม่มีอะไรพิเศษ:

# Checks and remove .png if exists

tell application "System Events"
    set oldClipboard to the clipboard

    repeat 4 times
        key code 123 using {shift down}  # Left Arrow key. Selects last 4 chars
    end repeat
    keystroke "c" using {command down}

    set newClipboard to the clipboard as text
    if newClipboard is equal to ".png" then
        #keystroke (ASCII character 127) # Other "code", doesn't work
        key code 51
        delay 0.1
    end if

    key code 124                         # Right Arrow key, works
    set the clipboard to oldClipboard
end tell

1
ภาพใหญ่ที่คุณพยายามจะทำคืออะไร อาจมีวิธีที่ปลอดภัยกว่าเพื่อให้ได้มามากกว่าการจำลองการกดแป้น
Ilari Scheinin

1
... ตามเส้นเหล่านี้: set x to "something.dmg"<newline>if x ends with ".dmg" then set x to characters 1 thru -5 of x as string
Ilari Scheinin

ไกลน้อยของปัญหา XYทำเช่น @IlariScheinin ที่มิ)
Tetsujin

รหัสสำคัญ 51 ทำงานเป็นลบกลับ ฉันเพิ่งทดสอบมันใน TextEdit แอพและบริบทใดที่คุณมีต่อหน้าเมื่อโค้ดของคุณกำลังทำงาน ทดสอบด้วยเสียงบี๊บหรือข้อความโต้ตอบก่อนรหัสคีย์ของคุณ 51 เพื่อให้แน่ใจว่าปัญหาไม่ได้เกิดจากตรรกะของรหัส
jweaks

@jweaks เพิ่มข้อมูลเพิ่มเติม ฉันรู้ว่าสคริปต์ทำงานได้ดีเพราะฉันเห็นข้อความที่เลือก แต่มันไม่เคยลบ
user14492

คำตอบ:


0

สคริปต์ของคุณทำงานได้ดีในแอปส่วนใหญ่ สามารถทดสอบใน TextEdit ได้อย่างง่ายดายเพื่อดูว่า เมื่อฉันบอกว่าเพิ่มในกล่องโต้ตอบเพื่อส่งข้อความส่วนใหญ่สิ่งที่คุณต้องทดสอบคือ "ถ้า newClipboard เท่ากับ" .png "กำลังถูกทริกเกอร์ (ไม่ใช่ถ้าข้อความได้รับเลือกฉันจะเดาว่าปัญหาของคุณคือ ในกล่องแบบฟอร์มบนเว็บ (ซึ่งฉันคิดว่าคุณกำลังอธิบาย), จาวาสคริปต์จะชะลอการตอบสนองข้อความรวมถึงการคัดลอกไปยังคลิปบอร์ดมันเป็นปัญหาที่พบบ่อยมากเมื่อสคริปต์การคัดลอกไปยังคลิปบอร์ดที่คุณต้องการเพิ่มความล่าช้า เพื่อให้กระบวนการเสร็จสิ้นก่อนที่สคริปต์จะดำเนินการลองสิ่งนี้ซึ่งเพิ่มการหน่วงเวลา:

tell application "Safari" to activate
delay 1
tell application "System Events"
    set oldClipboard to the clipboard
    repeat 4 times
        key code 123 using {shift down} # Left Arrow key. Selects last 4 chars
    end repeat
    delay .5
    keystroke "c" using {command down}
    delay 2
    set newClipboard to the clipboard as text
    -- display dialog newClipboard
    if newClipboard is equal to ".png" then
        #keystroke # WORKS!!!!!!!!
        key code 51
        delay 0.1
    end if

    key code 124 # Right Arrow key, works
    set the clipboard to oldClipboard
end tell

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