The 42 Of Spaghetti

メモを交えて所有物を淡々と記録するログ

Karabiner:強力なmac用KeyRemapソフトでマウスの動作をカスタマイズ

OS X上でのキーボードの配列を変更したり、特定のショートカットをもっと柔軟に作りたくなることがあります。それを実現してくれるのがこのKarabinerです。
マウスの動作もカスタマイズできるめちゃくちゃ強力なソフトですが、その分ちょっと設定に慣れるまでに時間がかかるのと、ハマった部分があるのでメモをしておきます。


ソフトは以下のサイトからDownloadしてください。インストール方法はサイトに書いてある通りですが、ごく標準的な方法です。
Karabiner - OS X用のソフトウェア

ホイールやbutton4,5の変更方法は、以下の参考ページを参照していただいたほうがわかりやすいです。

参考にしたページ

kainokikaede.hatenablog.com
マウスのホイール方向反転を変更する。qiita.com
マウスをキーボードで代用するためのKalabiner設定。
iPhoneアプリ開発日記 by Clover Tecnology: Macで効率良く作業を行うには「5ボタンマウス」
5ボタンマウスで、button4とbutton5を設定する。

もうすこしカスタマイズ

以上のページにお世話になり、もっと自分好みに変更した結果がこちら。

マウスのキー 機能
右クリック 右クリック
左クリック 左クリック
左クリック押しっぱなし misson controlが立ち上がる
ホイール スクロール
ホイールクリック ホイールクリック
ホイール左 仮想desktopを一つ左に移動
ホイール右 仮想desktopを一つ右に移動
button4 ブラウザの"戻る" ⌘+[
button5 ブラウザの"進む" ⌘+]

このとき、下部4つの機能は自分で書く必要がありそうだったので、機能定義ファイルのprivate.xmlは下記のようになります。

あと、これはJISキーボード用です。
vendorname/vendorid, productname/productidを自分のマウス用に変更すれば流用できると思います。

ちなみにハマった点はgoogle chromeの1password拡張のキーボードショートカットとかぶっていたこと。なかなかマヌケな理由でした。気づけよ!

