⌨️

【第3話】HHKB×Karabiner-Elementsでエンドゲーム

「Karabiner-Elements」という選択肢

「もう大人しくデフォルトキーマップに染まるしかないのか…」と落胆していたとき、救世主が現れました。
それは、macユーザーであれば馴染み深い「Karabiner-Elements」。
これまでは「複雑な設定もできるらしいヨ」くらいの知識だったので、1日調べてみました。

「Karabiner-Elements」でできること

以下の記事で、「Karabiner-Elements」の設定が網羅されています。
どうやら「Complex Modification」に設定ファイルをガンガン足していけば、マクロもレイヤーも実装できるとのこと。

「Karabiner-Elements」でできないこと

設定がPCに依存する

自作キーボード( 「HHKB Alt Controller」も概ね同じ)では、
押したキースイッチで送信されるキーコードを設定できる
ので、どのPCでも同じ使用感になります。
 
しかし、「Karabiner-Elements」では、
受信したキーコードをを別のキーコードに変換できる
に過ぎないので、
Karabiner-Elementsアプリがアクティブなこと
アプリに設定ファイルを書き込んでいること
が求められます。
😢
設定がPCに依存するので、他人のPCにつないでも通用しないのが弱点

レイヤーがゴリ押し

さらに、自作キーボードの醍醐味である「レイヤー」は、デフォルトで対応していません。
しかし、多少ゴリ押し感は否めないものの、実装することができます。
 
  1. レイヤーの切り替えとなるキー(スペースバーなど)に、「長押しするとfnが送信され続ける」と設定する
  1. fnを押しながら任意のキーが押されたとき、特定のキーコードを送信する」と設定する
 
この手順を踏むことで、レイヤーを擬似的に実装することができます!

「Complex Modification」の設定

自分なりに設定してみました!
Layer1: HHKB
Layer1: HHKB
Layer:1.5 メインのレイヤーで単押ししたとき
Layer:1.5 メインのレイヤーで単押ししたとき
Layer:2 Fn(スペースバー)を押しているとき
Layer:2 Fn(スペースバー)を押しているとき
ファイル名意味
基本メインのレイヤーで発火するもの
lang.json左右のCommandを単押ししたとき、英数/かなを送信する
undo.jsonleft_controlを単押ししたとき、元に戻すショートカットを送信する
brackets.jsonleft_shift/right_shiftを単押ししたとき、丸括弧を送信する
fnレイヤーfnレイヤーで発火するもの
fnbar.jsonスペースバーを長押ししたとき、fnを送信する
arrows.jsonfnを押しながらasdfを押すと、矢印キーを送信する
arrows_right.jsonfnを押しながらjkl;を押すと、矢印キーを送信する
main.jsonfnを押しながらj/k/lを押すと、backspace/delete/enterを送信する
home.jsonfnを押しながらg/hを押すと、Home/Endを送信する
line.jsonfnを押しながらu/i/o/pを押すと、文末/文頭まで移動/削除を送信する
macro.jsonfnを押しながらq/wを押すと、youn9taka/youn9taka@gmail.comを送信する
コチラから好きなモノをピックアップして設定してみてください。
⚠️
arrows_right.jsonmain.json はぶつかります。 使いたい方のみをご使用ください。
💭
もう少しまとめたら、公式リポジトリにコミットして公開したいなと思ってます。
アプリ内からインポートできるようになるのでお待ち下さい。

まとめ

HHKB x karabiner の組み合わせは、バランスが良くかなりエンドゲームに近い気がします。
自作キーボードなんか始めずに、カラビナでゴニョゴニョやってたらよかった…
と後悔したものの、自作キーボードはやってみないと魅力もダメなところもわからなかったと思うでセーフ!
お疲れさまでした!