Windows で US 配列のキーボードを使うとき Ctrl + ` で VS Code のターミナルをトグルできない件に対応する
最近、仕事で使っている Mac と自宅のデスクトップマシンである Windows で同じ US キーボードを使うように環境を整えている。なるべく Mac と Windows で同じキーバインドで同じ操作ができるようにして、環境ごとにキーバインドを覚えなくて良いようにしたい。
困ったこと
Windows で US 配列のキーボードを使うと、ctrl + `
が IME の切り替えに割り当てられる。
一方で VS Code のデフォルトのキーバインドでは ctrl + `
はターミナルの表示・非表示の切り替えに割り当てられている。
個人的な信条として、エディタのキーバインドはできるだけエディタのデフォルトのものを使いたい。そこで、US 配列キーボード + Windows の環境でも VS Code を使うときは ctrl + `
でターミナルの表示・非表示を切り替えられるようにする。
解決方法
自分は Windows では Auto Hot Key (AHK) を使って OS のキーバインドをカスタマイズしているので、AHK に設定を追加する方針で解決する。最近だと Power Toys を使っても同じことができるはず。
次の方針で解決する。
- AHK で
ctrl + `
をctrl + F22
に変換 - VS Code で
ctrl + F22
でもターミナルの表示・非表示を切り替える
AHK の設定
どうやら Windows が日本語環境の場合、 AHK 側では US 配列のキーボードでも ~ `
のキーは JIS 配列で言うところの 変換 無変換
キーと認識されているらしい。
これは Auto Hot Key Wiki のキーリスト によると 変換
= vkF3
、無変換
= vkF4
に該当するようなので、次のように設定する。
^vkF3:: Send "^{F22}"
^vkF4:: Send "^{F22}"
VS Code の設定
keybindings.json
に次の設定を追加する。
{
"key": "ctrl+f22",
"command": "workbench.action.terminal.toggleTerminal",
}
以上。
おまけ: AHKの設定
今の AHK の設定の全体はこんな感じ。キーボード側の設定でスペースキーの左側を F23
右側を F24
に設定しているが、あとは AHK で設定する方針。キーボードを変えた際も最低限の設定で同じキーバインドが使えるようになることが狙い。
カーソル操作は Mac のそれが好きなので、Windows でも Mac 風のカーソル操作ができるようにしてある。
#Requires AutoHotkey v2.0
#SingleInstance Force
; F23 -> IME Non-Convert
F23:: Send "{vk1D}"
; F24 -> IME Convert
F24:: Send "{vk1C}"
; Alt + Left: 単語の先頭に移動
!Left:: Send "^{Left}"
; Alt + Shift + Left: 単語の先頭まで選択
!+Left:: Send "^+{Left}"
; Alt + Right: 単語の末尾に移動
!Right:: Send "^{Right}"
; Alt + Shift + Right: 単語の末尾まで選択
!+Right:: Send "^+{Right}"
; Alt + BackSpace: 単語削除
!BackSpace:: Send "^+{Left}{BackSpace}"
; Ctrl + Left: 行頭に移動
^Left:: Send "{Home}"
; Ctrl + Shift + Left: 行頭まで選択
^+Left:: Send "+{Home}"
; Ctrl + Right: 行末に移動
^Right:: Send "{End}"
; Ctrl + Shift + Right: 行末まで選択
^+Right:: Send "+{End}"
; Ctrl + BackSpace: 行削除
^BackSpace:: Send "+{Home}{BackSpace}"
; Ctrl + `: VS Code のターミナル表示・非表示用に特殊なキーバインドを設定
^vkF3:: Send "^{F22}"
^vkF4:: Send "^{F22}"
Discussion