search
LoginSignup
6
Help us understand the problem. What are the problem?

posted at

Karabiner 代替・Mac キーボードカスタマイズ (macOS Sierra 以降)

これはなに

PC 用キーボードを Mac で使う際などのカスタマイズユーティリティとしては Karabiner-Elements が有名で、使用できる状況であれば Karabiner を入れておしまいだが、今回のものは何らかの理由で使用できない場合の代替手段。
ただし、この方法で可能なのは 「○キーを△キーとして認識」等の単純な1対1の置き換えのみ で「ctrl + w を ↑ として認識」等の高度な設定は行えないため、そういった場合は残念ながら代替手段にはなりえない。
自分の環境では macOS Ventura にアップデートした際 Karabiner がどうやっても動かなくなりこの方法を使用した。

仕組み

別途アプリケーションの導入などは不要で、macOS Sierra 以降は OS 標準でキーマップをカスタマイズする「hidutil」というコマンドが用意されているので、それ用の設定ファイルを準備するだけで良い。
hidutil コマンドによるキーマップ変更は再起動すると元に戻ってしまうため OS 起動時に変更を行う仕組みを作る必要があるが、それもシステムライブラリの「Launch Agents」に実行内容を記した XML ファイルを置くだけで完了する。

実際の手順

XML ジェネレータが公開されているので hidutil key remapping generator for MacOS で編集した内容を UTF-8 / LF のテキストファイル「com.local.KeyRemapping.plist」として作成し「~/Library/LaunchAgents/com.local.KeyRemapping.plist」に置けば準備完了。
元に戻したい場合は「com.local.KeyRemapping.plist」を削除。

日本語キーボード特有のキー

hidutil key remapping generator for MacOS には残念ながら日本語 PC キーボード用のキーが含まれないため「無変換」「変換」「カタカナひらがな」については自分で記述する必要がある。

キー
無変換 0x70000008B
変換 0x70000008A
カタカナひらがな 0x700000088

※「半角/全角」キーは「Controls and symbols > grave_accent_and_tilde」

おまけ:一般的な PC → Mac 用キーボード設定

下記の変換を行う場合の設定。

  • Windows キー → 左Option
  • Alt → 左Command
  • 無変換 → 左Command
  • 変換 → 右Command
  • カタカナひらがな → 右Command
  • Application (メニューアイコンのキー) → 右Option
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.KeyRemapping</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[
            {
              "HIDKeyboardModifierMappingSrc": 0x7000000E3,
              "HIDKeyboardModifierMappingDst": 0x7000000E2
            },            {
              "HIDKeyboardModifierMappingSrc": 0x7000000E2,
              "HIDKeyboardModifierMappingDst": 0x7000000E3
            },
            {
              "HIDKeyboardModifierMappingSrc": 0x70000008B,
              "HIDKeyboardModifierMappingDst": 0x7000000E3
            },
            {
              "HIDKeyboardModifierMappingSrc": 0x70000008A,
              "HIDKeyboardModifierMappingDst": 0x7000000E7
            },
            {
              "HIDKeyboardModifierMappingSrc": 0x700000088,
              "HIDKeyboardModifierMappingDst": 0x7000000E7
            },
            {
              "HIDKeyboardModifierMappingSrc": 0x700000065,
              "HIDKeyboardModifierMappingDst": 0x7000000E6
            }
        ]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6
Help us understand the problem. What are the problem?