Mac
karabiner-Elements
Hammerspoon
デュアルキーボード

Karabiner-Elementsでデュアルキーボードを使用する


概要

Karabiner-ElementsのVirtual Keyboardはいいぞ。


まえがき

もともとmacOS El Capitanでは2台のキーボードを同時に使っていたのですが

Sierraにアップグレードしてからはいくつかの問題が発生しました。


Sierraでの問題点


1. コンビネーションキーが同じキーボード内でしか認識しない

左で⌘、右でHを押しても、Hのみとして認識されます。

ショートカットだけ気をつけるというのも難しい…


2. 左右で入力に遅延にムラが発生

Bluetoothで接続していると左右のキーボードで入力の順序がズレるという問題がありました。

致命的です。ゆっくり入力するしかありません:innocent:


3. KarabinerがSierraで動作しない

Sierra以降はKarabiner-Elementsでサポートになりましたが開発初期段階で機能は少なかったです。


4. NoEjectDelayが動作しない

SierraではNoEjectDelayが動作しなくなりました。

AppleKeyboardのEjectキーもDelete Forwardとして実質使えなくなりました。

(NoEjectDelayはAppleKeyboardではEjectキーが連打防止されているのでそれを無効化するアプリです。

NoEjectDelay

(NoEjectDelay does not work on macOS Sierra)


しかし

iOSエンジニアなのでXcodeのVerupの都合で泣きながらSierraにあげました。

その頃は皆、Hammerspoonに流れたようですが、私の目的には使えなかった記憶があります。


Karabiner-Elementsがパワーアップしていた

いつの間にか大幅に機能が追加され11.0.0から始まったverも12.1.0に

試しにインストールしてみると新しいキーボードのセットアップ画面が!

New Keyboard


VirtualHIDKeyboard

キーボードの一覧に見慣れないものが:thinking:

スクリーンショット 2018-12-15 16.40.50.png

どうやら、仮想キーボードとしての認識させることでキーバインドのリマップやその他諸々を実現しようということらしいです。

キーボードを2台併用していても、一旦仮想キーボードとしてレイヤーに吸収されるので、左右のコンビネーションなども、macOSから見れば1台のキーボードで入力したものと変わらないということですね。


キーバインドのカスタマイズ

設定の一例です。

⌘キーは押しやすい方が良いだろうということでControlに割り当てるとだいたいこんな感じになるかなぁと。

今までのキーバインド

Karabiner-ElementsではSimple Modificationsの画面で簡単に設定可能です。

Complex ModificationsのRulesから使用できるリマップのJSONも書いたのですが、まだGUIと併用しています。

CapsLockはそこまで使わないのでReturnキーに設定しています。

スクリプトで自動化させてる方は割り当てても良いかもしれませんね。

標準の設定画面と違いどのキーでも割当できるのは良いです。

設定例


Ejectキー

先程のスクショはMacBookのものなのでEjectキーがありませんが

iMac / Mac miniのキーボードでEjectキーをDelete Forwardに割り当てればOKです。

※ MacのキーボードだとdeleteがWindowsでいうBack-Spaceなので混乱しますよね


右の⌘はかえたくない

俺は右の⌘キーはそのままでいいんだ!

という方も以下のように別れているので問題ありません


  • left_command

  • right_command

左右のコマンドキーを別々に割当可能です。


プロファイル選択

どんなにカスタマイズしてもプロファイルの選択で切り替えが可能です。

ちょっと人に貸すときも、イラっとされなくてすみます。

プロファイル

ここでは自分用に「Custmized Profile」ノーマルを「Default Profile」としています。


まとめ

大幅アップデートで快適に使用できるようになったKarabiner-Elementsですが

El Capitan対応版のときよりも様々な用途で活用できそうです。

VirtualKeyboardが何台まで認識できるのかは気になるところです。

また、High Sierra、Mojaveでも動作します。

ダウンロードはこちらから

Karabiner


最後に

ディップAdventCalendar2018からたどってくださった方どうも有難うございます。

随時エンジニア募集中です!iOSDCにも参加しています!

もし好評なら次回は以下に触れてみたいと思います。


  • Shell Command Execution

  • アプリケーション毎のリマップ

来週はiOSDCの資料の中からピックアップしてなにかかきたいと思います。