つらねの日記

プログラムの進捗やゲームをプレイした感想などを書き連ねる日記。

Karabiner の windowname_only に和名を使うには

まえがき

Karabinerを愛してやまない皆さんこんにちは。便利ですよねKarabiner。 今回はKarabinerのFilter: Specify window name (window title)に平仮名や片仮名、漢字を使う方法を模索していきたいと思います。

結論

<windownamedef>
    <name>nihongo</name>
    <regex>日本語</regex>
</windownamedef>

<item>
    <windowname_only>nihongo</windowname_only>
    <autogen>
    ...
    </autogen>
</item>

文字化けで死んだ

KarabinerにはonlyというアプリIDのみならず、windowname_onlyという機能もある。 それによって、特殊な設定を施したいと思った。

しかして、そういった設定を行なうと思ったところ、windownameが日本語だった。 これ大丈夫なのかなぁと思いながらもやってみたところ、やっぱりだめだった。f:id:turane_gaku:20161225141702p:plain

そういえば、なんでこういった文字化け的なやつって、普段使わないような漢字な感じなんだろうなぁ。 別に三々手拍的に普段使うような漢字で化けても罰は当たらなわけじゃないですか?

文字コード的な話か?

無論、一番最初に疑ったのは文字コード的な話で、set fenc=utf-8を叩き直してみたり、xml宣言を<?xml version='1.0' encoding='UTF-8'?>にしてみたりした。 でもやっぱり駄目。どうしても謎の文字列によってエラーを吐いてしまう。

というかそもそも<name>で日本語を使えてる時点でその線はないんだよな。

Profilesで解決できるわけがなかった

検索技術が低いのか探せど探せど、あまりにも出てこないので、諦めてProfilesで解決することにしていた。 設定が一つだけ異なるProfileを用意することで、切り替えて使う方法である。

しかしながら、人間は面倒くさがる生き物でそれを切り替えることを忘れてしまう。 windownameが他のものになったときには、動作を逆に阻害するような設定だったので、腹立たしくなって、もういっそ無効にしてしまっていた。

サンタからの贈り物だ

ところで今日はクリスマスみたいですね。まあだからと言って何かが変わるわけではないのだけれど、(色々安くなっていたりはする)なんか良くわかんないけど、なんかこれ使うといいんじゃないかなって思って上手くいった。

ふとprivate.xml Reference Manual - Karabiner - Software for OS Xを見てみるとwindownamedefとかいう機能があるらしい。

今までは知らなくて、

You can use them without in private.xml.

な使い方しかやってなかったのだが、それをしてみたとたん、エラーもなくめっちゃ上手く動作するようになった。正規表現とか使ってないけど、regexを使っていてちょっともったいない気分である。

<windownamedef>
    <name>nihongo</name>
    <regex>日本語</regex>
</windownamedef>

<item>
    <windowname_only>nihongo</windowname_only>
    <autogen>
    ...
    </autogen>
</item>

おわりに

今回はKarabinerのwindowname_onlyを設定するときに、windownamedefを使うことで、日本語のwindownameを設定する方法も模索した。

今回の件から学ぶべきことは、ドキュメントはちゃんと読もうという話だ。 でもLanguage > Japaneseで期待させておいて、変わるのがメニューだけっていうのはあまりにも酷だと思う。