Macのキーマップ変えてみた
いい感じに設定できて嬉しいのでkarabinerについてだけ記事を書いたなのです。Macのカスタマイズまとめはまた後日書くなのです。
Karabiner 最強なのです
JSONを直接書くのはしんどいのでkarabiner.ts
というライブラリを用いてTypeScriptで設定を書き、ビルドしてコンフィグを生成します。
あらかじめGUIで権限周りの許可や、キーボードタイプを内部的にANSIにする必要があります。まだ途中ですが、かなりいい感じです。
ちなみにyabai
というタイル型ウィンドウマネージャーを使用しています(ヤバい)。
- かな → IME切替
- 英数 + hjkl → ウィンドウのフォーカス移動
- 英数 + shift + hjkl → ウィンドウの移動
- 英数 + q → ウィンドウを閉じる
- 英数 + 任意のキー → 任意のアプリケーション起動
- 英数単押し → ランチャー起動(Raycast)
- Capslock → Command
また、Chrome限定で
- Ctrl + w → Command + w
- Ctrl + t → Command + t
- Ctrl + l → Command + l
を当てています。TypeScriptはこんな感じです。
const yabai = "/run/current-system/sw/bin/yabai ";
writeToProfile("Default profile", [
rule("IME-toggle").manipulators([
map("japanese_kana")
.to("japanese_eisuu")
.condition(ifInputSource({ language: "ja" })),
]),
rule("Modifiers").manipulators([
map("caps_lock").to("left_command"),
map("left_control").to("left_control").toIfAlone("escape"),
]),
// Disable system shortcuts
rule("Disable-system").manipulators([map("q", "command").toNone()]),
layer("japanese_eisuu", "super")
.configKey((v) => v.toIfAlone("spacebar", "command"), true)
.manipulators([
// focus window
map("h").to$(yabai + "-m window --focus west"),
map("j").to$(yabai + "-m window --focus south"),
map("k").to$(yabai + "-m window --focus north"),
map("l").to$(yabai + "-m window --focus east"),
// move wndow
map("h", "shift").to$(yabai + "-m window --warp west"),
map("j", "shift").to$(yabai + "-m window --warp south"),
map("k", "shift").to$(yabai + "-m window --warp north"),
map("l", "shift").to$(yabai + "-m window --warp east"),
// other window operations
map("tab").to$(yabai + "-m window --focus recent"),
map("q").to$(yabai + "-m window --close"),
// applications
map("f", "shift").to$(
yabai + "-m window --toggle float --grid 4:4:1:1:2:2",
),
map("w").to$(
yabai +
"-m window --toggle float;" +
yabai +
"-m window --grid 1:1:0:0:1:1",
),
map("return_or_enter").to$("/usr/bin/open -a kitty ~"),
map("o").to$(
"$HOME/.nix-profile/bin/google-chrome-stable --profile-directory=Default",
),
]),
...
おわりに
既存の修飾キーを一切潰すことなく「英数」で修飾キーを増やせたような形になるなので、Hyprland時代よりもキーマップの自由度が高くなったなのです!
あとはSIP(Security Integration Protection)を一部無効化しないとワークスペース(デスクトップ)をまたぐ操作ができないのが悩みどころなのです……。