KeyRemap4MacBook/オリジナルキーマッピングを設定する

KeyRemap4MacBook/オリジナルキーマッピングを設定する

バージョンと製造年月日

  • 2010-05-02
  • MacOS v10.6 Snow Leopard
  • KeyRemap4MacBook 6.5.0

2011-08現在バージョンは7.3.0であり、コンパイルしなくても簡単にオリジナルキーマッピングを追加できるようになっている。

以下は参考情報。

準備

まずXcodeをインストールします

ソースを手に入れる

まずKeyRemap4MacBookのソースコードをダウンロードしてくる。

2010-11-04現在

6.9.0のファイルが→http://pqrs.org/macosx/keyremap4macbook/source.html.jaから落とせます


以下過去のドキュメント

ダウンロードしてくるソースは 2010-05-02 現在で 6.5.0 のものではなくて 開発中のコード (tar.gz)と呼ばれるものか、リポジトリから取得してください。6.5.0ではコンパイルが通りません。

ソース置き場→http://pqrs.org/macosx/keyremap4macbook/source.html.ja

圧縮されているので解凍する。

自分のhome以下にsourceフォルダを作ってその中に解凍したKeyRemap4MacBookのソースをフォルダごと一式突っ込む

コンパイル確認

一回素でコンパイルしてみる。

make clean all

出来上がり。普通に通った。

試しにインストール

その場で

open KeyRemap4MacBook.pkg

とうちこめばインストーラーが起動する。

じゃんじゃんやっていけば普通に上書きインストールされる。 最後に再起動を促されるが、別にしなくてもその時点で反映されてるっぽ

設定とアプリは別に保存されているので、前回の設定がそのまま引き継がれる

設定

設定を編集してみる ドキュメントがほとんどないわけだが、サンプルとHPを参考にやってみる、基本的に言語で書かないといけないみたいなんだけど、キーを置き換えるだけ、みたいな簡単な定型スクリプトはXMLで書いておけば、コードを自動生成してくれるみたいだ。

そのXMLは

KeyRemap4MacBook-xxx/files/prefpane/checkbox.xml

なのでこいつを一応保存しておいて、新しく編集する

Sample KeyRemap4MacBook for developer という項目にもうそのままのサンプルがたくさん上がっているのでこいつを切り貼りして持ってくる。

このコード自体は

KeyRemap4MacBook-xxx/files/prefpane/include/sample.xml

ここに置いてある

単純な1対1のキーの割り当て

<autogen>--KeyToKey-- KeyCode::A, KeyCode::B</autogen>

仮想モデファイアキーへの割り当て

6.5.0以降のバージョンで仮想モデファイアキーというのが定義できるようになった。こいつはまったく新しいctrlキーみたいなもんで、既存の動きに影響を与えずにあらたなキーマッピングを得られるので非常に重宝する。

修飾するとき割り当てるとき
ModifierFlag::EXTRA1KeyCode::VK_MODIFIER_EXTRA1
ModifierFlag::EXTRA2KeyCode::VK_MODIFIER_EXTRA2
ModifierFlag::EXTRA3KeyCode::VK_MODIFIER_EXTRA3
ModifierFlag::EXTRA4KeyCode::VK_MODIFIER_EXTRA4
ModifierFlag::EXTRA5KeyCode::VK_MODIFIER_EXTRA5

これを普通のキー割り当てのように既存のキーに割り当てる。英数キーに割り当てて親指シフトのように使うには

<autogen>--KeyToKey-- KeyCode::JIS_EISUU, KeyCode::VK_MODIFIER_EXTRA1</autogen>

こうなる

今回やりたいのはMacBookの英数キーを押しながらesdxと押したらアローキーの上下左右になり afを押すとHomeとEndになるという動き

ポイントとしては英数キーはなんの働きでもない単なるプッシュスイッチとして動作させること。

そこで作者さんのtweetを眺めていたら。 12102016364 という風に仮想モデファイイアキーという、今までのどのキーでもないモデファイアキーを設定できるみたい

キー設定はこんな感じ

サンプルでいうKeyToModifierで英数キーにこの仮想モデファイヤを割り当ててから 仮想モデ+eとかのKey + Modifire to Keyの実装をすればよいのだな・・・ かなりすっきり開けたよ。

ということでXMLをつらつら組み上げてみる

/users/hoge/source/KeyRemap4MacBook-xxxxxxxxxxxxxxxx/files/prefpane/include/sample.xml

からいくつかぱくる。

まず英数をモデファイアに設定するために key to modifierの項目を見る

    <item>
      <name>KeyToKey (Standard)</name>
      <appendix>A to B (KeyToKey)</appendix>
      <appendix>S to SHIFT_L (KeyToModifier)</appendix>
      <appendix>SHIFT_L to Return (ModifierToKey)</appendix>
      <appendix>Option_L to Command_L</appendix>
      <sysctl>remap.samples_keytokey_standard</sysctl>
      <autogen>--KeyToKey-- KeyCode::A, KeyCode::B</autogen>
      <autogen>--KeyToKey-- KeyCode::S, KeyCode::SHIFT_L</autogen>
      <autogen>--KeyToKey-- KeyCode::SHIFT_L, KeyCode::RETURN</autogen>
      <autogen>--KeyToKey-- KeyCode::OPTION_L, KeyCode::COMMAND_L</autogen>
    </item>

ここから取り出すと

<autogen>--KeyToKey-- KeyCode::S, KeyCode::SHIFT_L</autogen>

これだこれを英数から仮想モデに書き換える 英数のキーコードは

KeyCode::JIS_EISUU

なので

<autogen>--KeyToKey-- KeyCode::JIS_EISUU, KeyCode::VK_MODIFIER_EXTRA1</autogen>

