Используйте Caps-Lock, чтобы заблокировать клавишу fn, или другой способ заблокировать клавишу fn?

Чего я хочу добиться, так это просто:

  • caps lockon = fnзаблокировано ( используйте функциональные клавиши ).
  • caps lockвыкл = fnразблокировать ( использовать мультимедийные клавиши ).

Я нашел пару тем по этой проблеме, но их решения мне не помогли:

  • Флажок / снятие флажка с опции «Использовать клавиши fn по умолчанию» на панели настроек клавиатуры — это то, чего я хочу добиться при нажатии / отпускании клавиши caps lock.
  • Другие решения, такие как программа Functionflip или инструменты переназначения клавиатуры, такие как Karabiner , не кажутся предложениями для решения моей проблемы.

Знаете ли вы программы или решения, которые могут достичь этого?

Если не:

  • Можно ли назначить программу на caps lockклавишу? Как?
  • Могу ли я переключить параметр на панели настроек клавиатуры с помощью скрипта?

Ответы (2)

Чтобы ответить на последний пункт в вашем сообщении « Могу ли я переключить параметр на панели настроек клавиатуры с помощью сценария? », Вот код AppleScript , который будет переключать состояние «Использовать все клавиши F1, F2 и т. д. в качестве стандарта». функциональные клавиши» на вкладке «Клавиатура» в «Системных настройках клавиатуры».

tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.keyboard"
    reveal anchor "keyboardTab" of pane id "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"

Примечание. Этот код был протестирован под OS X 10.8.5. Возможно, его потребуется настроить для более поздних версий OS X.

Вы можете использовать этот код в приложении AppleScript, которое можно разместить в Dock, или в рабочем процессе службы Automator, которому можно назначить сочетание клавиш и т. д. Если вам нужна помощь, просто спросите.

На самом деле, если вы все равно используете Karabiner Elements , есть более простой способ добиться этого:

Хотя это довольно смесь «миров» (Karabiner/shell/GUI), его прелесть в том, что вам не нужны никакие другие приложения, чтобы получить его «ярлык» ;-)

{ "parameters": {
          "basic.to_delayed_action_delay_milliseconds": 1000},
"from": {
          "key_code": "return_or_enter",
          "modifiers": {
                "mandatory": ["control", "shift" ] }
        },
 "to": [{"shell_command": "open -g /System/Library/¬ 
                           PreferencePanes/Keyboard.prefPane/"
                              }],
 "to_delayed_action": {
       "to_if_invoked": [                     ___
            {"key_code": "tab"},                 |   These key-codes
            {"key_code": "tab"},                 |   can be replaced
            {"key_code": "tab"},                 |   by a single osa-
            {"key_code": "tab"},                 |   script, more ele-
            {"key_code": "tab"},                 |   gantly, listed
            {"key_code": "spacebar"},            |   below !         *)
            {"key_code": "q",                    |   
             "modifiers": ["command"]},       ___| < (Easier to handle)
            {"key_code": "escape"}] },
 "type": "basic"
}
 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

(* 'tell application \"System Events\" to tell process ¬
    \"System Preferences\"\n click checkbox 1 of tab group 1 ¬
    of window 1\n end tell\n quit application \"System Preferences\"'

Как видите, Системные настройки Клавиатура открывается командой оболочки, которая требует «время ожидания» для следующих кодов клавиш (миллисекунд: 1000).

Я не нашел сочетания клавиш, чтобы добраться до флажка, поэтому он перемещается по 5 «вкладкам», одному «пробелу» (= щелчок), закрывает предварительную панель и устанавливает окончательный «экран» (без него моя система реагирует с задержка).
(Я добавил дополнительный, фактически часть AppleScript 1-го ответа, но адаптированный: \nдля разрывов строк, \"для специальных клавиш.)

Я установил ярлык «Ctrl-Shift-Enter», вы можете использовать s.th. else …
(«caps_lock» в EventViewer отправляет либо key_down, либо key_up — нажмите дважды, чтобы изменить состояние!)

Этот код можно вставить в ваш karabiner.json вручную или импортировать как «сложную модификацию», для которой требуется «заголовок: > правила: > описание: > манипуляторы:» -framework (перерабатывать существующий).