Step 1

Launchpadを開いてください。(もしくは、「 アプリケーション」フォルダをFinderで開いてください。)

そして、Karabinerをクリックしてください。

launchpad

Note KeyRemap4MacBook 7.8.0、またはそれ以前のバージョンを使用している場合、設定画面はシステム環境設定にあります。

Step 2

アクセシビリティ機能へのアクセスの確認ダイアログが表示されるので、「"システム環境設定"を開く」をクリックしてください。

そして、Karabiner_AXNotifierを選択します。

Step 3

お好みの設定を有効にしてください。

Karabinerは初期状態だとシステム環境設定で指定されたキーリピート値を用います。

そのため、「システム環境設定>キーボード」でキーリピート値の設定をしてください。

キーリピート値の上書き

より高速なキーリピート値を使いたい場合、Karabinerでキーリピート値を上書きすることが出来ます。
「Overwrite the key repeat values of system」を有効にして、パラメータを調整してください。

メニューバーから終了してください。

quit

「Misc & Uninstall」タブの「launch uninstaller」ボタンを押してください。

「Misc & Uninstall」タブで最新版への更新が出来ます。

もし最新のベータ版を使う場合は、「Check for updates including beta versions」ボタンを使ってください。

AXNotifierは以下のイベントを観察し、Karabinerに通知します。

  • アクティブなアプリケーションの変更。
  • フォーカスされたウィンドウのタイトル(window name)の変更。
  • フォーカスされたUIエレメントのロール(AXTextArea、AXButtonなど)の変更。

これにより、次の設定を行うことができます。

  • 特定のアプリで有効な設定。(例: ターミナルでコマンドキーを変更する。)
  • 特定のウィンドウタイトルで有効な設定。(例: Google ChromeのGmailでcommand-wを無効にする。)
  • 特定のUIエレメントのロールで有効な設定。(例: テキスト編集中でない場合はhjklキーをカーソルキーにする。)

アクセシビリティ機能の使用

AXNotifierは、ウィンドウタイトルとUIエレメントのロールの監視を行うために、アクセシビリティ機能へのアクセスを要求します。

もし、これらを監視する必要がなければ、アクセシビリティ機能へのアクセスを拒否してもかまいません。
「Do not show this message again」にチェックを入れてください。

AXNotifierを使っている便利な設定

  • Change command key to control key in RDC.
  • Disable Close Tab shortcut (command-w) on Gmail.
  • Use "hjkl" keys as arrow keys if you are not editing text.

AXNotifierを使った設定の作り方

EventViewerでキーボードやマウスのイベントを確認することが出来ます。
メニューからEventViewerを起動してください。

「private.xml」にて設定を追加することが出来ます。

  1. 「Misc & Uninstall」タブの「Open private.xml」を押してください。
  2. Finderが開きます。
  3. private.xmlをテキストエディタで開きます。
  4. ファイルの中身をprivate.xmlの内容に変更します。
  5. 「Change key」タブの「Reload XML」ボタンを押してください。
  6. 新しい設定が追加されました。
  7. 追加された設定を有効にすると、新しい設定が適用されます。
  8. private.xmlの中身を好きなように変更して、XMLを再読み込みし、新しい設定を有効にしてください。

高度な使用方法: 既存の設定を読み込まないようにする

「Use prepared settings」をオフにすることで、既存の設定を読み込まないようにすることが出来ます。

更に、<include>タグを用いて、既存の設定の一部分だけをprivate.xmlから読み込むことも出来ます。
checkbox.xml中から、読み込みたい行をprivate.xmlにコピーしてください。

例えば、このprivate.xmlでは「Launcher Mode v2」と「Mouse Keys Mode」を読み込みます。

<?xml version="1.0"?>
<root>
  <include once="true" path="{{ ENV_Karabiner_Resources }}/include/checkbox/launcher_mode.xml" />
  <include once="true" path="{{ ENV_Karabiner_Resources }}/include/checkbox/mouse_keys.xml" />
</root>

Karabinerは全く設定をしない場合でも、以下の変更を行います。

接続されている全てのキーボードで修飾キーの状態を共有します

もし複数のキーボードを使っている場合、修飾キーの状態を全てのキーボードで共有します。
例えば、キーボード1でシフトキーを押して、キーボード2でスペースキーを押した場合、シフト+スペースが送信されます。

