2015/08/03

【余談】Karabiner でのキーリピート速度

これまで、ちょっとしたテキストやメモの共有には、OS X/iOS標準の「メモ」(Notes)を使っていた。

「メモ」(Notes)はバックエンドがIMAPなどメールサーバになっており、Gmail なりの適当なメールサーバさえ確保できれば簡単にドキュメントが同期できることと、Apple 系のデバイス間だけではなく、限定的にだが ExchangeServer を経由して Windows とも連携が可能なのが便利だったためだ。

そもそも、何故 IMAPをメモに...っていうのも理由があり、ExchangeServer がメールや予定等々を統一的なアクセス方法で扱えるようにしており、その中に「メモ」があったのが理由と思われる。( 古い Macユーザなら、Exchange サポートの入った前後の Mail.app に「メモ」がひっついてたのを覚えているだろうか? 要するにそういうことだ )

ところが、ExchangeServer 側がメモのサポートをやめようとしている。一応機能としては残っているが obsolete 扱いで、現在の Exchange 2013 + Outlook 2013 では、表示フォントの変更ができないなど以前にあった機能が欠落を始めている。


そんなこともあり、ちょっとしたテキストやメモの共有に OneNote を使い始めた。OneNote はフリーで使え、iOS でもアプリがある。仕事でも OneNote を使い始めたこともあって、移行先としては悪くないと思った次第だ。

多少の癖はあるが Mac 版の OneNote もそこそこできがいい。(IMAPやExchangeではなく) OneDrive を通じて同期し、人との共有も可能。賛否は分かれるがページ以外にもタブという概念があり、一次元ではなく二次元にメモを整理できる。また、オンラインアクセスできるのも悪くない。(iPhone でアクセスするときわめて使いにくく、PC/タブレット用と割り切る必要はあるが。)


さて、便利に使い始めた OneNote だが、Emacsキーバインドが使えないのだけが厄介であった。指がそっちに慣れているため、つい Ctrl-P を押してしまう、Ctrl-F, Ctrl-B でカーソルを動かそうとしてしまう、のでどうしてもストレスがたまる訳だ。

同じ事が Excel や PowerPoint でも起こっており、そろそろ年貢の納め時か、とあきらめ Karabiner を導入した。以前は KeyRemap4MacBook と呼ばれていたアプリで、 KEXT (カーネル拡張)を突っ込んでキーボードからの入力をいじってしまうというもの。トラブったときがやっかいなのでこの手合いのデバイスドライバはなるたけ避けていたのだが、背に腹はかえられぬ。実際、導入したら便利であった。

ただ、Karabiner を導入するとキーリピート速度の速度がなにやら遅い。見ると Karabina がリピートまでの認識時間とリピート速度を上書きしている、とある。

直したいのだが Karabiner ではミリ秒単位で値を設定するもので、さて Mac側の設定でどれが何ミリ秒になっているかわからないと設定しようがない。

仕方がないので、少し調べた。
Mac 側の設定は「defaults read -g | grep Repeat」あたりで検出できる。InitialKeyRepeat の値が「リピート認識までの時間」、KeyRepeat の値が「キーのリピート」での値だ。

しかし、この値はミリ秒ではない。出てきた値に 15をかけるとミリ秒になる。

図示すると、こんな感じだ。



値としては、以下の通りだ。

キーのリピート 遅い           早い
1800
1350
900
450
180
90
30

リピート入力認識までの時間 長い         短い
1800 
1470
1020
525
375
225

この値をかき込めば、Mac のときと同じになる。

ただ、微妙に妙な動作がでてしまう。例えば OmniGraffle でテキストフィールドで範囲選択中に Ctrl-A を押したときの挙動が、Karabiner の有無で異なる。

Notifier を使って Office アプリだけを有効にしたいのだが...、これは、XMLでの設定を書くことでできそうなのでまた試すとする。

--
8/4 タイトルのスペル間違えてたので修正。