こうなるそしてここにコンビネーションを書き入れる ダイアモンドカーソルのサンプルから引っ張ってくると

        <item>
          <name>Control_L+WSAD to Up/Down/Left/Right</name>
          <sysctl>remap.diamond_cursor_controlL_wsad</sysctl>
          <autogen>--KeyToKey-- KeyCode::W, ModifierFlag::CONTROL_L, KeyCode::CURSOR_UP</autogen>
          <autogen>--KeyToKey-- KeyCode::S, ModifierFlag::CONTROL_L, KeyCode::CURSOR_DOWN</autogen>
          <autogen>--KeyToKey-- KeyCode::A, ModifierFlag::CONTROL_L, KeyCode::CURSOR_LEFT</autogen>
          <autogen>--KeyToKey-- KeyCode::D, ModifierFlag::CONTROL_L, KeyCode::CURSOR_RIGHT</autogen>
        </item>

これになると

書き換えると

        <item>
          <name>exmod1+EXSD to Up/Down/Left/Right</name>
          <sysctl>remap.diamond_cursor_exmod1_exsd</sysctl>
          <autogen>--KeyToKey-- KeyCode::E, ModifierFlag::EXTRA1, KeyCode::CURSOR_UP</autogen>
          <autogen>--KeyToKey-- KeyCode::X, ModifierFlag::EXTRA1, KeyCode::CURSOR_DOWN</autogen>
          <autogen>--KeyToKey-- KeyCode::S, ModifierFlag::EXTRA1, KeyCode::CURSOR_LEFT</autogen>
          <autogen>--KeyToKey-- KeyCode::D, ModifierFlag::EXTRA1, KeyCode::CURSOR_RIGHT</autogen>
        </item>

こうなるこれにさっきにモデファイ分もいれて

        <item>
          <name>exmod1+WXSD to Up/Down/Left/Right</name>
          <sysctl>remap.diamond_cursor_exmod1_exsd</sysctl>
          <autogen>--KeyToKey-- KeyCode::JIS_EISUU, KeyCode::VK_MODIFIER_EXTRA1</autogen>
          <autogen>--KeyToKey-- KeyCode::E, ModifierFlag::EXTRA1, KeyCode::CURSOR_UP</autogen>
          <autogen>--KeyToKey-- KeyCode::X, ModifierFlag::EXTRA1, KeyCode::CURSOR_DOWN</autogen>
          <autogen>--KeyToKey-- KeyCode::S, ModifierFlag::EXTRA1, KeyCode::CURSOR_LEFT</autogen>
          <autogen>--KeyToKey-- KeyCode::D, ModifierFlag::EXTRA1, KeyCode::CURSOR_RIGHT</autogen>
        </item>

できた! こいつをちゃんとしたXML階層にのっけて

<item>
  <name>Ore Mode</name>
  <list>
    <item>
      <name>exmod1+EXSD to Up/Down/Left/Right</name>
      <sysctl>remap.diamond_cursor_exmod1_exsd</sysctl>
      <autogen>--KeyToKey-- KeyCode::JIS_EISUU, KeyCode::VK_MODIFIER_EXTRA1</autogen>
      <autogen>--KeyToKey-- KeyCode::E, ModifierFlag::EXTRA1, KeyCode::CURSOR_UP</autogen>
      <autogen>--KeyToKey-- KeyCode::X, ModifierFlag::EXTRA1, KeyCode::CURSOR_DOWN</autogen>
      <autogen>--KeyToKey-- KeyCode::S, ModifierFlag::EXTRA1, KeyCode::CURSOR_LEFT</autogen>
      <autogen>--KeyToKey-- KeyCode::D, ModifierFlag::EXTRA1, KeyCode::CURSOR_RIGHT</autogen>
    </item>
  </list>
</item>

こうなる checkbox.xmlの最後にくっつけて保存してさっきのやりかたでコンパイルしてインストール、設定が一覧に現れるのでチェックすれば有効になる。

HomeとENDも さらにmod1+Aとmod1+Fのキーでhomeとendにも割り当てたいので改造する。 ここでのポイントはMacのHomeとEndがWindowsのHomeとEndのような動作をしないということだ。

MacのHomeとEndはWindow頭に移動とWindow末尾に移動という動作になっている。 行頭行末移動は

command + ←
command + →

というショートカットに割り当てられている。

なのでこいつをもってきて

<autogen>--KeyToKey-- KeyCode::A, ModifierFlag::EXTRA1, KeyCode::CURSOR_LEFT,  ModifierFlag::COMMAND_L</autogen>
<autogen>--KeyToKey-- KeyCode::F, ModifierFlag::EXTRA1, KeyCode::CURSOR_RIGHT,  ModifierFlag::COMMAND_L</autogen>

このようにする。

おまけ MacではcommandキーがWindowsでいうControlキーのような立場にあるわけだが慣れないので多用するコピペだけctrlに移植する。

<item>
  <name>copy paste winstyle</name>
  <sysctl>remap.copy_paste_winstyle</sysctl>
  <autogen>--KeyToKey-- KeyCode::C, ModifierFlag::CONTROL_L, KeyCode::C, ModifierFlag::COMMAND_L</autogen>
  <autogen>--KeyToKey-- KeyCode::V, ModifierFlag::CONTROL_L, KeyCode::V, ModifierFlag::COMMAND_L</autogen>
  <autogen>--KeyToKey-- KeyCode::X, ModifierFlag::CONTROL_L, KeyCode::X, ModifierFlag::COMMAND_L</autogen>
</item>

関連ページ

タグ

mac/keyremap4macbook/setting_own_key_mapping.txt · 最終更新: 2012-07-04 22:08 by ore