【Windows10】マウス、カーソルキーの使用頻度を減らす（Ctrl/ESC/BS）

# １．きっかけ

Obsidianを使い始め、VIM操作モードを有効にして使っています。 今までもコーディングではvimを使っていましたが、Windows環境では積極的にvi環境にしようと思っていませんでした。

今回、Obsidianを使い始め、この問題に改めて直面し考えた結果、「日本語入力への切り替えと操作が競合する」と気付きました。 日本語入力を「Ctrl+Space」で切り替えられるようにして、CapsをCtrlで上書きしました。まだ慣れていなくてShiftと間違えることがありますが、変えて正解でした。

# ２．想定読者

- Windows10でマウスやカーソルキーの使用頻度を減らしたい人
- Windows10上でCtrl,ESC,BSの位置を変えたい人
- Windows10上でVIM互換操作を快適にしたい人
	- 読み替えればEmacs操作のカスタムも可能です。

# 3．参考にしたページ

- https://www.google.co.jp/ime/ （Google日本語入力）
- https://www.losttechnology.jp/Win7/keycustomize.html （ESC、Ctrl）　
- https://www.saluteweb.net/~oss_keyswap.html （ESC、Ctrl）
- http://maikaze.cafe.coocan.jp/keycodes.html （キーコード一覧）
- https://www.atmarkit.co.jp/ait/articles/1805/28/news022.html （Google日本語入力）
- https://loumo.jp/archives/25374 （ctrl2cap）
- https://pcmanabu.com/windows10-ime/ （変換、無変換）

# 4．キーバインド/Windows10

## ctrl2capを使う

CapsLockをCtrlにします。（入れ替えではありません）

1. Ctrl2Capsをダウンロード、解凍する。
	- https://docs.microsoft.com/en-us/sysinternals/downloads/ctrl2cap
2. コマンドプロンプトを管理者権限で立ち上げる。
3. ```ctrl2cap /install```を実行。
4. Windows10を再起動する。

## レジストリーを書き換える（未経験者は非奨励）

### 手順
1. 下記の内容を「LayoutScancodeMap.reg」に保存する。
2. 作成した「LayoutScancodeMap.reg」をダブルクリックする。
3. Windows10を再起動する。

### 変更内容その１

CapsLockをCtrlに、半角全角をEscにします。（入れ替えではありません）

```
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,01,00,29,00,00,00,00,00
```

### 変更内容その２

CapsLockをCtrlに、無変換をEscに、変換をBSにします。（入れ替えではありません）

```
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,1d,00,3a,00,01,00,7b,00,0e,00,79,00,00,00,00,00
```

### キーコード
| ESC | BS | 左Ctrl | CapsLock | 変換 | 無変換 |
| --- | --- | --- | --- | --- | --- |
| 0x0001 | 0x000e | 0x001d | 0x003a | 0x0079 | 0x007b |

# 5．キーバインド/Google日本語入力

## Google日本語入力インストール済みからの手順
1. タスクバーの「```あ```」もしくは「```A```」を右クリック
2. 「```プロパティー```」をクリック
3. ```一般```タブ → ```キー設定/キー設定の選択```
4. ```MS-IME```を選択して```編集```をクリック ※MS-IMEは好み
5. （設定の変更）　
6. ```OK```で変更を確定。
7. 日本語入力を利用するソフトを再起動する。

## 設定内容A
- 4箇所にある ```Hankaku/Zenkaku``` を全て ```Ctrl+Space``` に変更。

## 設定内容B（変更内容その２では不要）
- ```Muhenkan``` と ```Henkan``` は、```Ctrl+Muhenkan``` と ```Ctrl+Henkan``` に変更。
	- 使わないなら削除でもOK。初期化もできる。
- ```直接入力``` ```Hekan``` ```IMEを有効化``` を追加。　
- ```入力文字なし``` ```Muhekan``` ```IMEを無効化``` を追加。　
- ```変換前入力中``` ```Muhekan``` ```IMEを無効化``` を追加。　
- ```変換中``` ```Muhekan``` ```IMEを無効化``` を追加。　

## 設定内容C
- ```変換前入力中``` ```Ctrl+文字``` ```コマンド``` の、```文字``` の割り当てを変える。
- ```変換中``` ```Ctrl+文字``` ```コマンド``` の、 ```文字``` の割り当てを変える。

### 使用頻度の高いもの

#### 変換中
- 文節を縮める ```Ctrl+H```
- 文節を伸ばす ```Ctrl+L```
- 次候補を選択 ```Ctrl+J```
- 前候補を選択 ```Ctrl+K```
- 文節を左に移動 ```Ctrl+N``` EMACSな人には違和感があると思う。　
- 文節を右に移動 ```Ctrl+P``` （同上）　

