สลับ "ใช้ F1, F2 ทั้งหมดเป็นคีย์มาตรฐาน" ผ่านสคริปต์


25

ฉันสลับการตั้งค่า "ใช้ F1, F2 ทั้งหมดเป็นคีย์มาตรฐาน" บ่อยครั้งมากและต้องการทำให้เป็นอัตโนมัติผ่านสคริปต์ (หรือแป้นพิมพ์ลัด) มันเป็นไปได้? ฉันได้ลองใช้ Google ถึงข้อโต้แย้งที่ถูกต้องแล้วdefaults write ...แต่ไม่ประสบความสำเร็จ

การตั้งค่า fn


อัปเดต:ฉันลงเอยด้วยการสร้างhttps://github.com/jkbrzt/macos-fn-toggleตามคำตอบที่นี่

อัปเดตที่สอง:ตอนนี้ยังมี - https://github.com/Pyroh/Fluor - แอพแถบเมนูที่ดีจริงๆที่ช่วยให้คุณเปลี่ยนพฤติกรรมของปุ่ม fn ของแป้นพิมพ์โดยอัตโนมัติขึ้นอยู่กับแอปพลิเคชันที่ใช้งานอยู่

คำตอบ:


25
tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

คุณสามารถใช้งานdefaults write -g com.apple.keyboard.fnState -bool trueได้ แต่ฉันไม่รู้ว่าจะใช้การเปลี่ยนแปลงใดโดยไม่ต้องออกจากระบบและกลับเข้ามาใหม่อีกครั้ง


4
ฉันได้รวบรวมสคริปต์นี้เป็นแอปที่ใช้ Automator เพื่อให้สามารถเรียกใช้ได้อย่างรวดเร็วจาก Spotlight: github.com/jkbr/macos-fn-toggle
Jakub Roztocil

@jkbr แอปของคุณบน github เป็นเพียงสิ่งที่ฉันกำลังค้นหา ขอบคุณ!
mdwhatcott

1
คุณยังสามารถบันทึกสคริปต์เป็นแอปพลิเคชันจาก AppleScript Editor เพียงวางสคริปต์ไว้ที่ AppleScript Editor กด⌘Sแล้วตั้งค่ารูปแบบเป็นแอปพลิเคชัน
Lri

ในอีกทางเลือกหนึ่งใน automator สร้าง "บริการ" ใหม่เพิ่มคำสั่งเรียกใช้ Applescript และวางสิ่งที่มันบอกว่า (* สคริปต์ของคุณไปที่นี่ *) บันทึกแล้วบริการเมนูการใช้งานทั้งหมดจะรวม Fn :)
Spyder

2
ใน Mavericks คุณได้รับข้อผิดพลาดเช่น: "AppleScript Editor ไม่ได้รับอนุญาตให้เข้าถึงการช่วยเหลือ" ดังนั้นคุณต้องไปที่ "ความปลอดภัยและความเป็นส่วนตัว" ในแท็บความเป็นส่วนตัวเลือกความน่าเชื่อถือและเปิดใช้งานแอปของคุณเพื่อทำเช่นนั้น คุณจะต้องให้รหัสผ่านผู้ดูแลระบบเพื่อเปิดล็อค

9

ฉันไม่ทราบเกี่ยวกับสคริปต์ แต่ด้วย reverse-engineering ที่มีประโยชน์และ Googling ฉันทำสิ่งนี้เนื่องจากฉันไม่ชอบสิ่งที่ AppleScript GUI ที่มีอยู่ซึ่งอยู่ที่นั่น:

https://github.com/nelsonjchen/fntoggle

