rcmdnk's blog

vim_200_200

以前、 Windowsでyamyを使ってVimっぽい動きをVim以外で再現する 方法を紹介しましたが、 今回はMacで、 -などとの同時押しで カーソルやマウスポインタ、さらにウィンドウを動かす方法についてです。

カーソルキーを動かす

前回 紹介した通り、KeyRemap4MacBookには最初からいくつか Vimっぽい動きを再現する設定が入っていますが、 - という組み合わせを使いたいので、以下の設定をprivate.xmlに加えています。

vimode_ctrl_cmd_KeyRemap4Macbook.xml
1
2
3
4
5
6
7
8
9
<item>
  <name>VI mode with CONTROL_L+COMMAND_L</name>
  <appendix>CONTROL_L+COMMAND_L+H/J/K/L to cursor Left/Down/Up/Right</appendix>
  <identifier>private.my_cursor</identifier>
  <autogen>--KeyToKey-- KeyCode::H, ModifierFlag::CONTROL_L|ModifierFlag::COMMAND_L|ModifierFlag::NONE, KeyCode::CURSOR_LEFT</autogen>
  <autogen>--KeyToKey-- KeyCode::J, ModifierFlag::CONTROL_L|ModifierFlag::COMMAND_L|ModifierFlag::NONE, KeyCode::CURSOR_DOWN</autogen>
  <autogen>--KeyToKey-- KeyCode::K, ModifierFlag::CONTROL_L|ModifierFlag::COMMAND_L|ModifierFlag::NONE, KeyCode::CURSOR_UP</autogen>
  <autogen>--KeyToKey-- KeyCode::L, ModifierFlag::CONTROL_L|ModifierFlag::COMMAND_L|ModifierFlag::NONE, KeyCode::CURSOR_RIGHT</autogen>
</item>

これで、

  • どの場所でも--h/j/k/lによってカーソルを左下上右に動かせる

となります。

マウスカーソルを動かす

KeyRemap4MacBookではVK_MOUSEKEY_LEFT等といったキー設定でキーバインドにマウスカーソルの移動を当てられます。 他にもPointingButton::RIGHTで左クリック、VK_MOUSEKEY_SCROLL_UPで上スクロール、 を設定出来ます。

これらを入れた設定がこれ。

これで、

  • マウスカーソルを--y/u/i/o(h/j/k/lの上のキー達)によって左下上右に動かせる
  • ついでにクリックとかも出来る(--n/pで左/右クリック)
  • ホイール操作も(--m/,で下/上ホイール)

を出来る様になります。 これも初期設定ででもMouse Keysという項目があり、 矢印でマウスを移動させたりするようになっていますが、 そこにある注意にあるようにGeneraldeon't remap any pointing devices にチェックを入れてしまうと機能しなくなるので注意してください。

ウィンドウの移動

Windowsのyamy時と比べてKeyRemap4MacBookで出来なかった事は ウィンドウの移動です。

これに関してはAppleScriptでウィンドウを動かすスクリプトを作って それをBetterTouchTool でショートカット起動することにより出来るようにしました。

必要なAppleScriptの導入

  • AppleScriptレポジトリにある windowMove*という5つのスクリプトを取ってくる。 次の様にコンパイルして

      osacompile -o windowMove.scpt  windowMove.script
    

    出来たファイル(windowMove.scptなど)を~/Library/Scripts等好きなところへ置いておく。

  • もしくは、上のAppleScriptレポジトリの物全部インストールするので良ければ、 READMEにあるようにレポジトリをcloneしてinstall.shを実行する。 (レポジトリにあるスクリプトを全部コンパイルして~/Library/Scriptsへ入れます。)

BetterTouchToolでの設定

  • BetterTouchToolのGesturesKeyboardで新しいショートカットを
    • Keyboard Shortcut: --y
    • Trigger Other Keyboard Shortcut: 空白
    • Trigger Predefined Action: Open Application/File/Scripts~/Library/Scripts/windowMoveLeft.scptを選択

      の様にy,u,i,oに対してLeft,Down,Up,Rightを指定する。

以上で

  • ウィンドウを--y/u/i/o)によって左下上右に動かせる

が出来る様になります。 が、ここでちょっと困ったことに--uMail.appでメールの未読/既読の切り替えです。

このショートカットは使いたいのでKeyRemap4MacBookの方で他のキーに割り当てよう、 と思ったんですがBetterTouchToolで上書きしてしまうとそちらが優先されるので --uの指定はKeyRemap4MacBook からはウィンドウを動かす、と解釈されてしまいます。

回避策としては

  • 環境設定から未読/既読のキーボードショートカットを変える
  • BetterTouchToolで違うキーにWindowMoveを割り当ててそれを使う
  • BetterTouchToolで違うキーにWindowMoveを割り当ててさらにKeyRemap4MacBook で再度--y等に割り当て直す

などが考えられますが、キーボードショートカットの変更はやはり KeyRemap4MacBookで閉じたいのと、Windowsで --yの設定にしていて慣れてしまっているので 一番回りくどい感じですが3番目の方法を取り次の様に設定しています。

  • BetterTouchToolで--y/u/i/oにそれぞれwindowMoveLeft/Down/Up/Rightを指定。
  • KeyRemap4MacBookで--y/u/i/oにそれぞれ--y/u/i/oを指定

従って現設定ではCmd+Shift+yでもOption+Shift+yでもウィンドウは 左に動きます。 KeyRemap4MacBookでの設定はこちらのGist にあります。

これでもいくつか潰してしまっているショートカット 1 2 がありますが、 差し当たり使わないものなので良しとしておきます。

Sponsored Links
  1. OS X のキーボードショートカット

  2. Lion Mail: キーボードショートカット

Sponsored Links

« KeyRemap4MacBookで初期状態で設定出来るVim設定 PocketのブックマークレットでLoginを要求される様になった時の対処法 »

}