Stapler-miniはKarabiner-Elementsで使えるjsonファイルを出力するmacOSアプリケーションです。 いわゆる自作キーボードにおける、レイヤー機能・タップホールド機能を、ドラッグ&ドロップで直感的にカスタマイズすることができます。
レイヤー機能とはあるキーを押しながら他のキー(例えばAとか)を押した時、他のレイヤーで設定しておいたキー(例えばスクショ⌘⇧3)を出力できるようになるような機能です。シフトキーを押しながら数字キーを押した時には数字ではなく記号が入力されますが、その入力される文字を自分で決められるというイメージです。 stapler-mini-v0では8枚のレイヤーを設定することができます。
タップホールド機能とはキーを単打したときと長押ししたときで入力される文字を打ち分ける機能です。 例えばシフトキーやその他の修飾キーは単打をしてもキーのDownUpのみが入力されて実用上では全く意味のない入力ですが、そこに好きなショートカットを入れたりすることが可能なわけです。 反対にescapeやエンターは単打のような使い方しかしないキーなので、それらの長押しに好きな修飾キーのコンビネーションを入れたりもできます。
Karabiner-Elementsからダウンロードして、立ち上げて案内の通りに権限を与えます。SimpleModificationで試しに何か書き換えられたら準備完了です。
とりあえず公開版ではMacBookの本体キーボードのレイアウト3種類(US ,UK, JIS)から選ぶことができます。 最初に入っているVendorIDとProductIDは僕の環境でのMacBookの本体キーボードのIDなので、型番や環境によっては異なる場合があります。Karabiner-Elements側でIDを確認してその値を入力することでそのデバイスの書き換え用のファイルが出力できるようになります。もしくは書き出しした後に一括で編集してください。
注意:環境によっては本体キーボードのVendorIDやProductIDがkarabiner側やシステム情報にも表示されないことがあるようです。その場合はLocationIDで条件付け(デバイスの固定値ではないけど本体キーボードなら多分変わらない)でうまくいっているようですが、何か詳しいことがわかる人がいたらDiscordサーバーで知恵を貸してください!
"conditions": [
{
"type": "device_if",
"identifiers": [
{
"is_built_in_keyboard": true
}
]
}
]
本体キーボード限定の書き換えならこっちの方が良いかも。
基本は下側のカスタマイズキーを上部のキーボードビューの任意のキーにドラッグ&ドロップしてカスタマイズを行います。
また外部キーボードはVendorIDとProductIDをテキストフィールドに入力することでカスタマイズが可能です。
本体キーボードともともとのキーコードが一部異なるキーボードを使っている場合、そのキーの書き換えはそのままだとうまくいきません(JISだったらControl
割り当てたキーのリセットは右クリックから行えます。
右側のサイドバーか、キーをダブルクリックしてポップアップから、EnableTapHoldをトグルします。TapとHold二つのキーに対してドラッグ&ドロップをしてカスタムできます。 この時タップホールドを有効にしたのにどちらかが空の状態のままだとjsonファイル出力時にエラーが発生するので注意してください。
とりあえず公開版には3種類のタップホールドタイプがあります。
一定時間以上押下するとホールドの入力になり、それより早く他のキーが押されたり、キーを解放すると単打が入力される方式のベーシックなタップホールドです。 アルファベットのホーム行に修飾キーホールドを入れたい場合や、閾値を長めに取って誤動作をしないようにしたい場合などに有効です。
"to_if_held_down": [{"halt":true, "set_variable": {"name": "layer1","value": 1}}]
問題があるのは"to_if_held_down"
内の"halt":true
です。ここを消せば問題なく動くはずです。
もしくはUserCustomJSONをトグルした時にはこの不具合は出てないのでタップ・ホールドにキーを入れてトグルするのが楽です。何かわからないことがあればDiscordサーバーで気軽に質問してください!
ピアノでの和音のように他のキーと組み合わせた場合にだけホールドのキーが出力されるタイプです。 閾値を持たず組み合わせの時のみホールドの出力をするのでレイヤーや修飾キーを早い指遣いで使用することができます。レイヤー遷移キーや、よく使うような修飾キーをホールドに入れる場合にこのタイプを使うことを推奨します。
基本的にはChordと同じ機能ですが、 「・ー」のように一度タップをした後に長押しするとタップキーの長押しになる性質を持っているタイプです。 BackSpaceやDeleteForwardなど、実用上長押しもするキーをタップに入れるときに推奨されるタイプです。
※仕組み上、偶数打目のホールドがタップの長押しになる
Specialタブにある色付き数字キーがレイヤー遷移キーです。これをドロップしたキーが押されている間レイヤーのキーを出力するようになります。
例えばこのようにすればかなのタップで かな、かなのホールドでレイヤー3に遷移します。
遷移キーを設定したらそのレイヤーマップにキーをドラッグ&ドロップしてカスタマイズしましょう。 マウスカーソルの移動や、スクロールなどを行えるレイヤーの例です。
右上の出力ボタンを押してPresetの概要を眺めてみましょう。壮観だなぁ〜! 実際にキーボードの書き換えを行えるようにjsonとして書き出しましょう。保存されたファイルがFinderで開いたら成功です。👏 エラーが出た場合はエラーメッセージを見て、どのキーに問題があるのかを確認、タップホールドどちらかが空欄問題ではない場合、スクショを開発者に送りつけて文句を言ってください。
Karabiner側でインポート、Enable Allとすれば設定が有効化できます。ファイルはファイル名が数列になっていますが以下のパスに複製されています。
~/.config/karabiner/assets/complex_modifications
まず出力した時に開いたFinderのウィンドウから、⌘Tか⌘Nで新しくタブかウィンドウを開いて⌘⇧Gで以下のパスを開きます。
~/.config/karabiner/assets/complex_modifications
出力したjsonファイルをcomplex_modificationsのフォルダ内にドラッグ&ドロップします。
Karabiner-Elementsを開いてComplexModificationsタブからAdd predifined rule、Enable Allとすれば設定が有効になっているはずです。メモ帳やEventViewerで確認してみてください。 ドラッグ&ドロップしたのに、設定が見当たらない場合、jsonファイルとして欠陥がある可能性があります。テキストエディタでjsonファイルを開いてエラーがある部分を直せば読み込めるようになるはずです。
レイヤーは8枚あるのでそれなりに余裕を持って自分なりの作業環境を構築できるはずです。 アプリ用のレイヤーを作ったり、数字入力用、記号入力用、カーソル用…と用途別に分けても覚えやすいかもしれません。 画像出力も可能なのでPureRefと組み合わせて常時画面上に表示するみたいなことも可能です。 また、開発者が自分の設定を作ってる記事もあります。アプリ別なコマンドを設定したり、ちょっと細かいところまで説明してるので参考にしてみてください。
最強のプリセットが作れたらDiscordコミュニティやXで自慢しよう!要望とかあれば頑張るかもしれない。