LoginSignup
3
2

WindowsをUS配列のMacに可能な限り近づけてEmacs入力を用いてもショートカットキーの競合を回避する方法

Last updated at Posted at 2023-03-21

はじめに

本記事では、長年にわたり普通の日本語配列の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に認識させればいいだけでしたが、できないものだと思いこんでいたのが敗因でした。

位置的にも右側の修飾キーをミスタイプすることはないでしょうから、これで完全解決です。

むしろ、左右の修飾キーを使い分けて、独自のショートカットを導入することもできそうですね。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2