25
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

macOS Sierra + Karabiner-Elementsメモ

Last updated at Posted at 2016-10-22

中古の New MacBook (Early 2015) を手に入れた。
キーボードはJIS。

諸事情によりmacOS Sierraにアップグレードした後で KarabinerがmacOS Sierraでは使えなくなっている事を知り、Karabiner-Elementsさんと仲良くすることになった話、というか諸々のメモ。

元々OS X Mavericksが入ってたんだけど、これまで使っていたMacBook Air (Mid 2011; El Capitan) の中身をTime Machine経由で移そうとしたら、移行先のOSが移行元より古いバージョンだと移行できない、と言われてEl Capitanを入れようとして、ところが以前MBAにEl Capitanをインストールする時に作ったインストーラ入りUSBメモリが壊れてる判定されたので諦めてSierraをですね

なぜそもそもKarabiner(ないしKarabiner-Element)を?

元々USキーでAの左にctrlを持ってくる為にKarabinerを使ってたクチなのだけれど、JISキーボードではそれは不要。ではなぜそもそもKarabiner(ないしKarabiner-Element)を?

JISキーボードの左commandって打ちにくい。12-inchのコンパクトな筐体はパームレストが狭いから特に。かといって右commandを使うようには自分の脳の配線が出来ていない。
せめて英数キーあたりの位置に左commandキーがあってほしい。

英数キーを左commandにして、さらに言えば、かな変換・無変換のトグルのためにcommand-spaceとかするのは面倒だから、出来れば英数キーを単独で押した時は英数として機能してほしい。

とりあえず、英数キーを左commandにするだけならKarabiner-Elementsで容易に実現できた。

英数だけ打ったときに英数として効かせるのは、wwwjfy氏のstandalone-modifiersブランチをマージしたら実現できた(※本家に対しpull-requestは出てるけど2016年10月21日現在未マージ

Karabiner-ElementsでJISキーボードが強制的にUSキーボードになる問題

JIS external keyboard recognized as US (ASCII) keyboard after v0.90.47

英数を左commandにするのはうまく行ったんだけど、現行バージョン(0.90.52で確認)では強制的にUSキーボードとして認識されてしまう。

バージョン0.90.46ならJISのまま、という話だったがそうでもない(いつの間にかUSになってる)

これまでUSキーボードを使うことが多かったしそれならそれで別に構わないんだけど、JISキーボードをUSキーボードとして認識されると ~ とか \ とか打てなくなるんだよね。ホームディレクトリとか参照できなくて死ねる。

それってKarabiner-Elementsでどうにかならない?

答。まあ、なんとかなるにはなる。

バックスラッシュはJISキーボードの¥マークに割り当てて、「`」はLの3つ右(「む」のキー)に割り当ててみた。右shiftの左(「ろ」のキー)のアンダースコアをアンダースコアとして活かせたら嬉しいんだけど設定が分からなかったのでとりあえず割当なしで。

変換前 JISの該当キー 変換後 USの該当キー
international1 vk_none 割当なし
international3 backslash \
japanese_eisuu 英数 left_command 左⌘
backslash grave_accent_and_tilde `

karabiner.jsonはこんな風になってる。

~/.karabiner.d/configuration/karabiner.json
{
  "profiles" : [
    {
      "fn_function_keys" : {
        "f1" : "vk_consumer_brightness_down",
        "f2" : "vk_consumer_brightness_up",
        "f3" : "vk_mission_control",
        "f4" : "vk_launchpad",
        "f5" : "vk_consumer_illumination_down",
        "f6" : "vk_consumer_illumination_up",
        "f7" : "vk_consumer_previous",
        "f8" : "vk_consumer_play",
        "f9" : "vk_consumer_next",
        "f10" : "mute",
        "f11" : "volume_down",
        "f12" : "volume_up"
      },
      "selected" : true,
      "simple_modifications" : {
        "international1" : "vk_none",
        "international3" : "backslash",
        "japanese_eisuu" : "left_command",
        "backslash" : "grave_accent_and_tilde"
      },
      "standalone_modifiers" : {
        "left_command" : "japanese_eisuu"
      },
      "name" : "Default profile"
    }
  ]
}

強制的にUSキーボードになる問題の回避

強制的にUSキーボードになる問題は、とりあえずdcato氏が作ってくれたパッチ patch.txt をあてて回避した。

patch.txt
diff --git a/src/share/hid_system_client.hpp b/src/share/hid_system_client.hpp
index 945511e..2d83474 100644
--- a/src/share/hid_system_client.hpp
+++ b/src/share/hid_system_client.hpp
@@ -39,6 +39,7 @@ public:
                                                              std::bind(&hid_system_client::matched_callback, this, std::placeholders::_1),
                                                              std::bind(&hid_system_client::terminated_callback, this, std::placeholders::_1));
     }
+    logger_.info("modified karabiner_event_dispatcher executing....");
   }
 
   ~hid_system_client(void) {
@@ -85,7 +86,8 @@ public:
     event.key.charCode = 0;
     event.key.keyCode = key_code;
     event.key.origCharSet = NX_ASCIISET;
-    event.key.keyboardType = 0;
+//    event.key.keyboardType = 0;
+    event.key.keyboardType = 45; //JIS_MACBOOK_2008 45
 
     IOGPoint loc{};
     post_event(event_type == krbn::event_type::key_down ? NX_KEYDOWN : NX_KEYUP,

こんなパッチなので、

$ cd Karabiner-Elements
$ patch -p1 < patch.txt
$ make clean ; make

とかやって、結局

~/.karabiner.d/configuration/karabiner.json
      (略)
      "simple_modifications" : {
        "japanese_eisuu" : "left_command"
      },
      "standalone_modifiers" : {
        "left_command" : "japanese_eisuu"
      },
      (略)

設定はこれだけ残して(英数キー回りの設定をいじるだけで)あとは普通にJISキーボードとして使っている。

参考

25
17
4

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
  3. You can use dark theme
What you can do with signing up
25
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?