คอมไพล์ไบนารี (เข้าสู่เส้นทางของคุณหรือถ้าคุณไม่รู้ว่ามันคืออะไร/usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

เรียกว่าจากสิ่งที่ (ControlPlane, อัตโนมัติ, shฯลฯ ) โดยการทำงานหรือfntoggle onfntoggle off

สคริปต์นี้ไม่ต้องการการเปิดใช้งานการเข้าถึง GUI นอกจากนี้ยังไม่ต้องออกจากระบบและกลับเข้ามาใหม่


สิ่งนี้ยังคงใช้งานได้ในเซียร่า ไม่ได้ทำงานที่นี่
Warren P

@WarrenP ปัญหานี้อาจกำลังตรัสรู้อยู่ github.com/nelsonjchen/fntoggle/issues/4
crazysim

4

คุณสามารถอ่านสถานะปัจจุบันได้ดังต่อไปนี้ (1 สำหรับปุ่ม F, 0 สำหรับสื่อ / ความสว่าง ฯลฯ )

defaults read "Apple Global Domain" "com.apple.keyboard.fnState"

คุณสามารถเขียนได้ แต่จะไม่เปลี่ยนแปลงจนกว่าคุณจะรีบูต (ฉันพยายามฆ่า Dock and Finder แทนไม่มีโชค)

defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "1" ## F1 F2 etc
defaults write "Apple Global Domain" "com.apple.keyboard.fnState" "0" ## Brightness/Media

ฉันสงสัยว่ามีใครบางคนที่มีความรู้เพิ่มเติมเกี่ยวกับสิ่งที่อ่านไฟล์ plist นี้สามารถเขียนสคริปต์เพื่อฆ่าและรีสตาร์ทสิ่งที่อ่าน plist นี้ซึ่งควรทำให้ยอมรับการเปลี่ยนแปลง


ขอบคุณนั่นคือกุญแจที่ถูกต้อง การเปลี่ยนมันโดยตรงดูเหมือนจะไม่เปลี่ยนพฤติกรรม
Jakub Roztocil

ไม่ช่วยแม้ว่าจะถูกรีบูต
Daniel

1

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

  1. สร้างบริการใหม่ใน Automator
  2. ลาก: "เรียกใช้สคริปต์ Apple
  3. ใน "การบริการที่ได้รับเลือก": เลือกไม่มีการป้อนข้อมูล
  4. วางรหัสนี้จากคำตอบอื่น :

    tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
    end tell
    tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
    end tell
    quit application "System Preferences" 
  5. บันทึกเป็น "yourname"

  6. เปิดการตั้งค่าระบบ→คีย์บอร์ด→ทางลัด
  7. ในเมนูด้านซ้ายเลือก: "บริการ"
  8. ทางด้านขวาเลื่อนลงมาจนถึงนายพลและกำหนดปุ่มลัดเฉพาะบริการของคุณฉันเลือก cmd + shift + L

  9. แค่นั้นแหละ! มันไม่เร็วมากหรืออะไร แต่คุณไม่ต้องเรียกใช้แอพใด ๆ หรือไปที่การตั้งค่าด้วยตัวคุณเอง

ภาคผนวก: ด้วย EL Capitan สิ่งนี้จะทำงานเฉพาะเมื่อ Automator อยู่ในโฟกัสมิฉะนั้น (เช่นถ้าคุณเรียกใช้สคริปต์ผ่านทางแป้นพิมพ์ลัด) คุณจะได้รับข้อความ "การกระทำ" Run AppleScript "พบข้อผิดพลาด"


0

ยินดีต้อนรับสู่ถามที่แตกต่างกัน! คุณโพสต์สิ่งนี้เป็นคำตอบซึ่งมีไว้สำหรับสิ่งที่ตอบคำถามที่ถามโดยตรงเท่านั้น รู้รอบบน Ask Different จะต้องเป็นมากกว่าแค่ลิงค์ มันไม่เป็นไรที่จะรวมลิงค์ แต่โปรดสรุปหรือตัดตอนมาในคำตอบ ความคิดคือการทำให้คำตอบยืนอยู่คนเดียว โปรดดูคำถามที่พบบ่อยสำหรับข้อมูลเพิ่มเติม ขอบคุณ
Nathan Greenstein

0

ให้คำตอบทั้งหมดที่ฉันใช้โซลูชันต่อไปนี้สำหรับโยเซมิตี

ด้วยการใช้ Automator ฉันสร้างแอพด้วยรหัสต่อไปนี้:

tell application "System Preferences"
reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"

บันทึกเพิ่มไปยังแอปพลิเคชัน ในการหลีกเลี่ยง "AppleScript Editor ไม่อนุญาตให้เข้าถึงการช่วยเหลือ" ให้ไปที่การตั้งค่าระบบ -> ความปลอดภัย & ความเป็นส่วนตัว -> ความเป็นส่วนตัวแตะ -> รายการการเข้าถึงและเพิ่มแอปของคุณ

ถ้าชอบฉันคุณต้องการทางลัดจากนั้นใน Automator สร้าง Apple Script ใหม่ด้วย Launch App แล้วเลือกแอปของคุณ จากนั้นกลับไปที่ System Preferences-> Keyboard-> Shortcut tabs-> Service entry และในตอนท้ายของรายการให้กำหนดทางลัดให้กับสคริปต์ของคุณ

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