生涯未熟

生涯未熟

プログラミングをちょこちょこと。

Karabiner-Elementsで特定のキーボードでだけComplex Modificationsを有効にする

Karabiner-Elementsってこんなことが出来たんだ!と感動したので書き残しておく。

前提

まず前提として、筆者がどのような状況でKarabiner-Elementsを使っていたかについて言及する。

仕事机ではKeyball61を、MTGをする際には別部屋のMTG机にてMac内蔵キーボードを利用するというキーボードを使い分けるという生活をしている。
が、困ったことにKeyball61ではKarabiner-ElementsのComplex Modificationsを使って1キーで"日本語/英数入力"をトグル切り替えるようにしていますが、その設定のままだとMac内蔵キーボードにある左右の"英数", "かな"キーを押下した時にも"日本語/英数入力"がトグル切り替えされてしまいます。

それぞれのキーボードでプロファイルを作成し、利用するキーボードによってプロファイルを切り替えていましたが切り替え忘れなどがあると非常にストレスです。
キーボードの種別によってプロファイルが自動で切り替わればいいんですが、Karabiner-Elementsではその機能はないようです。

github.com

対策

困ったもんだなぁと思いつつも、手動で切り替えながら使っていたのですが、先程のISSUEに気になるコメントが1年前投稿されてました。

github.com

リンク先のISSUEには回避方法などが書き込まれていたのですが、その中で「device_if, device_unless, device_exists_if, device_exists_unlessを使ったComplex Modificationsの有効/無効の切り替え」というのがありました!これは使える!!!

karabiner-elements.pqrs.org

要は、VIDとPIDを指定するとそれに合う場合にのみComplex Modificationsが有効になったり、無効にしたりできるといったものです。知らなかった・・・

やってみる

早速試してみましょう!!

今まで使っていたComplex Modificationsは以下のようなものです。

これに device_if を利用してみる形に修正しましょう。
その前にまずはVID/PIDを調べるのですが、Linuxだと lsusbMacだと system_profiler SPUSBDataType で調べることができます。
で、判明したVID/PIDを反映してみましょう。

こんな感じですね!これでプロファイルを切り替えずともComplex Modificationsをキーボードによって有効/無効にすることができました!
ちゃんとマニュアルは読まないとダメですね・・・同じような悩みを抱えてる人は是非お試しを!🙇‍♂️