かすみん日記

暇なときに何か喋ります

【Mac】特定のアプリのみFnキーを標準のFnキーとして使用する【Karabiner】

vscodeでのみ、fnキーで装飾しないでもそのままF5とかF12とかを使えるようにしたい。

Mac OSだと基本的にファンクションキーは使わないが、vscodeマイクロソフト製なので、、

環境

目的

Mac OSのシステム環境設定では、以下のように設定しています:

  • 基本的にfnキーは画面の輝度調整や音量コントロールのために使用する
  • 本来?のファンクションキーとしての動作は、fnキーと同時押しで有効にする

でも、一部アプリではファンクションキーに本来の力を取り戻して欲しいんじゃ!

Karabiner先輩「呼んだ?」

Karabinerの設定

仕様

とりあえず例として、vscodeというアプリがアクティブの時のみ、以下の動作をするような設定を作りました。

  • F1〜F12キー単体押しで、標準のファンクションキーの動作をする
  • F1〜F12キーをfnキーと同時に押したときは、輝度や音量調整などの動作をする

あと、システム環境設定のチェックありなしに関わらずこの動作します。 チェックしてても動作は反転しないです。 反転の挙動がお望みなら、設定ファイルの方でうまいこと逆の動作になるように修正して下さい。

設定の適用の仕方

作った設定のソースコードは長いので記事の最後に貼っています。

このソースコードを、以下ディレクトリに適当な名前で保存します。拡張子は .json にして下さい。

~/.config/karabiner/assets/complex_modifications/

設定ファイルを配置できたら、Karabiner-Elementsアプリの「Complex Modification」タブを開いて「Add rule」ボタンを押します。

そうしたらさっき追加した設定が表示されているので、「Enable」ボタンを押します。

以上で適用完了です。テストして下さい。

ソースコード

ソース中の com.microsoft.VSCode の部分を書き換えれば任意のアプリのみ適用するようにできます。 カンマ区切りで複数アプリも指定できます。

"bundle_identifiers": ["com.microsoft.VSCode", "com.apple.Safari"]

アプリのbundle identifiers(識別名的なやつ)は、Karabiner-EventViewerアプリで調べられます。


以下が設定のソースコードです。長いので改行ためらっていてキモいかもですが自分で整形して下さい。

{
    "title": "vscode用",
    "rules": [
        {
            "description": "vscode:fnキーを標準のfnキーとして使う(F1〜F12)",
            "manipulators": [
                {
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f1"},
                    "to":  [{"key_code": "f1"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f2"},
                    "to":  [{"key_code": "f2"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f3"},
                    "to":  [{"key_code": "f3"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f4"},
                    "to":  [{"key_code": "f4"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f5"},
                    "to":  [{"key_code": "f5"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f6"},
                    "to":  [{"key_code": "f6"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f7"},
                    "to":  [{"key_code": "f7"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f8"},
                    "to":  [{"key_code": "f8"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f9"},
                    "to":  [{"key_code": "f9"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f10"},
                    "to":  [{"key_code": "f10"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f11"},
                    "to":  [{"key_code": "f11"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f12"},
                    "to":  [{"key_code": "f12"}]
                },

                {
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f1", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "display_brightness_decrement"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f2", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "display_brightness_increment"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f3", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"key_code": "mission_control"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f4", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"key_code": "launchpad"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f5", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"key_code": "illumination_decrement"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f6", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"key_code": "illumination_increment"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f7", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "rewind"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f8", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "play_or_pause"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f9", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "fast_forward"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f10", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "mute"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f11", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "volume_decrement"}]
                },{
                    "type": "basic",
                    "conditions": [{"bundle_identifiers": ["com.microsoft.VSCode"], "type": "frontmost_application_if"}],
                    "from": {"key_code": "f12", "modifiers": {"mandatory": ["fn"]}},
                    "to":  [{"consumer_key_code": "volume_increment"}]
                }
            ]
        }
    ]
}

以上。

参考

公式ドキュメント:

karabiner-elements.pqrs.org

とにかく日本語:

qiita.com