Переключите «Использовать все F1, F2 как стандартные ключи» через скрипт

25

Я очень часто переключаю настройку «Использовать все F1, F2 как стандартные клавиши» и хотел бы автоматизировать ее с помощью скрипта (или сочетания клавиш). Является ли это возможным? Я попытался Google правильные аргументы, defaults write ...но безуспешно.

Настройки FN


Обновление: я закончил тем, что создал https://github.com/jkbrzt/macos-fn-toggle на основе ответов здесь.

Обновление II: теперь также есть - https://github.com/Pyroh/Fluor - действительно хорошее приложение menubar, которое позволяет автоматически изменять поведение клавиш 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, но я не знаю, как применить изменения без выхода и повторного входа.

LRI
источник
4
Я упаковал этот скрипт как приложение, использующее Automator, чтобы его можно было быстро запустить из Spotlight: github.com/jkbr/macos-fn-toggle
Jakub Roztocil
@jkbr Ваше приложение на github - это именно то, что я искал. Благодарность!
mdwhatcott
1
Вы также можете сохранить скрипт как приложение из AppleScript Editor. Просто вставьте скрипт в редактор AppleScript, нажмите ⌘S и установите формат приложения.
Lri
В качестве еще одной альтернативы, в automator создайте новую «службу», добавьте команду «Запустить Applescript» и вставьте ее туда, где написано (* Ваш сценарий идет сюда *). Сохраните, а затем в сервисное меню во всех приложениях войдет фн :)
Spyder
2
На Mavericks вы получаете сообщение об ошибке: «Редактору AppleScript не разрешен вспомогательный доступ». Поэтому вам нужно перейти в раздел «Безопасность и конфиденциальность» на вкладке «Конфиденциальность», выбрать «Доступность» и активировать свое приложение. Вы должны будете предоставить пароль администратора, чтобы открыть замок.
10

Я не знаю, что такое скрипт, но с помощью некоторого удобного реверс-инжиниринга и Googling я сделал это, поскольку мне не нравились существующие графические элементы AppleScript, которые там были:

https://github.com/nelsonjchen/fntoggle

Скомпилированный двоичный файл (добавьте в свой путь PATH или, если вы не знаете, что это такое /usr/local/bin/): https://github.com/nelsonjchen/fntoggle/releases

Вызовите его из чего угодно (ControlPlane, Automator shи т. Д.), Запустив fntoggle onили fntoggle off.

Этот скрипт не требует, чтобы доступность GUI была включена. Это также не требует выхода из системы и обратно.

crazysim
источник
Это все еще работает в Сьерре? Не работает здесь.
Уоррен Р
@WarrenP Эта проблема может быть поучительной. github.com/nelsonjchen/fntoggle/issues/4
crazysim
Благодарность! Работает на Мохаве 10.14.6
ацтак
4

Вы можете прочитать текущее состояние со следующим. (1 для F-клавиш, 0 для медиа / яркости и т. Д.)

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

Вы можете написать это, однако это не изменится до перезагрузки. (Вместо этого я попытался убить Док и Искателя)

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, что должно заставить его признать изменение.

user2245192
источник
Спасибо, это правильный ключ. Однако, если изменить его напрямую, поведение, похоже, не изменится.
Якуб Розтоцил
не помогает, хотя перезагрузился
Даниил
1

На самом деле, вам не нужно запускать какие-либо приложения с помощью spotlight или чего-то еще, лучший способ, на мой взгляд, заключается в следующем:

  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 »обнаружило ошибку».

Teaman
источник
0

Некоторые AppleScript, которые могут помочь: Applescript для переключения клавиш F1-F11 в качестве функциональных клавиш - Форумы MacRumors


источник
Добро пожаловать, чтобы спросить другого! Вы опубликовали это как ответ, который предназначен только для тех вещей, которые прямо отвечают на заданный вопрос. Ответы на разные вопросы должны быть чем-то большим, чем просто ссылка. Это нормально, чтобы включить ссылку, но, пожалуйста, суммируйте или извлеките ее в ответе. Идея состоит в том, чтобы сделать ответ самостоятельно. Пожалуйста, посмотрите на часто задаваемые вопросы для получения дополнительной информации. Спасибо.
Натан Гринштейн
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 создайте новый Apple Script с Launch App и выберите свое приложение. Затем вернитесь в «Системные настройки» -> «Клавиатура» -> «Ярлыки» -> «Служба» и в конце списка назначьте ярлык вашему сценарию.

Rwanou
источник