## 事象
以下で`Ctrl+Space`のキーバインド(keymap)が設定できない。キーによって反応するものと反応しないものがある。
```lua
local key = vim.keymap.set
-- TODO: 手動でオートコンプリート
key("i", "<C-Space>", "なんでも")
```
## 原因
(詳細は分からないが) ターミナルでは設定できないキーマップが存在するから。他に`Ctrl+ハイフン`なども。
## 解決方法
[[AutoHotkey]]などでターミナル起動中だけkeymap可能なキーにリマップする。たとえば、以下のような感じ。
| キー | リマップ後のキー |
| --------------- | ---------------- |
| `Ctrl+Space` | `F5` |
| `Ctrl+ハイフン` | `F12` |
具体的には[[AutoHotkey]]だと以下のようなスクリプトを書く。
```autohotkey
;【概要】指定されたウィンドウがターミナルか
;【戻値】true / false
isTerminal() {
WinGet, ahk_process, ProcessName, A
return ahk_process == "WindowsTerminal.exe"
}
;Ctrl+Spaceキー (ターミナルの場合はCtrl+Spaceが使えないのでF5で代用)
$^Space::
if (isTerminal()) {
send {F5}
} else {
send ^{Space}
}
return
```
[[init.lua]]は以下。
```lua
-- Ctrl+Spaceで割り当てたいコマンド
vim.keymap.set("i", "<F5>", "コマンド")
```