ฉันรู้ว่าคุณสามารถทำได้จากการควบคุมโดยคลิกและไม่มีทางลัดใน 'แป้นพิมพ์'
มีวิธีใดบ้างในการทำเช่นนี้โดยใช้โปรแกรมของบุคคลที่สามหรือ Applescript?
ฉันรู้ว่าคุณสามารถทำได้จากการควบคุมโดยคลิกและไม่มีทางลัดใน 'แป้นพิมพ์'
มีวิธีใดบ้างในการทำเช่นนี้โดยใช้โปรแกรมของบุคคลที่สามหรือ Applescript?
คำตอบ:
อัปเดต: วิธีนี้ใช้งานได้ใน OS X 10.11 และก่อนหน้านี้อย่างน้อยเป็น OS X 10.8 (ไม่ได้ทดสอบกับอะไรที่เก่ากว่า OS X 10.8) แต่ไม่ทำงานตามรหัสใน macOS 10.12 อีกต่อไปเนื่องจากการเปลี่ยนแปลงที่สำคัญในการควบคุมภารกิจของ Apple .
ในการเพิ่มเดสก์ท็อปในการควบคุมภารกิจโดยทางโปรแกรมสามารถใช้รหัสด้านล่างเป็น AppleScript หรือ BASH Script ร่วมกับ Automator Service โดยใช้ Run AppleScript หรือ Run Shell Script ตามลำดับและลำดับคีย์ที่กำหนดให้กับบริการในการตั้งค่าระบบในคีย์บอร์ด ทางลัด
รหัส AppleScript:
do shell script "open -a 'Mission Control'"
delay 0.5
tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 1 of process "Dock"
delay 0.5
tell application "System Events" to key code 53
รหัสสคริปต์ BASH:
#!/bin/bash
open -a 'Mission Control'
osascript -e 'delay 0.5' \
-e 'tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 1 of process "Dock"' \
-e 'delay 0.5' \
-e 'tell application "System Events" to key code 53'
เปิดอัตโนมัติและเลือกบริการ
Set: Service ไม่ได้รับอินพุตในแอปพลิเคชัน
เพิ่มทั้งเรียก AppleScriptหรือเรียก Shell Script การดำเนินการ
เพิ่มที่เหมาะสมรหัสสำหรับเป้าหมายการดำเนินการ
บันทึกบริการเป็นเช่น: เพิ่มเดสก์ท็อปใหม่
กำหนดแป้นพิมพ์ลัดสำหรับการให้บริการในการตั้งค่าระบบ
หมายเหตุ:คุณจะต้องกำหนดลำดับที่สำคัญที่ไม่ได้ใช้ที่อื่น ๆ ในระบบหรือในFinderถ้าคุณเลือกที่จะจบโปรแกรมใด ๆในการให้บริการ
ฉันทดสอบด้วย: ⌃⌥⌘D (การควบคุมตัวเลือกคำสั่ง -D)
ตกลงโดยใช้การบันทึกอัตโนมัติฉันทำให้มันทำงานกับ AppleScript รุ่นที่แก้ไขในคำตอบอื่น ๆ
แทนที่ "ของกลุ่ม 1" ด้วย "ของกลุ่ม 2 ของกลุ่ม 1 ของกลุ่ม 1 ของ":
on run {input, parameters}
do shell script "open -a 'Mission Control'"
delay 0.5
tell application "System Events" to click (every button whose value of attribute "AXDescription" is "add desktop") of group 2 of group 1 of group 1 of process "Dock"
delay 0.5
tell application "System Events" to key code 53
return input
end run
ใช่แล้วมันใช้งานได้ ปัญหาคือว่าโซลูชันของ user3439894 สิ้นสุดลงโดยมีข้อผิดพลาดหากไม่ได้เพิ่มแอปพลิเคชันที่ใช้งาน (Finder, textedit ฯลฯ ) ลงในบานหน้าต่างความปลอดภัยและความเป็นส่วนตัว
ในการหลีกเลี่ยงปัญหานี้เราจำเป็นต้องมีสองเวิร์กโฟลว์บริการของ user3439894 พร้อมกับรายชื่อกลุ่มที่ได้รับการปรับปรุงเป็นแอปพลิเคชัน Automator และบริการ Automator ตัวที่สองเพื่อเปิดใช้งาน
แอปพลิเคชัน Automator (บันทึก / แอปพลิเคชันเป็น "เดสก์ท็อปใหม่")
เมื่อรัน {อินพุต, พารามิเตอร์}
ทำสคริปต์เชลล์ "open -a 'Mission Control'"
ล่าช้า 0.5
แจ้งให้แอปพลิเคชัน "เหตุการณ์ระบบ" เพื่อคลิก (ทุกปุ่มที่มีค่าแอตทริบิวต์ "AXDescription" คือ "เพิ่มเดสก์ท็อป") ของกลุ่มที่ 2 ของกลุ่มที่ 1 ของกลุ่มที่ 1 ของกระบวนการ "Dock"
ล่าช้า 0.5
บอกแอปพลิเคชัน "เหตุการณ์ของระบบ" ให้กับรหัสคีย์ 53
ป้อนข้อมูลกลับ
สิ้นสุดวิ่ง
จากนั้นเราเพียงแค่ต้องสร้างเวิร์กโฟลว์ที่สองเป็นบริการโดยใช้การดำเนินการ "เรียกใช้แอปพลิเคชัน" และบันทึกเป็น "New_Desktop"
ขั้นตอนสุดท้ายคือการเพิ่ม“ ใหม่ Desktop.App” ในการตั้งค่าระบบ> ความปลอดภัยและความเป็นส่วนตัว> การเข้าถึง
จากนั้นเพิ่มแป้นพิมพ์ลัดของคุณในการตั้งค่าระบบ> คีย์บอร์ด> ทางลัด> บริการ> ทั่วไปสำหรับ New_Desktop.workflow