Emacs使いがWindows11で行う初期設定メモ

# 初めに

過去の「しがらみ」で指が勝手にemacsキーバインドの操作を行うような人間が、Windows11 のノートを使わざるを得ないときに、少しでも快適に使うための試行錯誤メモです。WindowsPCリプレースを機会にメモしていってます。

# キー関連の設定

## ctrl-capsの入れ替え

多くのemacs使いは「A」キーの左側にCtrlがあるべきと考えるはずなので、真っ先にctrlとCapsLockのキーの入れ替えをします。
多くの場合は、microsoftが提供している[ctrl2caps](https://docs.microsoft.com/en-us/sysinternals/downloads/ctrl2cap)のインストールで解決できます。
まず、[ctrl2caps](https://technet.microsoft.com/ja-jp/sysinternals/bb897578.aspx)を任意のフォルダにダウンロードし、Ctrl2cap.zip を展開します。次に、**管理者権限**でターミナルを起動し展開したフォルダに移動して "./ctrl2cap /install" を実行した後に再起動します。

:::note warn
エクスプローラでのダブルクリックではインストールできないのに注意。
:::

Aの左がCtrlな[Happy Hack Keyborad](https://happyhackingkb.com/jp/)などのほか、CapsLockキーと左Ctrlキーを入れ替え機能、交換用キートップが付いているキーボードを使う方法もあります。[RealForce](https://www.realforce.co.jp/products/index_office.html)や[Majestouch Convertible 2](https://www.diatec.co.jp/shop/det.php?prod_c=4056)など高価でも良いので、作り続けて欲しいです。

## 日本語変換キー

MacOSと同じように、IMEの入力切替を Ctrl-Space に、日本語キーボードならば「変換」と「無変換」にも割り当てます。IMEアイコンを右クリックし、「設定」⇒「キーとタッチのカスタマイズ」を選択し、「キーの割り当て」をONにして、無変換キーを「IME-オフ」、変換キーを「IME-オン」、Ctrl+Spaceを「IME-オン/オフ」とします。

私のIME入力切り替えの好みは Ctrl+\ なので、これを目指して、[Microsoft Powertoys](https://apps.microsoft.com/store/detail/microsoft-powertoys/XP89DCGQ3K6VLD)を試したができませんでした。

## keyhac

プロセスごとにキーバインドを変えられるkeyhacを導入します。たまに動作が怪しくなる時もありますが、ほとんどの場合は強制終了し再起動することで復帰できるので、現状ではいちばん使えると思ってます。

### インストール

keyhacの最新版を https://sites.google.com/site/craftware/keyhac-ja からダウンロードし、適当なフォルダに展開します。私はデスクトップにtoolsというフォルダを作り、圧縮ファイルに含まれるkeyhacフォルダ以下一式を展開、コピーしてます。

[github](https://github.com/crftwr/keyhac)からもダウンロードできますが、こちらには、pythonXX.dll が含まれていないので、必要はdllファイルを、[dll-files](https://jp.dll-files.com/)などからダウンロードして、keyhacと同じフォルダにコピーします。

### キーバインド設定

キーバインドの設定は、[Fakeymacs](https://github.com/smzht/fakeymacs)を参考にさせていただいています。zipファイルなどでダウンロードし、含まれている　config.py　を、keyhacと同じディレクトリにコピーします。

keyhac.exe を実行（もしくは設定のリロード）で、設定したキーバインドに変換されます。keyhacと設定ファイルにバージョンずれがあると正しく動かない場合があることに留意。

### 自動起動

特定ユーザでログインしたときのみ実行するようにします。下のフォルダに、keyhac.exe のショートカットを貼り付けます。

1．スタートボタンを「右クリック」し、「ファイル名を指定して実行」をクリック
2．表示された入力ボックス（※）に、「shell:startup」と入力
3．表示されたスタートアップフォルダに、keyhac.exeのショートカットを追加

※：　C:\Users\[UserName]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

自動起動しない場合は、ショートカットを削除します。

もし起動時にpythonXX.dllが見つからないエラーがでる場合は、keyhacを配置したフォルダを環境変数Pathに追加します。

参考：https://www.javadrive.jp/python/install/index3.html#sectionl

### 設定チューニング

keyhac起動後、常駐エリアのアイコンを右クリックし、「設定を編集」をクリックするとを設定ファイル config.py が編集できます。このファイルでキーバインド自体の設定に加えて、キーバインド変更の対象外ソフトも指定できます。

#### Ctrl-Space をIMEオン／オフで使う

Ctrl-Space をIMEオン／オフで使うために、下記行の先頭に # を追加しコメントアウトする。

```
# define_key(keymap_emacs, "C-Space",   reset_search(reset_undo(reset_counter(set_mark_command))))
```

#### キーバインド変更の対象外ソフトの指定

キーバインド変更しないソフトの実行ファイル名を、設定ファイル内の not_emacs_target に追記していきます。一例は下の通り（少し古いかも）

```
    not_emacs_target     = ["bash.exe",           # bash
                            "mintty.exe",         # mintty
                            "emacs.exe",          # Emacs
                            "emacs-X11.exe",      # Emacs
                            "emacs-w32.exe",      # Emacs
                            "gvim.exe",           # GVim
                            "RLogin.exe",         # rlogin
                            "xyzzy.exe",          # xyzzy
                            "VirtualBox.exe",     # VirtualBox
                            "ubuntu.exe",         # ubuntu on wls
                            "wsl.exe",            # Windows Subsystem for Linux(ubuntu)
                            "WindowsTerminal.exe", # Windows Terminal
                            "OpenConsole.exe",    # WindowsTerminal
                            "mstsc.exe",          # リモートデスクトップ
                            "TurboVNC.exe",       # TurboVNC
                            "vncviewer.exe"]      # UltraVNC
```

これらのカナでIME起動のみ変更したい場合は ime_target に追記します。私はターミナルソフトを追加してます。

# その他

キーバインドとは関係ないものの、定番的に行う設定のメモです。

## Windows Subsystem for Linux2 (WSL2)の準備

WSL2 は、Windows10のバージョン2004、ビルド19041以降で使えます。

### Windowsの設定変更

GUIなら、「コントロールパネル」の「プログラム」の「Windowsの機能の有効化または無効化」を表示し、「仮想マシン プラットフォーム」のチェックボックスをオンにします。WSL1も併用するなら、「Linux用Windowsサブシステム」もONにします。

CUIなら、管理者権限で PowerShell を開き、以下を実行します。

```
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

反映のため再起動します。


初期状態のubuntuターミナルのプロパティから、オプションタブでカーソルサイズを「中」、フォントタブで、MS ゴシックの16、画面の色タブの文字を白、背景を黒にするとまずまず慣れた状態になりました。あとemacs24のデフォルトだと黒背景で見にくい色があるので、下のようにwombatテーマを設定。

```
cat ~/.emacs.d/init.el
(load-theme 'wombat t)
```

エクスプローラーでWSL内のファイルを、\\WLS$ というネットワークドライブで表示できるので、ショートカットに登録しておく。なお、ubuntu から、Windowsアプリ例えば、エクスプローラーなら explorer.exe で起動できる。

## ターミナルソフト

好みがあるでしょうが、最近は、Windows Terminal を使っている。Ctrk-K問題は、keyhacの設定変更で解消済み。

### Windows Terminal

#### インストール
 
Microsoft Store で Windows Terminalを検索しインストール

#### 設定

いろいろしたが失念

## Windowsの設定

ここから先はオマケです。

### ウィンドウを端に移動したとき最大化しない

スタートメニューから「設定」⇒「システム」⇒「マルチタスク」を選択し、「ウインドウのスナップ」をオフにする

### IME切り替え表示を消す

1. 画面右下のIMEアイコンで右クリックしプロパティ(R)を選択
2. 「IME入力モード切替の通知」欄の「画面中央に表示する」のチェックボックスを外す
 
### タスクバー

* タスクバーのプロパティから以下を変更
「タスクバーを自動的に隠す」：オン
「小さいタスクバーボタンを使う」：オン

## ツール類

### DropBox

私の環境では、OneDriveよりも安定しているのでこちらに移行。デスクトップアプリをダウンロードしてインストール。

### OneDrive

Office365を使っていれば、1TB使えるなど便利です。重要な Windowsフォルダー (デスクトップ、ドキュメント、画像など) として同期してしまうと、Beckyなどでこれらのフォルダにデータを置いているソフトを複数デバイスで使うと、動作がおかしくなることがあります。
なので、タスクバーの通知エリアのOnedrive のアイコンを右クリックし、設定から重要なフォルダの同期を止めます。さらに、「設定」→「アプリ」→「スタートアップ」でOneDriveを自動起動しないように変更。

### エディタ

WSLでemacsが使えるので、ちょっとした操作だけなら exzzy で十分。ただし、undo/redoをよく使う場合は、keyhacと競合しているので、キーバインドを変える必要があります。

### SSHクライアント

WSLで動く ubuntu on windows でコマンドラインでsshが便利。

### メーラー

Becky！からeM Clientを経由して、今は[Spark](https://sparkmailapp.com/ja/windows)を利用。ヘッダーを確認するなどの細かい操作は不便だが、マルチOS（Windows/iOS/iPadOS/MacOS）で同じような操作感覚で使える点が気に入っている。

### ブラウザ

[SRware Iron](https://www.srware.net/iron/)から[Brave](https://brave.com)に移行。複数デバイス間でブックマークなどの共有の他、広告を受けることで（僅かな）仮想通貨Batを手に入れることが可能で。ブラウザ自体にTor機能がついてます。

### インストールする拡張機能

#### LastPass
パスワード管理、サイト別のパスワード管理用。

#### https evrywhere
できるだけ暗号化したSSLでブラウジングするために利用

# 最後に

個人的に備忘録をかねて追記していきます。