はじめに
本記事では、長年にわたり普通の日本語配列のWindowsを使用してきた筆者が、開発に当たりUS配列のMacが好ましいとの情報を入手し、思い切ってUS配列のMacBook Airに切り替えたあと、改めてWindows端末を触る際に困った内容とその解決策について述べます。
2023/07/30、記事を大改修します。分かりづらかったので。
修飾キーの比較
Mac
Command,option,shift,controlという4種類
Windows
Control,shift,altという3種類
修飾キーが一つ足りないことで、Windowsではできないこと
Emacs入力
ほかショートカット多数
Emacs入力とは
Emacs入力という表現が正しいか定かではないが、具体的には以下のようなカーソル移動を指す
- ctrl+A カーソルを先頭に移動
- ctrl+F カーソルを右に移動
- ctrl+K 現在のカーソルより右側を削除
- ctrl+B カーソルを左に移動
- ctrl+P カーソルを上の行に移動
- ctrl+N カーソルを下の行に移動
個人的にはこのあたりをよく使います。非常に便利です。ctrl+Hでバックスペースキーと同じ1文字削除ですが、つい癖でMacではdeleteキーを押して1文字削除してしまいます。
Windowsでは
Macでもフルサイズキーボードなら存在しますが、移動だけなら「Home」「End」「4方向の矢印キー」でええやんシューシューというのは理解できます。
しかし、「ホームポジションを維持したままカーソル移動」の良さは何物にも代えがたいです。
特に、Windowsでは「Ctrl+A」が「全選択」、「Ctrl+F」は検索と、明確にバッティングしています。
Emacs入力をWindowsでも導入するためにやること
まず筆者はcaps lockをctrlの代わりにしています。
US配列を買った方、買う方、COBOLやアセンブラやSQL文オール手打ちでもしない限りはおそらく不要なキー筆頭なので、caps lockをctrlにするというムーブは下記のKeySwapでまず横綱筆頭でしょう。
KeySwapでキーを入れ替える
Windowsでは日本語配列もUS配列も関係なく、Macとはキーの配置が違います。
とくに左下の構成が違いますね。
Windowsでは
[Ctrl][fn][win][alt]
みたいな感じでしょう。fnは有無あり。
一方で日本語Macは
[謎][option][command][変数]
になっています。ずっとUS Macなので違和感があります。
US Macは
[fn][ctrl][option][command]です。
いずれにせよ違いが大きい。
なので、適宜入れ替える必要があります。caps lockも不要です。入れ替え方は好みあると思いますが、caps lockをctrl化は定石かと。
- caps lock → 右Ctrl
- windows → Ctrl
- Ctrl → Windows
という設定だったと思います。
適宜保存して再起動をかけて、正しく入れ替えられているか確認しなければなりません。
AutoHotKeyでEmacs入力を実現
このページの【「カーソル移動+α」のキーバインドだけをEmacs風にする】を参考にして導入しました。
AutoHotKeyのバージョンは古いほう(1.1)がいい気がします。
caps lock → 右Ctrlを思いつくまでに発生していた問題
caps lockを通常の左Ctrlに当てはめていた際は、Ctrl+Aの入力が「入力文字の先頭にカーソルを移動」と「全選択」の操作でバッティングしてしまい、正しく動作しない状況が発生しました。結構なストレスでした。
Windows端末は大して使わないので、しばらく全選択を諦めるというムーブで対応していましたが、いよいよWindowsでも開発「できる必要がある」という状態を迫られた気がしたので、しっかりと対応してみることにしました。
ダメだった解決策
左手方向をご覧いただきますと見えてきますのは、燦然と輝く「fn」キー。これを活用できないかと考えたわけですね。
アイデアとしては、fnキーを単独で認識させ、KeySwapでcaps lockと入れ替え、ショートカットキーの修飾キーにできないかと考えました。ところがfnキーは単独で認識されるものではなく、ほうぼう調べても5000円の有料ツールがあるとかないとかで検索情報はストップ。
シンプルな解決策
あの手この手で調べてみると、そもそもAutoHotKeyでは左右のCtrlやShiftを別々で単独で認識させることも可能らしいので、KeySwapにてCaps lockを右Ctrlとして認識させ、AutoHotKeyのEmacs入力の設定各種ではCtrlを用いる場合はその右Ctrlを修飾キーとして指定することにしました。
これでやりたいことは完全解決です。
AutoHotKeyの設定でCtrlを表す^の前に>を入力するだけ。
このページ の、【左右の修飾キーを別々に使いたいとき】
をご参照。
・全選択:[ctrl+A]
・Emacs入力でカーソルを先頭へ移動[右ctrl+A]※ただし右ctrlはcaps lockとkey swapで入れ替え済み。ほか主要Emacs入力も修飾キーを右ctrlに変更
AutoHotKeyのEmacs入力のうちCtrlを修飾キーとするものは右Ctrlでなければ発動せず、その右CtrlはCaps lockに割り当てているので、
必然的にMacでいうところのcommandとctrlをWindowsでも使い分けられていることになります。
左CtrlはMacのCommand、右CtrlはMacのCtrlという感じでしょうか。
解決策は非常にシンプルで、左右それぞれの修飾キーを別々でAutoHotKeyに認識させればいいだけでしたが、できないものだと思いこんでいたのが敗因でした。
位置的にも右側の修飾キーをミスタイプすることはないでしょうから、これで完全解決です。
むしろ、左右の修飾キーを使い分けて、独自のショートカットを導入することもできそうですね。