Skip to content

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)を一部無効化しないとワークスペース(デスクトップ)をまたぐ操作ができないのが悩みどころなのです……。