通过脚本切换“将所有F1,F2用作标准键”


25

我经常切换“将所有F1,F2用作标准键”设置,并希望通过脚本(或键盘快捷键)使其自动化。可能吗?我曾尝试向Google提出正确的论据,defaults write ...但未成功。

fn设定


更新:我最终根据此处的答案创建了https://github.com/jkbrzt/macos-fn-toggle

更新II:现在还提供了一个https://github.com/Pyroh/Fluor-一个非常漂亮的菜单栏应用程序,该程序使您可以根据活动的应用程序自动更改键盘上的fn键的行为。

Answers:


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 2013年

@jkbr您在github上的应用正是我正在寻找的东西。谢谢!
mdwhatcott

1
您还可以通过AppleScript编辑器将脚本另存为应用程序。只需将脚本粘贴到AppleScript编辑器,按⌘S,然后将格式设置为application。
Lri 2013年

作为另一种选择,在automator中创建一个新的“服务”,添加“运行Applescript”命令并将其粘贴到其显示的位置(*您的脚本在此处*)。保存,然后所有应用程序中的服务菜单将包括fn :)
Spyder 2014年

2
在Mavericks上,您将收到类似以下的错误:“ AppleScript编辑器不允许进行辅助访问。” 因此,您必须转到“隐私”选项卡中的“安全性和隐私”,选择“可访问性”并启用您的应用程序。您必须提供管理员密码才能打开锁。

9

我不了解脚本,但是通过一些方便的逆向工程和谷歌搜索,我做到了这一点,因为我不喜欢现有的AppleScript GUI东西:

https://github.com/nelsonjchen/fntoggle

编译的二进制文件(放入您的PATH或如果您不知道那是什么/usr/local/bin/):https : //github.com/nelsonjchen/fntoggle/releases

sh通过运行fntoggle on或从任何对象(ControlPlane,Automator 等)中调用它fntoggle off

此脚本不需要打开GUI可访问性。它还不需要注销并重新登录。


这在塞拉仍然有效吗?在这里不工作。
沃伦·P

@WarrenP这个问题可能会启发人。github.com/nelsonjchen/fntoggle/issues/4
crazysim '16

4

您可以使用以下内容读取当前状态。(1用于F键,0用于媒体/亮度等)

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

您可以编写它,但是直到重新启动它才会改变。(我试过杀死Dock和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 2014年

重启后仍无济于事
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. 另存为“您的名字”

  6. 打开系统偏好设置→键盘→快捷方式
  7. 在左侧菜单中选择:“服务”
  8. 在右侧,一直向下滚动到“常规”,然后为您的服务分配一些唯一的热键,我选择“ cmd + shift + L”

  9. 而已!它不是很快,也没有什么,但是您不必运行任何应用程序或自行转到“首选项”。

附录:使用EL Capitan时,此功能仅在Automator聚焦时有效,否则(例如,如果您通过键盘快捷键调用脚本)将收到“操作“运行AppleScript”遇到错误”消息。



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编辑器进行辅助访问。”,请转到系统偏好设置->安全和隐私->隐私点击->可访问性条目,然后添加您的应用程序。

如果喜欢我,您想要一个快捷方式,然后在Automator中使用Launch App创建一个新的Apple Script并选择您的应用。然后返回到“系统偏好设置”->“键盘”->“快捷方式”选项卡->“服务”条目,然后在列表末尾为脚本分配快捷方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.