#### サジェスト表示中
- 予測変換 ```Ctrl+J```

### 雑感
- VIM派は文字の意味よりも指の配置を考慮するといいと思う。
	- 思えないと意味がないのでバランスは大切。
- EMACS派は文字の意味で。

## 設定内容（備考）
- 上記の全てが設定済み（ ```Ctr+文字``` についてはVIM風）のサンプルが「おまけ」にあります。

# ６．単語登録
- 「抑制単語」用の辞書
	- https://www.itmedia.co.jp/pcuser/articles/1612/11/news009.html
- 「絵文字」用の辞書
	- https://qiita.com/peaceiris/items/c40ba39679daeb7555c2
- その他用の辞書

# 7．おまけ

## ノーマルモードに戻る（ESCではなくて）
- https://vim.blue/vim-esc-altanative-keybind/
- ```Ctrl+［``` ESCの代替え（上記ページより）。
- ```Ctrl+C``` 強制キャンセル（上記ページより）

## GoogleKeymap.txt（サンプル）

### インポート用テキストファイルの内容

```
status	key	command
DirectInput	Ctrl Space	IMEOn
DirectInput	Henkan	IMEOn
DirectInput	Eisu	IMEOn
DirectInput	Hiragana	Backspace
DirectInput	Katakana	IMEOn
DirectInput	F13	IMEOn
Precomposition	Ctrl Space	IMEOff
Precomposition	Muhenkan	IMEOff
Precomposition	Henkan	IMEOn
Precomposition	Space	InsertSpace
Precomposition	Shift Space	InsertAlternateSpace
Precomposition	Ctrl Shift Space	InsertFullSpace
Precomposition	Shift Muhenkan	ToggleAlphanumericMode
Precomposition	Backspace	Revert
Precomposition	Ctrl Backspace	Undo
Precomposition	Eisu	ToggleAlphanumericMode
Precomposition	Hiragana	Backspace
Precomposition	Henkan	Reconvert
Precomposition	Katakana	InputModeFullKatakana
Precomposition	Muhenkan	InputModeSwitchKanaType
Composition	Ctrl Space	IMEOff
Composition	Muhenkan	IMEOff
Composition	Henkan	IMEOn
Composition	Backspace	Backspace
Composition	Ctrl Enter	Commit
Composition	Ctrl Backspace	Backspace
Composition	Ctrl Left	MoveCursorToBeginning
Composition	Ctrl Right	MoveCursorToEnd
Composition	Ctrl Up	MoveCursorToBeginning
Composition	Ctrl Down	MoveCursorToEnd
Composition	Ctrl s	InsertHalfSpace
Composition	Ctrl Shift Space	InsertFullSpace
Composition	Ctrl Henkan	Convert
Composition	Ctrl Muhenkan	SwitchKanaType
Composition	Left	MoveCursorLeft
Composition	Right	MoveCursorRight
Composition	Up	MoveCursorToBeginning
Composition	Down	MoveCursorToEnd
Composition	Ctrl h	MoveCursorLeft
Composition	Ctrl l	MoveCursorRight
Composition	Ctrl k	MoveCursorToBeginning
Composition	Ctrl j	MoveCursorToEnd
Composition	Ctrl n	MoveCursorToBeginning
Composition	Ctrl p	MoveCursorToEnd
Composition	Ctrl m	Commit
Composition	Ctrl z	Cancel
Composition	Ctrl g	Backspace
Composition	Ctrl d	Delete
Composition	Ctrl t	ConvertToHalfAlphanumeric
Composition	Ctrl u	ConvertToHiragana
Composition	Ctrl i	ConvertToFullKatakana
Composition	Ctrl o	ConvertToHalfWidth
Composition	Delete	Delete
Composition	Eisu	ToggleAlphanumericMode
Composition	End	MoveCursorToEnd
Composition	Enter	Commit
Composition	ESC	Cancel
Composition	F10	ConvertToHalfAlphanumeric
Composition	F2	ConvertWithoutHistory
Composition	F6	ConvertToHiragana
Composition	F7	ConvertToFullKatakana
Composition	F8	ConvertToHalfWidth
Composition	F9	ConvertToFullAlphanumeric
Composition	Hiragana	Backspace
Composition	Home	MoveCursorToBeginning
Composition	Katakana	InputModeFullKatakana
Composition	Space	Convert
Composition	Tab	PredictAndConvert
Composition	Shift Backspace	Backspace
Composition	Shift ESC	Cancel
Composition	Shift Left	MoveCursorLeft
Composition	Shift Right	MoveCursorRight
Composition	Shift Muhenkan	ConvertToFullAlphanumeric
Composition	Shift Space	Convert
Conversion	Ctrl Space	IMEOff
Conversion	Muhenkan	IMEOff
Conversion	Henkan	IMEOn
Conversion	Ctrl Enter	Commit
Conversion	Ctrl Backspace	Cancel
Conversion	Ctrl Left	SegmentFocusFirst
Conversion	Ctrl Right	SegmentFocusLast
Conversion	Ctrl Up	ConvertPrev
Conversion	Ctrl Down	CommitOnlyFirstSegment
Conversion	Ctrl Muhenkan	SwitchKanaType
Conversion	Ctrl Henkan	ConvertNext
Conversion	Ctrl s	InsertHalfSpace
Conversion	Ctrl Shift Space	InsertFullSpace
Conversion	Backspace	Cancel
Conversion	Left	SegmentFocusLeft
Conversion	Right	SegmentFocusRight
Conversion	Up	ConvertPrev
Conversion	Down	ConvertNext
Conversion	Ctrl m	Commit
Conversion	Ctrl h	SegmentWidthShrink
Conversion	Ctrl l	SegmentWidthExpand
Conversion	Ctrl k	ConvertPrev
Conversion	Ctrl j	ConvertNext
Conversion	Ctrl n	SegmentFocusLeft
Conversion	Ctrl p	SegmentFocusRight
Conversion	Ctrl a	SegmentFocusFirst
Conversion	Ctrl e	SegmentFocusLast
Conversion	Ctrl f	CommitOnlyFirstSegment
Conversion	Ctrl z	Cancel
Conversion	Ctrl g	Cancel
Conversion	Ctrl t	ConvertToHalfAlphanumeric
Conversion	Ctrl u	ConvertToHiragana
Conversion	Ctrl i	ConvertToFullKatakana
Conversion	Ctrl o	ConvertToHalfWidth
Conversion	Delete	Cancel
Conversion	Eisu	ToggleAlphanumericMode
Conversion	End	SegmentFocusLast
Conversion	Enter	Commit
Conversion	ESC	Cancel
Conversion	F6	ConvertToHiragana
Conversion	F7	ConvertToFullKatakana
Conversion	F8	ConvertToHalfWidth
Conversion	F9	ConvertToFullAlphanumeric
Conversion	F10	ConvertToHalfAlphanumeric
Conversion	Hiragana	Backspace
Conversion	Home	SegmentFocusFirst
Conversion	Katakana	InputModeFullKatakana
Conversion	PageDown	ConvertNextPage
Conversion	PageUp	ConvertPrevPage
Conversion	Shift Backspace	Cancel
Conversion	Shift Down	ConvertNextPage
Conversion	Shift ESC	Cancel
Conversion	Shift Henkan	ConvertPrev
Conversion	Shift Left	SegmentWidthShrink
Conversion	Shift Muhenkan	ConvertToFullAlphanumeric
Conversion	Shift Right	SegmentWidthExpand
Conversion	Shift Space	ConvertPrev
Conversion	Shift Tab	ConvertPrev
Conversion	Shift Up	ConvertPrevPage
Conversion	Space	ConvertNext
Conversion	Tab	PredictAndConvert
Prediction	Ctrl Delete	DeleteSelectedCandidate
Suggestion	Ctrl j	PredictAndConvert
Suggestion	Ctrl m	CommitFirstSuggestion
Suggestion	Down	PredictAndConvert
Suggestion	Shift Enter	CommitFirstSuggestion
DirectInput	ON	IMEOn
DirectInput	Kanji	IMEOn
Precomposition	OFF	IMEOff
Precomposition	ON	IMEOn
Precomposition	ASCII	InsertCharacter
Precomposition	Kanji	IMEOff
Composition	ASCII	InsertCharacter
Composition	Kanji	IMEOff
Composition	OFF	IMEOff
Composition	ON	IMEOn
Conversion	OFF	IMEOff
Conversion	ON	IMEOn
Conversion	Kanji	IMEOff
```

### テキストファイルの補足

- ```Ctrl+Space``` 設定済み
- ```Muhenkan```、```Henkan``` 設定済み
- ```Ctrl+文字``` について
	- 元からあるカーソルキーのコマンドを、そのままhjklに割り当て。
	- 重複している割り当ては削除。
- 元からあるコマンドは残す。
- ```Muhenkan```/```Henkan``` をESC/BSに割り当てました（2020-11-06）

# 8．雑感

## 新しいキーバインドの感想
- Ctrl+Spaceは快適。
- Ctrl+AやCtrl+Qなど、小指が担当しているキーを使う時にミスる。
- Ctrl,Shiftの打ち間違いが起こる。
- 半角/全角キーと打つクセはまだ抜けていないが、全体的には好感触。

# 以上