macOS Sierra でキー入力のリマップをする方法

macOS Sierra でキー入力のリマップをする方法

Clock Icon2017.04.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Sierra でのキーリマップ

macOS を Sierra にアップグレードしてからキーボードカスタマイズツールの Karabiner が使えなくなり、徐々にストレスが溜まっています。
私が設定したいキーのリマップは以下の通りです。

  • ctrl + m to return
  • ctrl + p to
  • ctrl + n to
  • ctrl + f to
  • ctrl + b to

色々調べているうちに今回紹介するものにたどり着いたのですが、結論から言うと 上記のリマップは実現できません でした。
しかし、なかなか有用な情報であったためご紹介しようと思います。

Technical Note TN2450

Apple Developer Technical Note TN2450 に Sierra でのキーリマップ方法について詳しく書かれています。
スクリプトによる方法とプログラムによる方法が書かれていますが、今回はスクリプトによる方法を紹介します。

hidutil コマンド

スクリプトでキーリマップを行うには hidutil コマンドを使用します。
HID は Human Interface Device の略らしく、マンマシンインターフェースに関する処理を実行するコマンドのようです。
また、このコマンドが使用できるのは macOS Sierra からとなります。

キーボードの AB にリマップするコマンドは以下の通りです。

$ hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000004,"HIDKeyboardModifierMappingDst":0x700000005}]}'

hidutil property --set の後に項目を指定します。
UserKeyMapping の値として配列を指定し、その要素は HIDKeyboardModifierMappingSrcHIDKeyboardModifierMappingDst のペアとなっています。
前者がリマップしたい元のキー、後者がリマップしたい先のキーとなります。 0x700000004 がキー A を表し、0x700000005 がキー B を表します。

このコマンドを実行した後に A を入力すると、入力結果は B となります。

空の配列を指定すると設定がクリアされるので、気軽に色々と試してみてください。

$ hidutil property --set '{"UserKeyMapping":[]}'

それぞれのキーの値は Technical Note の一番下の表に書かれています。
return0x700000028, 左の command0x7000000e3 など。

制限

この方法では複数のキー入力を 1 つのキーに割り当てることができません。
よって最初に紹介した私の設定したいキーリマップは実現不可能となっています。
あくまで 1 つのキーを他のキーに割り当てる方法となっていますが、この機能で十分という方は利用してみてはいかがでしょうか。

リンク

ミレニアム・ファルコン製作日記 #66

66 号 表紙

mfd_66_1

パーツ

mfd_66_2

mfd_66_3

mfd_66_4

成果

mfd_66_5

mfd_66_6

今回の作業は以下の 3 つでした。

  • パーツを集める
  • 通路プレートを取り付ける
  • 上部外殻プレートを取り付ける

とうとう始まりました、上部外殻プレートの取り付け。
フレームやプレートに関する作業は、いかにも 模型組み立ててる感 があって好きです。
今回は 19 個のパーツをフレームに取り付けました。
1 つのプレートに対し、平均 5 本のビスを使用して丁寧に留めていきました。
トータル 1.5 時間くらいかかりました。
作りごたえがあり、満足しています。

特報

来ました!
エピソード 8 のトレーラー。
公開日は 2017/12/15 (金)
祭りの始まりです。

「スター・ウォーズ/最後のジェダイ」特報

それではまた次回。

May the Force be with you!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.