fnキーとの組み合わせを追加します

Karabinerはfnキーとの組み合わせのショートカットを追加します。

Fn-Arrow keys:

Key combinationResult
Fn-Up ArrowPageUp
Fn-Down ArrowPageDown
Fn-Left ArrowHome
Fn-Right ArrowEnd

Fn-Return, Fn-Delete:

Key combinationResult
Fn-ReturnEnter
Fn-DeleteForward Delete

入力イベントを変更する方法はいくつかあります。

入力イベントは各々の方法で、次の順番で変更されます。

  1. Seil
  2. システム環境設定 > キーボード > 修飾キー...
  3. Karabiner

例1

もし以下の設定がされていた場合、

  1. Seil設定: コマンドキー -> オプションキー
  2. システム環境設定: オプションキー -> シフトキー
  3. Karabiner設定: シフトキー -> コントロールキー

コマンドキーコントロールキーになります。

例2

通常のキーはSeilとKarabinerで変更されます。

  1. Seil 設定: escapeキー -> tabキー
  2. Karabiner設定: tabキー -> deleteキー

escapeキーはSeilとKarabinerにより、deleteキーになります。
tabキーもKarabinerにより、deleteキーになります。

Karabinerにおける複数の設定

Karabinerでは設定を再帰的に反映することは出来ません。
一つの設定が反映された後は他の設定は無視されます。

  1. Karabiner設定: escapeキー -> deleteキー
  2. Karabiner設定: deleteキー -> spaceキー

escapeキーdeleteキーになります。(space keyにはなりません。)

multi-touch extensionというアプリケーションが付属しています。
MacBookやMagic Mouse、Magic Trackpadなどのマルチタッチデバイスと一緒に使います。

このアプリケーションは、マルチタッチデバイスに指が触れている間だけ特定の設定を有効にします。
例えば、指が2本触れているときだけ、Complete Vi Modeを有効にするなどです。

ThumbSenseはマルチタッチ拡張が提供する機能の一つです。

マルチタッチ拡張の使い方

  1. Karabinerの設定画面の「Misc & Uninstall」タブから「Launch "multi-touch extension"」をクリックします。
  2. アプリケーションが立ち上がるのでDockからアイコンをクリックします。
  3. 設定画面が開くので、必要に応じてチェックボックスやテキストの中身を変更してください。
    notsave.thumbsenseなどの設定名はXMLの<identifier>の値です。

メニューバーから複数の設定を使い分けることができます。

profiles

複数の設定の使い方

  1. 設定の追加を「Profiles」タブから行ないます。
  2. メニューバーから設定を切り替えます。

    profiles

  3. 切り替えた設定用にリマッピングの設定を行います。

ショートカットで設定を切り替える

設定で「switch profile」と検索することで、fn+1、fn+2、fn+3、fn+4で設定を切り替える設定が見つかります。


もし独自のショートカットを使いたい場合は、以下がprivate.xmlの例となります。

<?xml version="1.0"?>
<root>
  <item>
    <name>Switch Profile</name>
    <identifier>private.switch_profile</identifier>
    <autogen>__KeyToKey__ KeyCode::KEY_1, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile0</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_2, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile1</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_3, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile2</autogen>
    <autogen>__KeyToKey__ KeyCode::KEY_4, ModifierFlag::FN, KeyCode::VK_OPEN_URL_APP_Karabiner_Profile3</autogen>
  </item>
</root>

Karabinerはコマンドラインインターフェースを提供しています。(karabinerコマンド)

  • 変更した設定の一覧を取得できます。
  • 設定の有効化/無効化をできます。
  • 複数の設定の切り替えをできます。
  • 設定のエクスポートが出来ます。

使い方の表示方法

karabinerコマンドを引数なしで実行します。

