2016/02/16

AutoHotkeyを使った効率的なカーソル操作ができるキーバインド

以前から記事にしようと思っていた効率的なカーソル操作ができるキーバインドのネタをようやく公開。
プログラムを書くプログラマーだけでなく、文章を書く人にも便利かもしれません。


さて、このキーバインドの考え方としては、
  • オンラインゲームでのWASDキーによる移動
  • viのカーソル移動
  • viによるモードの切り替え
を着想としています。

 基本的な考え方は3つです。
  •  Ctrlを押しながらキーを押すと、カーソルの操作ができる(カーソルを"コントロール"するイメージ)
  • さらにShiftを押すと、文字列を選択できる
  • Ctrl + Alt (+ Shift) を押しながらキーを押すと、削除できる

カーソルの移動は、ijkl です。それに加え、u と o を加えます。
Ctrl + i  (上)
Ctrl + j  (左)
Ctrl + k (下)
Ctrl + l  (右)

Ctrl + u  (行頭へ)
Ctrl + o  (行末へ)

この組み合わせに、Shift 及び Alt を追加すれば快適なカーソル操作ができるようになります。

無変換キーに半角/全角キーを登録するとさらに快適です。


今回は AutoHotkey のスクリプトにて最終的なものを紹介しますが、 お使いのソフトに登録してみてください。

実行環境

Windows7
AutoHotkey: v 1.0.48.03(Revision 30 - May 31, 2009)
日本語キーボード

AutoHotkeyはこちらからダウンロードします。最新のものをダウンロードすることをお勧めします。

https://autohotkey.com/




"keyboard.ahk"

/**
 * キーバインド
 *
 * "^" = Ctrl
 * "!" = Alt
 * "+" = Shift
 */

SendMode Event
;SendMode Play
;SendMode Input
;SendMode InputThenPlay

; 十字キーの移動(Ctrl + キー)
^i::Send {UP}
^j::Send {LEFT} ;←キーを割り当て
^l::Send {RIGHT}
^k::Send {DOWN} ;↓キーを割り当て
^u::Send {HOME}
^o::Send {END}

; 十字キーの選択移動(Ctrl + Shift + キー)
^+i::Send +{UP}
^+j::Send +{LEFT} ;←キーを割り当て
^+l::Send +{RIGHT}
^+k::Send +{DOWN} ;↓キーを割り当て
^+u::Send +{HOME}
^+o::Send +{END}


; eclipse;うまくいかないのでeclipse側でコマンドを変更することにした
;^+!o::Send ^+o
;return


; 削除(Ctrl + Alt (+ Shift) + キー)
^!l::
KeyWait Alt ;Altキーを離すまで実行されないようにすることで問題を回避
Send {DEL} ;Ctrl+Alt+Deleteとなりタスクマネージャが起動してしまう
return
^!j::Send {BS} ;Backspace
^!+l::Send {DEL} ;削除
^!+j::Send {BS} ;Shift + Backspace では動かないので{BS}のみ

; 無変換
sc07B::vkF3sc029 ;半角/全角

; カタカナ ひらがな
sc079::Send {BS}

; Ctrl + n
^n::Send {F2} ;名前の変更 


AutoHotkeyのバージョンが古いので、新しいバージョン(1.1.23.01)では、上記コード内に記述しているeclipseや削除部分での問題は解決しているかもしれません。
2010年当時には、参考にした日本語サイトが閉鎖したのでAutoHotkeyはもう更新されないと思っていたのですが、まだ開発を続けているみたいですね。

上記コードでは、カタカナ ひらがなキーを Back Space に置き換えていますが日常で使っていませんでした。同じようにCtrl + n で名前の変更できるようにしていましたが、こちらも使用していなかったのですが、今後活用してみようと思います。


最後に、このキーバインドに慣れると、他の人のPCを操作するときに不便に感じることがありますので、用法をお確かめの上ご利用ください。

ThinkPadのトラックポイントと組み合わせるとさらに効果的です。