ターミナル上などでショートカットキーを使う際に 良く使うモディファイアキーはShiftの次にControlになると思います。
そんなControlは通常キーボードだと恐ろしく押しにくい所にありますが、 それを親指で押せる様な所に持ってくるのが一番幸せになると思います。
親指Control
巷で噂の親指シフトとかの様なかな入力とかをどうこうするというシステムの話ではなく、 単にControlを親指で押せる所に持ってこよう、という話。
親指で押せる所、と言うとSpaceもそうですが その両側のWindows/LinuxのAlt、MacのCommandの位置も親指で押します。
日本語キーボードだとその間にも色々付いてますがAltとかまでは親指で手を大きく動かさずに 押せる所に付いてるかと思います。
親指で押せると良いことは、全てのキーにおいて通常通りの指でControlと同時押しが出来ることです。
Capsの位置にControlを置いて使うと左小指で常にControlを押すことになりますが、 これだとControl-Aに関してはAを薬指で押すことになります。
この場合右手で右Controlを押せば左小指でAを押せますが、 右Controlもまた右下の方の使えないところにあったり Macのキーボードとかだとそもそもなかったりします。
これに対して親指Controlならホームポジションから全く動かずに通常通りの指で各キーを押すことが出来ます。
親指であれば基本スペース以外に押さないわけで、 普通使わないですが、仮にControl-Spaceなんてのを使いたいとしても 左親指Control、右親指SpaceでOK。
AltはControlに比べてターミナルやVim/Emacsと言った作業場では ほとんど使わないのでこれを所謂Capsの位置(HHKBとかならControlの位置)に置きます。
Macだとアプリケーションのショートカットとかは基本Commandを使うので そういった所で全開でショートカットを使う人な場合は ターミナル上だけで⌃⌘スワップをした方が良いかもしれません。
もしくはよく使うアプリの方で再スワップするかよく使う特定のキーだけでもCtrlを使った キーに置き換えるとか。
まあその辺もいろいろ慣れですが、少なくともターミナルでの作業では Ctrlを頻繁に押すので一番負担のない所に置くべきです。
通常のキーボードでControlをそのままで使ってるのは問題外として、 Capsの位置で使っている時もずーと作業していると徐々に小指が 痛くなってくる様な事もありましたが、 親指にしてからは小指の負担はなくなりましたし、 親指も全く負担になりません。
ということで、絶対に一番良いキー配置はスペース横にControlで 親指Controlだと思っています。
が、なかなか賛同者が居ない。。。(周りもしないしネットでも全く見かけない。。。)
デフォルト状態で使うべきだ、という信念を持っている人はまあ分かるっちゃ分かるのですが 少なくともCapsへControlを持っていくような 変更をなんらかの方法でしている人は考えに入れても良いのにな、と思います。
Vim使いでコマンドラインもVimモード、Controlは使わない、というのならあれですが、 Emacsを使ってる人でデフォルト状態で使ってる人はショートカットなんて全然使わないか 物凄い勢いで手を動かしたりして。。。
VimでもESCの代わりにCtrl-[ を使ったり、Ctrl-F/Bで移動とか、 Ctrl-Nで補完とか色々あるとは思いますが。
ターミナル作業では常にControlが必要になるとは思います。 (まあ、ひたすらカーソルキーやバックスペースを使う人もいますが。。。)
という訳で、少しでも快適なキー配列を求めて色々やっている人が居たら 是非親指Controlを試してみてください。
Windowsでの設定方法
WindowsでのCapsLockなどの変換は keyswap というアプリを使ってレジストリーレベルでの変更を行っています。
変更としては
- 左Alt 左Control
- 左Control 左Alt
- CapsLock 左Alt
- 右Alt 右Control
- 右Control 右Alt
といった感じ。CapsLockは潰します。 また、HHKBなどを使う場合には元々CapsLockの位置にControlがあるので こうしておかないとキーボード毎に色々変えなきゃいけないのでこんな感じに。
AutoHotkeyを使って他に色々と設定を行っていますが、 この部分に関しては単にCapsLock、Control、Altを交換しようとして
CapsLock::Alt
Alt::Ctrl
;Ctrl::CapsLock ; HHKBの為に設定しない。CapsLockを潰す
みたいな設定をすると、CapsLock自体やControl-Aの様な単独キーは大概問題なく動くのですが、 Control-Alt-Aみたいな複合で使おうとすると上手く動きません。
*CapsLock::Alt
*Ctrl::CapsLock
*Alt::Ctrl
みたいな設定をしても上手く動きませんでした。
CapsLock
の代わりにキーコードであるsc03A
を使って
sc03A::Alt
; もしくはコントロールにするなら sc03A::Ctrl
みたいなのもよく見ますが特に変わりなく同じように動きます。
この辺CapsLockもその他の修飾キーも少し特殊な動作をするものなので 単なるスワップでは上手く行かないこともあるようで、 レジストリーレベルできっちり交換しておいた方が問題なく動きます。
これで基本Altの位置にControlが来るわけで、 Controlを使ったショートカットが使いやすくなるわけですが、 1つ、Alt-Tabでのアプリの切り替えはやはり親指+小指のやりかたが使いやすいので、 その部分はAutoHotkeyで
<^Tab::AltTab
!Tab::Send, ^{Tab}
!+Tab::Send, ^+{Tab}
と言った変更を行っています。 最初のがり親指Ctrl+小指Tabでのアプリ切り替え。
後の2つが本来のCtrl-Tabでのブラウザなどでのタブの切り替えに関するショートカットです。
上のAltTab
という設定は通常の!{Tab}
みたいなのを入れてしまうと
一回一回押して離したと判定されてControlを押したままでも選択ウィンドウが閉じてしまいます。
そうならないようにこのAltTab
という特殊なキーが用意されていてこれを使うと
Controlを押している間は選択ウィンドウが閉じなくなります。
ただ、このAltTab
に関しては指定する時に左の入力キーの修飾キーを左右どちらかに指定しないといけません。
単に^Tab
と書いて読み込もうとすると
The AltTab hotkey "^Tab" must specifiy which key (L or R).
というエラーが出ます。なので<
という左の指定をしています。
さらにこれと同じ様なShiftAltTab
というキーもあるのですが、これを
<+<^Tab::ShiftAltTab
とか設定しようとすると、
The ShiftAltTab hotkey "<+<^TaB" must have exactly one modifier/prefix.
と出てしまって、複数の修飾キーを置くことは許されません。
ということで仕方ないのでこれに関しては一方方向のみの設定となっています。
Macでの設定方法
現在macOS High Sierraですが、 Karabiner-Elements で設定しています。
Simple Modificationsの設定で
- left_command left_control
- left_control left_command
- caps_lock left_command
- right_command right_control
- right_control right_command
な設定に。 こちらもCapsLockを潰してしまいます。
Macの場合はKarabiner-Elementsを使ってない場合は 環境設定のキーボードの設定で修飾キーの設定が簡単に出来るので そこでも変える事が出来ます。
ただ、Karabiner-Elementsを使ってる場合はそちらを無視して Karabiner-Elementsの設定を使うことになるのでちょっと注意です。 (Karabiner-Elementsで何も設定しない場合、修飾キーの設定で変更していたとしても Karabiner-Elementsを動かすとデフォルトのキー配列に戻ります。)
Macでの⌘-Tabもアプリ切り替えなのですが、 これはアプリごとの切り替えでウィンドウがいくつ開いていても1つとしてアプリの切り替えが行われます。 これに関してはHyperSwitchというアプリを使うとWindowsの様なウィンドウ毎の切り替えが出来るのでこれを導入しています。
このアプリの中で⌃-Tabを切り替えキーにあててるので Windows同様に親指Ctrl+小指Tabでの切り替えを行える様にしています。
タブ移動などに関してはHyperSwitchを使ってたりアプリによって ショートカットキーが違ってたりして結構複雑ですが 以下の様に設定しています。
まとめ
試してしばらくつかって慣れればこれ以上無く便利だと思うので、 是非試してみてください。