みなさんこんにちは yuni と申します!
今回はキーボードのキー入力をカスタマイズしてできるだけ楽をしていこうと思います。
必要な環境
- Windows
理想のキーボード
ほぼ毎日キーボードには触れるので、ちょっとでも使いづらい部分はだんだんと誇張されて次のキーボードを探してしまいたくなりますよね。
そんな日々とは別れ、理想のキーボードを作り上げるためにも、まずは今までの不満点を挙げていきます。
不満点① : 矢印キーの位置が遠い
プログラミングをする際にも矢印キーはよく使うものなのですが、その位置が扱いにくいと日頃感じていました。
ホームポジションにある指を一度右下までもっていき、もう一度ホームポジションに戻すときに指の位置がずれていてミスタッチという流れが頻発していました。
慣れの問題という一面もあると思いますが、ここで「ホームポジションに指を置いたまま矢印キーを使えたら楽だろうな。自由にカスタマイズしたい」という欲求が目覚めてしまいます。
不満点② : ショートカットキーが押しずらい
[ Shift + Alt + , ] : タブ移動
[ Win + Alt + Tab ] : ウィンドウ切り替え(右)
[ Win + Alt + Shift + Tab ] : ウィンドウ切り替え(左)
このように修飾キーをたくさん使うショートカットは、覚えにくい・押しにくいの二重苦でした。
ソフト側でショートカットキーの割り当てを変えられるものも多くあるのですが、変えた先のショートカットキーが別のショートカットとかぶってしまう事があるためできるだけ編集しない方が楽だと思います。
ソフト側のショートカットの競合は無視して、自分が使いたいと思ったものだけ、簡単に押せるところに配置したいところです。
不満点③ : マウスとキーボードの反復移動を減らしたい
GUI 操作ではマウス操作とキーボード操作を反復して行う場面も多々あります。
できるだけキーボードだけで済ませたい私は tabキーと矢印キーによる移動でできるだけマウスを使わないようにがんばるのですが、割とすぐに限界が来ます。
「ああ、ここはtabで移動できないんだ」という微小なストレスを避けるためにも、何かいい策を見つけたいところです。
しかしここまでくると、素直に手を反復させるか、トラックパットを用意した方が早いと思います。
発見した解決策
AutoHotKey がすべてを解決してくれました。
こちらのソフトは Windows 限定ですが、無料でかなり高度なキーボードのカスタマイズができるものです。
.ahk 形式のファイルを作成して AutoHotKey.exe を起動させることでキー入力の上書きをしてくれます。
単純な入れ替え
「入力A」を「入力B」に置き換える構文です。
; a を b に置換
a::b
; a と b の同時押しを c に置換
a & b::c
; Control + j を Left に置換
^j::Left
; a を Control + a に置換
a::Send,^{a}
置換前のキーと置換後のキーを"::"でつなぐことで動作しています。修飾キーとの同時押しは「対応する記号 + 使いたいキー」で表現します。記号の対応は下のリストに載っている通りです。
- # : Windows
- ! : Alt
- ^ : Control
- + : Shift
逆に修飾キーとの組み合わせを出力したいときは、"Send,"の後に続けて、修飾キー以外を "{}" の内側に記述します。
また、"Send,"以降に{Blind}と入れることで、キーの同時押しに対応させることもできます。逆にこの記述がないと修飾キーも無効になるので注意です。
コメントをつける
すでに使っていましたが、.ahk ファイル内では";"の後ろの文字をコメント化することができます。
; ここにコメント!
キーの無効化
CapsLock や Numlock を封印したい時には、キー入力を Return に変換します。
CapsLock::Return
これで Capslock が無効化されます。
ちなみに、改行キーは Return ではなく Enter で表現されています。
自分で試してみた例
上で上げた不満点をすべて解決できる .ahk ファイルは以下のようなものになりました。
;カーソル
;無変換キー + ijkl -> カーソルキー
vk1D & h::Send,{Blind}{Left}
vk1D & l::Send,{Blind}{Right}
vk1D & k::Send,{Blind}{Up}
vk1D & j::Send,{Blind}{Down}
;共通
;リネーム
vk1D & r::Send,{Blind}{F2}
;デリート & バックスペース
vk1D & d::Send,{Blind}{Del}
vk1D & b::Send,{Blind}{BS}
;エンター
vk1D & f::Send,{Blind}{Enter}
;メディア再生一時停止
vk1D & m::Media_Play_Pause
;ウィンドウ切り替え
vk1D & x::Send,{Blind}#!{Tab}
vk1D & z::Send,{Blind}#!+{Tab}
;タブ切り替え
vk1D & z::Send,{Blind}^{Tab}
vk1D & z::Send,{Blind}+^{Tab}
;戻る/進む
vk1D & c::Send,{Blind}!{Left}
vk1D & v::Send,{Blind}!{Right}
;マウス操作
;左クリック
vk1C & ,::MouseClick, Left,,,,,D
;右クリック
vk1C & .::MouseClick, Right
;カーソル移動
vk1C & j::MouseMove -10, 0, 0, R
return
vk1C & l::MouseMove 10, 0, 0, R
return
vk1C & i::MouseMove 0, -10, 0, R
return
vk1C & k::MouseMove 0, 10, 0, R
return
vk1D は無変換キー、vk1Cは変換キーです。ちょうど親指の位置にあるので他のキーとの同時押しやすいです。
簡単にセットアップできて、ほかのコードのコピペもしやすいということで、カスタマイズは楽に進められました。
指を動かすことが面倒な方は、ぜひ試してみてください!
参考にした記事
https://netwiz.jp/autohotkey/
https://fuchiaz.com/usage-autohotkey/#i-6
http://ahkwiki.net/KeyList
https://www.autohotkey.com/docs/Tutorial.htm