VIMでEscが遠い!keyhacとkeyswapで快適カスタマイズする方法
2022/07/25
vimを使っているとEscを多用する
私はテキストエディタにvimを使っていますが、ご存知のようにvimはEscキーを多用します。
vimは挿入モードやヴィジュアルモードなどの「モード」が幾つかあり、ノーマルモードに戻るときにEscを押さなきゃいけないんです。
問題は、Escキーが遠いということ。
キーボードはなんであんな離れ小島みたいなところにEscを追いやったのでしょうか。
確かに、Escキーは、vimを使ってなければそんなに多用はしません。
私もPCに初めて触れたときは、Escがなんのためにあるのかも分かってませんでした。
でも、vimを使っている今は違います。
なんとかEcsを簡単に押せるように試行錯誤した記録を綴ります。
ちなみに、発端は「Escを簡単に押したい!」でしたが、色々やっているうちにEsc以外のところもかなり快適になりました。
そのへんはvimを使ってない人でも参考になるかもしれませんので、vim関連のところはすっ飛ばしてこの記事を読んでみてください。
Escを簡単に押すための道のり
キーボード上でEscが遠いって言っても、左手の小指をちょっと伸ばせば届きます。
又は、中指のほうが押しやすいかもしれません。
中指は手首の動きだけで届きますが、小指は左腕全体を動かさないと届きませんね。
でも、しょっちゅう押すとなると、どちらにしろ結構ストレスになります。
出来れば左手をホームポジションから離したくない!
そこで考えるのが、Escキーに変わる方法。
vimは標準でも、以下の方法が用意されています。
- Ctrl-c
- Ctrl-[
Ctrl-cは、windowsではコピーのショートカットキーです。
よく使うやつなので、押し慣れていてまあ使いやすいです。
でもこれも、頻繁に使っていると、右手の小指が痛くなります!
Ctrl-[は、なんか押しにくいのでナシです。
次に考えるのはキーマッピング
ここで、みんなはキーマッピングを変更して対処しようとします。
キーマッピングを変えるというのは、簡単に言うとショートカットキーを変更するみたいなことです。
いろいろ調べていて,私がオモシロイと思ったのが、挿入モード中に「jj」とタイプするとEscの動作にするというもの。
「j」を一回タイプすると「j」って入力されるんですが、「jj」と2回jをタイプしたらEscの動作になります。
こういうことも出来るんですね。
勉強になりました。
これはいい!と思って早速採用したんですが、IMEがON(日本語入力中)のときに「jj」って打つと「っj」ってなって、Escの動作が発動しないんです。
これは困る。
ちなみにvimrcに下記を書くとこの動作になります。
inoremap jj <esc>
ほかには「Ctrl-j」をEscにマッピングするのは、なかなかいい線行っていました。
Ctrlは左手で押すことになりますが、右Ctrlより左Ctrlの方が、小指の動きが若干少なくて済むので楽です。
でも、やっぱりちょっと違う。
左手の小指が忙しい。
CapsLockと左Ctrlを入れ替える
これやってる人、結構いますね。
昔のパソコンで、現在のCapsLockの位置がCtrlだったやつがあるらしいです。
それに慣れてた人にとっては、goodな方法らしいんですけどね。
この入れ替えをして、「Ctrl-j」をEscに割り当てておけば、かなり使いやすいですね。
左小指を、左に一つずらすだけなので、負担が少ないです。
でも、CapsLock本来の機能は、これはこれで使います。
あんまり使わないって人もいるみたいですが、私は使うんですよ。
IMEのon/offに、Shift+CapsLockで大文字の入力に。
なので、CapsLockがこの位置にないのは、個人的にちょっと使いにくいですね。
結構惜しいとこまで来ましたよ。
ちなみに、CapsLockとEscを入れ替えるというのもやってみました。
Escは超押しやすくなって快適だったんですが、問題が。
押しやすすぎるんです
Shiftを押そうとしてEscを押してしまう事故が頻発。
日本語の変換中に、変換範囲を変えるのにShift+カーソルキーで操作しますよね。
その時にEscを押しちゃうんです。
すると、せっかく打った変換前の文字が無情にも消えてしまうんですよ。
だめだ。
押しやすすぎるのもいけない。
キーを入れ替える方法は、レジストリを直接いじる方法もありますが、お手軽にフリーソフトの「keyswap」を使えば出来ます。
結果は同じなので、分かりやすいのがいい人はkeyswapを使えばいいと思います。
でも、CapsLockはかなり使いやすいので、コレをどうにかする方向でもうちょっと考えてみます。
keyhacと言う素晴らしいソフトを発見
keyhacとは・・・
このソフトウェアは、スクリプト言語 Python を使って、キーボード操作を カスタマイズするアプリケーションです。
アプリケーションの標準のキーアサインを柔軟にカスタマイズしたい人に とって便利なソフトウェアです。
公式サイトより引用
うん。なんか取っ付きづらい。
Pythonなんて微塵も知らんぞ。
keyhacはタスクトレイに常駐するタイプのソフトで、config.pyと言う設定ファイルにPythonと言うスクリプト言語で設定を記述することによって、キーボードの動作をカスタマイズできるようです。
これを使えば、なんか便利なことになりそうな気がする!
と直感的に思った私は、いろいろいじってみることに。
公式サイトのヘルプをみたら、設定例が色々書いてあるので、見様見真似でやってみたら、案外なんとかなるもんですね。
keyhacで出来ることは、
- 単純なキーの入れ替え
- 任意のキーを修飾キーに出来る
- その修飾キーのみを押した時に、別の動作を設定できる「ワンショットモディファイア」
- キー操作でマウスカーソルを動かしたり、ウィンドウを動かしたり
他にも、すごいいろんなことが出来そうな雰囲気なんですが、私が理解できるのはこの辺までです。
これだけ分かれば十分便利に使えます。
keyhacとkeyswapで全て解決
いろいろ試しましたが、keyswapとkeyhacを合わせて使って、快適な設定が完成しました。
CapsLockキーを修飾キーとして使うのを基本とします。
修飾キーとはCtrlキーみたいなもので、それ単体ではあんまり意味は無いけれど、「Ctrl+s」で「保存」みたいな動をするものです。
つまり、「CapsLock+何かのキー」で特定の動作をするように設定しています。
では、私がやった具体的な設定例を紹介します。
Capslock単独 | CapsLock単独の動作 |
Shift + Capslock | CapsLock |
まず、CapsLock本来の動作は潰したくなかったので、CapsLockを単独で押した時は、本来と同じIMEのon/offに使います。
これは、私の使っているIME、google日本語入力側の設定でそういう風に設定しています。
keyhacには、特定のキーを修飾キーにできるし、そのキーを単独で押した時は別の動きを設定できる「ワンショットモディファイア」と言う機能があります。
その機能を利用しています。
また、Shift + CapsLockでCapsLockがかかる(大文字が入力できる)というのも、本来のCapsLockと同じ動作です。
CapsLock + 右手のキー
右手のキーとは、上の画像で示している「右手ゾーン」のキーのことです。
まずは、CapsLock + このキー達をおした時の設定を考えます。
Capslock + ; | Esc |
当初の目的であるEscを簡単に押すと言うのは、このキーになりました。
左手小指を「a」から左に一つずらすだけ + 右手小指のホームポジション
なので、非常に少ない動きでEsc出来ます。
べんり!
Capslock + h | カーソルキー左 |
Capslock + j | カーソルキー下 |
Capslock + k | カーソルキー上 |
Capslock + l | カーソルキー右 |
h,j,k,lと言えば、言わずと知れたvimのカーソル移動のキー。
CapsLockを押しながらhjklを押せば、vim以外のどんなアプリケーションでもvim風カーソル移動を楽しめます!
これがやりたいがために、Escを「Capslock + j」とせずに「CapsLock + ;」にしています。
Capslock + : | BackSpace |
Capslock + ] | Delete |
Capslock + / | Enter |
Deleteもまた、離れ小島に住んでるので遠い。
なので右小指ですぐ押せる位置にお引越し。
BackSpaceもよく押すので、ちょっとでも近いほうがいい。
右小指を右に一つずらすだけで押せます。
ここまで来たら、Enterすら遠いと感じてきました。
Enterが遠いって、かなりの重症じゃないか?と我ながら思いますが、右小指を下に一つずらしたとこにEnterがあったら、結構便利です。
Capslock + n | Home |
Capslock + m | PageDown |
Capslock + , | PageUp |
Capslock + . | End |
右手ホームポジションの1段下。
コンパクトなキーボードだと、HomeやPageDownが無かったり、押しにくい位置にあったりします。
こう設定しておけば、どんなキーボードでもおなじ感覚で使えるます。
Capslock + y | Shift+カーソルキー左 |
Capslock + u | Shift+カーソルキー下 |
Capslock + i | Shift+カーソルキー上 |
Capslock + o | Shift+カーソルキー右 |
右手ホームポジションの1段上は、Shift+カーソルキーにしました。
漢字変換の時の範囲を変えるときや、文字列の選択なんかに(vim以外の)。
CapsLock + 左手のキー
左手のキーは、上の図で「左手ゾーン」の範囲のやつですね。
こいつらは、Ctrl + 左手のキーをおした時と同じになるように設定しています。
つまり、
Capslock + a | Ctrl + a(全選択) |
Capslock + s | Ctrl + s(保存) |
Capslock + c | Ctrl + c(コピー) |
Capslock + v | Ctrl + v(ペースト) |
みたいな感じですね。
Ctrlを使ったほうが押しやすかったりするので、そんなに使いませんが、遊ばしとくのももったいないので一応設定しています。
今回の設定のコンセプトとして、
- 他の人がこのPCを触った時に違和感を感じない
というのを意識しています。
CapsLock単独、Shift + CapsLockはもともとと同じ動きになるようにしていますし、「CapsLock + 他のキー」と言う使い方は普通はしないので、こんな設定をしていることには誰も気づかないわけです。
今回の設定では、CapsLockを修飾キーにして、ホームポジションからほとんど動かずにカーソル、Del,Back space,Enter,Esc, Home,End,PageUp,PageDown,ウィンドウの移動などが可能。
非常にコンパクトな動きで文字入力ができるので、ハマれば快感すら感じます。
具体的な設定 keyswap
keyswapは前述のとおり、キーを入れ替えられるソフト。
まずはこれで、変換キーとCapsLockを入れ替えます。
なんでこんなことをするかというと、keyhacでCapsLockを修飾キーに設定しようとしたら、なんか出来なかったから。
なので、私は全く使わない変換キーをCapsLockの位置に持って行き、keyhacでは変換キーを修飾キーとする設定を行います。
つまり、テキストを編集している時に、
私がキーボードの「CapsLodk」と印字されたキーと「J」を押す。
↓
Windowsは「変換 + J」が押されたと認識
↓
keyhacが「変換 + J」の入力を「カーソルキー下」に変換
↓
カーソルが1行下に行く
とういう流れですね。
具体的な設定 – keyhac
細かい説明は省きますが、keyhacをインストールしたら出来る、”config.py”と言う設定用のファイルの末尾に、下記をコピペするとokなはずです。
上では説明していないキーを設定していたり、もうちょっと無駄のない記述ができるかもしれませんが、私に出来るのはこんな感じです。
#----------------------------------------------------# }}}
#スペースをシフトキーの機能をもたせる(U1){{{
#Spaceに仮想キーコード236を割り当て
keymap.replaceKey( "Space", "236" )
#236にU1を割り当て
keymap.defineModifier( 236, "User1" )
#U1にShiftの機能を割り当てる(参考:http://saldn.hatenablog.jp/entry/2014/10/12/141612)
for keycode in range(1,255):
keymap_global[ "U1-" + str(keycode) ] = "Shift-" + str(keycode)
#スペースキーのみを押した時は本来の動作をする
keymap_global[ "O-236" ] = "Space"
#Shift,Ctrl,Altとスペースの組合せの設定
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[any + "236"] = any + "Space"
#----------------------------------------------------}}}
#変換キー(U0)----------------------------------------------------{{{
# キーの単純な置き換え
#変換キー(28)を仮想キーコード235に割り当て
keymap.replaceKey( "(28)", 235 )
# ユーザモディファイアキーの定義
# 仮想キーコード235をユーザーモディファイア0番に割り当て
keymap.defineModifier( 235, "User0" )
#変換キー本来の動作をするようにワンショットモディファイア設定
#keymap_global[ "O-235" ] = "(29)"
#変換キーワンショットモディファイアで半角/全角(IMEのon/off)
keymap_global[ "O-235" ] = "243"
#シフト+変換キーでCapslock
keymap_global[ "Shift-235" ] = "CapsLock"
#変換+;でEscape
keymap_global[ "U0-Semicolon" ] = "Escape"
# }}}
# USER0-/でEnter
keymap_global[ "U0-slash" ] = "Enter"
# USER0-hjkl : vim風カーソル移動# {{{
keymap_global[ "U0-h" ] = "Left"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[any + "U0-h" ] = any + "Left"
keymap_global[ "U0-j" ] = "Down"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[ any + "U0-j" ] = any + "Down"
keymap_global[ "U0-k" ] = "Up"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[ any + "U0-k" ] = any + "Up"
keymap_global[ "U0-l" ] = "Right"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[ any + "U0-l" ] = any + "Right"
# }}}
#U0-N Home# {{{
keymap_global[ "U0-n" ] = "Home"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[any + "U0-n" ] =any + "Home"# }}}
#U0-M PageUp# {{{
keymap_global[ "U0-m" ] = "PageDown"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[ any + "U0-m" ] = any + "PageDown"# }}}
#U0-, PageDown# {{{
keymap_global[ "U0-Comma" ] = "PageUp"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[ any + "U0-Comma" ] = any + "PageUp"# }}}
#U0-. End# {{{
keymap_global[ "U0-Period" ] = "End"
for any in ("S-", "C-", "C-S-", "A-", "A-S-", "A-C-", "A-C-S-", "W-", "W-S-", "W-C-", "W-C-S-", "W-A-", "W-A-S-", "W-A-C-", "W-A-C-S-","RA-RC-","RS-"):
keymap_global[ any + "U0-Period" ] = any + "End"
# }}}
#U0-yuio→Shift+カーソル(範囲選択、変換中文字の範囲変更)# {{{
keymap_global[ "U0-y" ] = "S-Left"
keymap_global[ "U0-u" ] = "S-Down"
keymap_global[ "U0-i" ] = "S-Up"
keymap_global[ "U0-o" ] = "S-Right"
# }}}
#U0-: BackSpace# {{{
keymap_global[ "U0-colon" ] = "Back"
# }}}
#U0-] Delete# {{{
keymap_global[ "U0-CloseBracket" ] = "Delete"
# }}}
# USER0-↑↓←→ : 30pixel単位のウインドウの移動# {{{
keymap_global[ "U0-Left" ] = keymap.command_MoveWindow( -30, 0 )
keymap_global[ "U0-Right" ] = keymap.command_MoveWindow( +30, 0 )
keymap_global[ "U0-Up" ] = keymap.command_MoveWindow( 0, -30 )
keymap_global[ "U0-Down" ] = keymap.command_MoveWindow( 0, +30 )
# }}}
# USER0-Shift-↑↓←→ : 1pixel単位のウインドウの移動# {{{
keymap_global[ "U0-S-Left" ] = keymap.command_MoveWindow( -1, 0 )
keymap_global[ "U0-S-Right" ] = keymap.command_MoveWindow( +1, 0 )
keymap_global[ "U0-S-Up" ] = keymap.command_MoveWindow( 0, -1 )
keymap_global[ "U0-S-Down" ] = keymap.command_MoveWindow( 0, +1 )
# }}}
# USER0-Ctrl-↑↓←→ : 画面の端まで移動# {{{
keymap_global[ "U0-C-Left" ] = keymap.command_MoveWindow_MonitorEdge(0)
keymap_global[ "U0-C-Right" ] = keymap.command_MoveWindow_MonitorEdge(2)
keymap_global[ "U0-C-Up" ] = keymap.command_MoveWindow_MonitorEdge(1)
keymap_global[ "U0-C-Down" ] = keymap.command_MoveWindow_MonitorEdge(3)# }}}
# USER0-6789 : 50pixel単位のウインドウの移動# {{{
keymap_global[ "U0-6" ] = keymap.command_MoveWindow( -50, 0 )
keymap_global[ "U0-9" ] = keymap.command_MoveWindow( +50, 0 )
keymap_global[ "U0-8" ] = keymap.command_MoveWindow( 0, -50 )
keymap_global[ "U0-7" ] = keymap.command_MoveWindow( 0, +50 )
# }}}
# USER0-6789 : 5pixel単位のウインドウの移動# {{{
keymap_global[ "U0-S-6" ] = keymap.command_MoveWindow( -5, 0 )
keymap_global[ "U0-S-9" ] = keymap.command_MoveWindow( +5, 0 )
keymap_global[ "U0-S-8" ] = keymap.command_MoveWindow( 0, -5 )
keymap_global[ "U0-S-7" ] = keymap.command_MoveWindow( 0, +5 )
# }}}
# USER0-Ctrl-6789 : 画面の端まで移動# {{{
keymap_global[ "U0-C-6" ] = keymap.command_MoveWindow_MonitorEdge(0)
keymap_global[ "U0-C-9" ] = keymap.command_MoveWindow_MonitorEdge(2)
keymap_global[ "U0-C-8" ] = keymap.command_MoveWindow_MonitorEdge(1)
keymap_global[ "U0-C-7" ] = keymap.command_MoveWindow_MonitorEdge(3)
# }}}
# USER0-各キー:Ctrl-各キー(左手範囲内で)# {{{
keymap_global[ "U0-z" ] = "C-z"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-z" ] = any + "C-z"
keymap_global[ "U0-x" ] = "C-x"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-x" ] = any + "C-x"
keymap_global[ "U0-c" ] = "C-c"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-c" ] = any + "C-c"
keymap_global[ "U0-v" ] = "C-v"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-v" ] = any + "C-v"
keymap_global[ "U0-b" ] = "C-b"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-b" ] = any + "C-b"
keymap_global[ "U0-a" ] = "C-a"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-a" ] = any + "C-a"
keymap_global[ "U0-s" ] = "C-s"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-s" ] = any + "C-s"
keymap_global[ "U0-d" ] = "C-d"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-d" ] = any + "C-d"
keymap_global[ "U0-f" ] = "C-f"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-f" ] = any + "C-f"
keymap_global[ "U0-g" ] = "C-g"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-g" ] = any + "C-g"
keymap_global[ "U0-q" ] = "C-q"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-q" ] = any + "C-q"
keymap_global[ "U0-w" ] = "C-w"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-w" ] = any + "C-w"
keymap_global[ "U0-e" ] = "C-e"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-e" ] = any + "C-e"
keymap_global[ "U0-r" ] = "C-r"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-r" ] = any + "C-r"
keymap_global[ "U0-t" ] = "C-t"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-t" ] = any + "C-t"
keymap_global[ "U0-1" ] = "C-1"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-1" ] = any + "C-1"
keymap_global[ "U0-2" ] = "C-2"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-2" ] = any + "C-2"
keymap_global[ "U0-3" ] = "C-3"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-3" ] = any + "C-3"
keymap_global[ "U0-4" ] = "C-4"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-4" ] = any + "C-4"
keymap_global[ "U0-5" ] = "C-5"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-5" ] = any + "C-5"
keymap_global[ "U0-Tab" ] = "C-Tab"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-Tab" ] = any + "C-Tab"
#スペースキー = 236
keymap_global[ "U0-236" ] = "C-Space"
for any in ("S-", "A-", "A-S-", "W-", "W-S-", "W-A-", "W-A-S-","RS-"):
keymap_global[any + "U0-236" ] = any + "C-Space"
まとめ
この設定で慣れると、他のPCを使った時に一生懸命CapsLockを無駄に押してしまう、というのが数少ない欠点です。
あと、リモートで他のPCに接続した時も、この設定は有効にならなかったりするので、一瞬戸惑ってしまいます。
でも、一回やったらやめられなくなりますよ。