$ /Applications/Karabiner.app/Contents/Library/bin/karabiner
Usage:
  Profile operations:
    $ karabiner list
    $ karabiner select INDEX (INDEX starts at 0)
    $ karabiner select_by_name NAME
    $ karabiner selected
    $ karabiner append NAME
    $ karabiner rename INDEX NEWNAME (INDEX starts at 0)
    $ karabiner delete INDEX (INDEX starts at 0)
  Settings:
    $ karabiner set IDENTIFIER VALUE
    $ karabiner enable IDENTIFIER (alias of set IDENTIFIER 1)
    $ karabiner disable IDENTIFIER (alias of set IDENTIFIER 0)
    $ karabiner toggle IDENTIFIER
    $ karabiner changed
  Others:
    $ karabiner export
    $ karabiner reloadxml
    $ karabiner relaunch
    $ karabiner be_careful_to_use__clear_all_values_by_name PROFILE_NAME

Examples:
  $ karabiner list
  $ karabiner select 1
  $ karabiner select_by_name NewItem
  $ karabiner selected
  $ karabiner append "For external keyboard"
  $ karabiner rename 1 "Empty Setting"
  $ karabiner delete 1

  $ karabiner set repeat.wait 30
  $ karabiner enable remap.shiftL2commandL
  $ karabiner disable remap.shiftL2commandL
  $ karabiner toggle remap.shiftL2commandL
  $ karabiner changed

  $ karabiner export
  $ karabiner reloadxml
  $ karabiner relaunch
  $ karabiner be_careful_to_use__clear_all_values_by_name NewItem

list、selectオプションについて

複数の設定の切り替えをできます。

  1. listオプションで複数の設定の一覧を取得します。
    $ /Applications/Karabiner.app/Contents/Library/bin/karabiner list
    0: Default
    1: Don't Remap
    2: Empty
    3: Test
    
  2. selectオプションで切り替えを行ないます。
    数字のオプションは設定のインデックスです。これは0から始まります。
    $ /Applications/Karabiner.app/Contents/Library/bin/karabiner select 1
    

exportオプションについて

  1. exportオプションで設定のエクスポートを行います。
    出力は、シェルスクリプトです。
    $ /Applications/Karabiner.app/Contents/Library/bin/karabiner export > ~/Desktop/karabiner-import.sh
    
  2. ターミナルからインポートを行うことができます。
    $ sh ~/Desktop/karabiner-import.sh
    ...........................................
    

Reset configuration before import

karabiner-import.shは設定をリセットしません。
インポートをする前に有効にしていた設定はインポート後も有効になります。

インポート前に設定をリセットしたい場合はbe_careful_to_use__clear_all_values_by_nameをkarabiner-import.shの前に実行してください。

$ /Applications/Karabiner.app/Contents/Library/bin/karabiner \
     be_careful_to_use__clear_all_values_by_name \
     YOUR_PROFILE_NAME
$ sh ~/Desktop/karabiner-import.sh

Karabinerの設定は以下の場所に保存されています。

Home > Library > Preferences > org.pqrs.Karabiner.plist

通常のキーイベントはEventViewerで確認することが出来ます。
しかし、Command+Tabやミッションコントロールキーなどのシステム側で処理されるキーについてはEventViewerで確認することが出来ません。

これらのシステムキーイベントを表示するために、デバッグモードを有効にする必要があります。

  1. Karabinerの設定のMisc & Uninstallタブの「Toggle Debug Mode」ボタンを押します。
    そして、パスワードを入力します。

  2. コンソールアプリでデバッグログを確認できます。

    コンソールアプリを「Launch Console.app」ボタンから起動してください。

    キーを押すと、デバッグログが追加されます。
    ログを選択してコピーします。

    テキストエディタに貼り付けて中身を確認します。

    Mar 21 22:19:52 rapeseed kernel[0]: org.pqrs.Karabiner --Debug-- KeyboardEventCallback [ caught]: eventType 12, flags 0x80100008, key 0x0037, kbdType  43, repeat = 0
    Mar 21 22:19:52 rapeseed kernel[0]: org.pqrs.Karabiner --Debug-- KeyboardEventCallback [sending]: eventType 12, flags 0x00040001, key 0x003b, kbdType  43, repeat = 0
    
  3. 「Toggle Debug Mode」ボタンでデバッグモードを終了してください。
    デバックモードを終了するときはパスワードは不要です。

デバッグモードの結果を利用する

KeyCode.dataを使って、「key 0x0037」などの生のキーコードを「KeyCode::COMMAND_L」の形式に変更できます。

もしくは、「KeyCode::RawValue::0x0037」をprivate.xmlで使用します。