<?xml version="1.0"?>
<root>
  <devicevendordef>
    <vendorname>BUFFALO</vendorname>
    <vendorid>0x12cf</vendorid>
  </devicevendordef>

  <deviceproductdef>
    <productname>BSMBB27S</productname>
    <productid>0x255b</productid>
  </deviceproductdef>
       <item>
        <name>MiddleClick+CursorMove to ScrollWheel</name>
        <identifier>private.remap.pointing_relative_middleclick_to_scroll</identifier>
        <autogen>
        	__PointingRelativeToScroll__ 
        	PointingButton::MIDDLE
	</autogen>
      </item>
      
        <item>
          <name>Button4 to Command+] (Forward)</name>
          <identifier>private.remap.pointing_button4_to_command_bracket_right</identifier>
          <device_only>DeviceVendor::BUFFALO, DeviceProduct::BSMBB27S</device_only>
          <autogen>__KeyToKey__ PointingButton::BUTTON4, KeyCode::JIS_BRACKET_RIGHT, ModifierFlag::COMMAND_L</autogen>
        </item>
        <item>
          <name>Button5 to Command+[ (Back)</name>
          <identifier>private.remap.pointing_button5_to_command_bracket_left</identifier>
          <device_only>DeviceVendor::BUFFALO, DeviceProduct::BSMBB27S</device_only>          
          <autogen>__KeyToKey__ PointingButton::BUTTON5, KeyCode::JIS_BRACKET_LEFT, ModifierFlag::COMMAND_L</autogen>
        </item>
        
        <item>
            <name>Scroll Left to Move Window Left</name>
            <identifier>private.remap.pointing_wheel_left_to_window_left</identifier>
            <device_only>DeviceVendor::BUFFALO, DeviceProduct::BSMBB27S</device_only>
            <autogen>__ScrollWheelToKey__ ScrollWheel::LEFT, KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_L</autogen>
        </item>
        
        <item>
            <name>Scroll Right to Move Window Right</name>
            <identifier>private.remap.pointing_wheel_right_to_window_right</identifier>
            <device_only>DeviceVendor::BUFFALO, DeviceProduct::BSMBB27S</device_only>
            <autogen>__ScrollWheelToKey__ ScrollWheel::RIGHT, KeyCode::CURSOR_RIGHT, ModifierFlag::CONTROL_L</autogen>
        </item>
</root>

ざっくりすぎる説明

基本的には、初めのほうにかいてあるとおり、vendorとproductnameをきちんと定義して、あとはで囲まれる中でdevice_onlyを指定して(=マウスのみこの制御に変更する)で、autogenに変更するキーを割り当てればいけます。
nameは機能のon/off時に説明として表示される文章です。
そしてidentifierはユニークであればよいので、自分でカスタマイズ=privateと解釈し、private.remap.〜とわかりやすい識別子にしておけばよいんじゃないかなあ。private.remap.pointing_wheel_right_to_window_rightというのを例に取ると、これは他のものを参考に適当につけています(なので、.でいくつ連ねることができるのかとか、そういうのを一切考えていないです。ダメだったらエラーだすだろうし、という安易な考えです)。

どう機能を見つけるか

構文や定数を全部理解するのはとても大変なので、xmlベースですし、あたりをつけつつサンプルからコピペをすることにします。
例えば「ホイール左で仮想desktopをひとつ左に動く」というのは、「ホイールを左に動かされたらControl+←」という置き換えにすればよいことはわかりますので、各々の方法を探してコピーするわけです。ただ、イベントランチャでホイールの左クリックを監視して見ても、これはマウスポインタのxが増減しているくらいしかわからず、検出方法(というか記述方法)がよくわかりません。

そこで、Karabinerの設定(changekeyの欄です)はサンプルを含め相当なボリュームがあるので、ここにその例もあるに違いない、と探すことにします。
例えばスクロールホイールはScrollWheelと表示されていることが多いので、機能からこの文字列を検索することにします。今回はズルをして、目当ての機能を含む説明文から文字をカットして、それで検索していますが、実際は"ScrollWheel left"とかで検索して、ひとつひとつ見ていっていました。

その状態が以下のもの。
f:id:takafuu:20150919224237j:plain:w300

これはホイールを左に倒すとボリュームがさがる、という機能でしょう。実際ためしてみるとそうでした。
なので、次はnameで指定されているであろう、”ScrollWheel(Left) to Volume Down"のautogenを見ることにします。
そしてボリュームではなく、ショートカットをContorolと←に割り当てたい。

サンプル設定ファイルを探す

サンプル設定ファイルは公式ドキュメントで
/Applications/Karabiner.app/Contents/Resources/include/checkbox/以下にあるよ、とかいてあるので、ここを開きます。
finderでも開けますが、面倒なのでterminalを開いて移動。

cd /Applications/Karabiner.app/Contents/Resources/include/checkbox/

つぎに、このディレクトリ以下の全てのxmlファイルから、"ScrollWheel(Left)"が含まれる行を探します*1

find . -type f -name "*.xml" -print | xargs grep "ScrollWheel(Left)"

実行結果は以下のとおり。

./samples.xml:        <appendix>ScrollWheel(Left) to Volume Down</appendix> 

sample.xml内に記述があるようです。
このファイルを開きます。

open ./samples.xml

これでXcodeが入っていればXcodeが開きます。
それで該当箇所を検索して見る(ver 10.9.0で2076行あたりです)と以下の様な記述があります。

      <item>
        <identifier>remap.samples_ScrollWheelToKey2</identifier>
        <name>Standard (2)</name>
        <appendix>ScrollWheel(Left) to Volume Down</appendix>
        <appendix>ScrollWheel(Right) to Volume Up</appendix>
        <appendix>ScrollWheel(Down) to Left Click</appendix>
        <appendix>ScrollWheel(Up) to Right Click</appendix>
        <autogen>__ScrollWheelToKey__ ScrollWheel::LEFT,  ConsumerKeyCode::VOLUME_DOWN</autogen>
        <autogen>__ScrollWheelToKey__ ScrollWheel::RIGHT, ConsumerKeyCode::VOLUME_UP</autogen>
        <autogen>__ScrollWheelToKey__ ScrollWheel::DOWN,  PointingButton::LEFT</autogen>
        <autogen>__ScrollWheelToKey__ ScrollWheel::UP,    PointingButton::RIGHT</autogen>
      </item>

appendixという見なれないものがありますが、機能の付加的な説明だろうと読み流し、autogenの中身に注目。
__ScrollWheelToKey__ ScrollWheel::LEFTがホイールの左ということなので、これを参考にします。キーを2つにするのも同様にサンプルから学びます*2

できたのがこれ。

        <item>
            <name>Scroll Left to Move Window Left</name>
            <identifier>private.remap.pointing_wheel_left_to_window_left</identifier>
            <device_only>DeviceVendor::BUFFALO, DeviceProduct::BSMBB27S</device_only>
            <autogen>__ScrollWheelToKey__ ScrollWheel::LEFT, KeyCode::CURSOR_LEFT, ModifierFlag::CONTROL_L</autogen>
        </item>

同様にホイール右のも作って、private.xmlに書いてリロード、checkboxにcheckを入れて完了です。
と、慣れるといろいろできるのでとても便利!

*1:ちなみに、前述のように移動せずとも、findのディレクトリ指定を変えれば一行で済みます

*2:マニュアルにざっと目を通すと、キーの指定は結構色々なルールが有るようなので、ことによってはしっかりとそのルールを把握しておく必要もありそうです

広告を非表示にする

stylebook:長期的にコーデを整えたい方におすすめ

Stylebook

Stylebook

  • left brain / right brain, LLC
  • ライフスタイル
  • ¥400

僕は単調作業はとても苦手なのですが、創造的ではない記録は好きなようで、食事の記録、出納、タスク管理、移動ログ(自動)を行っています。こういう無味乾燥としたデータを使って色々分析するのは楽しいのですよ。ログバンザイ。

閑話休題。
このiOSアプリは、着用した服を記録・管理するものです。仕様にいくつか不満点はあるのだけれど、コーデ&ワードローブ管理アプリとして、iOS8にも対応したアプリとして僕が見つけたものの中では一番で、一年以上愛用しています。コーデ記録は服の整理に悩む方にはとてもお勧めです。

使ってる理由はたんいぼくがこういう記録が結構好きだから、なのです(これをブログでやろうかと思ったくらい。でも書くことがないし、写真を一回一回撮るのが面倒なので辞めました)。

続きを読む
広告を非表示にする

はてな:はてなブログpro

ちょっと前に試しに課金してみて、自分としては必要もないかなと思ったのですが、せっかくだしアドセンスなどもやってみようかなというのと、モノを全部記録する前に飽きて辞めそうなので、一年間有料サービスに申し込みました。もちろん理由はそれだけではないですけど、合理的な理由もないです。

proにしてみた理由

広告を貼ってみたい

このブログは大変残念なアクセス数でして、それは自信の文章力やら構成の悪さを露呈する真っ当な数字なのではありますが、そうはいっても社会的なこと、有用なことを頑張って書いていくという気にはなれず、「公開してはいるけれど、あまり読者を意識していない」という今のスタンスは余り変わらせないで、もう少しアクセスが上がると(面白がられると)よいなあとは思います。何を言ってるんだ。
閑話休題。儲からないよと言われる広告を存在しないに等しいブログでも一度は貼ってみたいのです。そういえば過去にも広告を貼ったことって一度もないのですよ。

モバイルのデザインをちょっと弄りたい

デザインにあまり拘りはないのですが、スマホ用の画面があまり好きではないので、適当にそこを弄りたかったのです。そのうち。

広告とキーワードリンクが鬱陶しかった

これは無料なので文句を言ってるのではなく、お金を出しても良いなーと思った、ということですね。
ロリポップとかレンタルスペースのみ借りればもっと安く済むけど、これだけ整えてくれてると(自由度はないけど)全然楽だし、そのために月に¥700位なら全然いいかな。せめて一年は続くと良いなーとは思わないでもないです。


はてな / はてなブログpro / - / - / 2014/02

広告を非表示にする

MPD project: Music Player Daemon (MPD)

オープンソースの音楽再生ソフト。特徴としては、このソフト自体は音楽をコントロールするインターフェースを保たず、再生・停止・曲の指定などは別のソフト(クライアント)から行う、というクライアント・サーバ構成が特徴です。その仕様はもちろん公開されているので、色々なクライアントがあるし、頑張れば自分でも作れます。またクライアントは別にmpdと同じマシン上で動いている必要がないので、構成が自由であるのも特徴です。ようするに、リモコンは自前で作るか、好きなの選んでね、な音楽プレイヤ。

わざわ音楽を聞くためだけにノートPCを立ち上げておくことが嫌なので、当時動かしていた小さいサーバに入れて使用したのがきっかけで使い続けていますが、いまだとairplayもあるし、音質にそこまでこだわらなくなってきたし、NASとともに一度見直しても良いかもしれないシステムかもしれません。NASを使えば使うだろうし、NASを使わなくなければ使わないだろうな。


(open source) / mpd / - / -

広告を非表示にする

ExpanDrive : Google Driveを同期せずに外部のドライブとしてマウントするツール

ローカルにファイルを持たず、あたかも外付けHDDやフラッシュメモリのようにクラウドストレージを使うのならbitcasaやbox.com(webdav使えるので楽ちん)あたりが便利だとは思うのだけど、前に使用した時いまいち遅い印象が強かったので、今回はGoogle Driveでそれを実現することにし、ExpanDriveというソフトを購入しました。

続きを読む
広告を非表示にする