Zenn
🔙

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 を使っても同じことができるはず。

次の方針で解決する。

  1. AHK で ctrl + `ctrl + F22 に変換
  2. 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

ログインするとコメントできます