【masOS】
CommandキーはなぜControlと別なのか
(WinキーとSuperキーとの違い)

  • macOSはCommandキーがGUI操作、Controlキーがターミナル系の操作を担い、両者の役割がはっきり分かれています。
  • このキーの役割分離は、もともとGUIアプリケーション開発者向けに新しい修飾キーを追加した結果の副産物と言えます。
  • WindowsとLinuxではControlがアプリとCLIの両方に使われ、Winキー・SuperキーはOS操作に限定されている。

関連記事

1. macOSのキー設計

macOSに慣れていると、WindowsやLinuxを触るときに、不思議なタイミングで違和感を覚えます。

macOSのキー設計 Command ⌘ GUI操作を担当 ⌘C コピー ⌘Tab 切替 ⌘Spc 検索 デスクトップ〜アプリ全般 GUIに集約 ⟵ ⟶ 役割分離 Control ^ UNIX操作を担当 ^C 割り込み ^D EOF Emacs 編集 ターミナル・CLIで 衝突なく機能 副産物として生まれた分離が、一貫した操作体験をつくる

行の先頭に移動しようと、Ctrl+Aを押して、全選択になる。
あるいは、ターミナルでプロセスを止めるには、コピーと同じ Ctrl+Cを打つ。

この背景には、キーボードの設計そのものに違いがあります1

1.1. GUIとCLIでキーの担当が分かれる

macOSでは、CommandキーがGUIの世界を担っています。
Command+Cでコピーし、Command+Tabでアプリを切り替え、Command+Spaceでスポットライトを開く。
デスクトップ環境からアプリケーションまで、GUIに関わる操作がほぼCommandに集まっています。

一方のControlキーは、UNIX由来のターミナル操作で使われます。
テキスト編集のEmacsキーバインドもControlが中心です。
ターミナルでCtrl+CはSIGINTを送り、Ctrl+DはEOFを意味します2

GUIとCLIで担当が分かれているため、両者がぶつかることはほとんどありません。

1.2. Commandキー誕生の経緯

ただ、1984年のMac発売時にAppleが意図して、設計したのは「GUIとCLIの分離」ではなかったように思います。

最初に生まれた Appleキーは、アプリケーション開発者にショートカットキーを登録できる場所を提供するためのものでした。
すでにシステム制御に使われていたControlの代わりに、新しい修飾キーを導入したのです3

結果として、Commandという専用の場所ができたことで、ControlはUNIX的な用途に専念できるようになった。
UNIX層との分離は、その副産物として生まれました。

2. WindowsとLinuxの構造

一方、Windowsでは、ControlがアプリとCLIの両方に使われています。

Ctrl+CはExcelではコピーですが、PowerShellでは割り込みシグナルになります。

Windows PCでCommandキーに相当するのは、Winキーです。
しかし、WinキーはOSのショートカットに使われるものの、一般のアプリが自由に使える領域ではありません。
Microsoftが管理する例外的な割り当てにとどまります4

2.1. LinuxのSuperキーはデスクトップ環境用

WindowsキーボードのWinキーは、LinuxのデスクトップではSuperキーと呼ばれます。
Superキーは、Winキーと物理的に同じキーです。

WindowsとLinuxの構造比較 Windows 比較項目 Linux Win キー OS操作のみ・アプリ不可 OS専用キー Super キー デスクトップ操作のみ Ctrl = アプリ + CLI 両方を同じキーが担う Ctrl の 二重担当 ← 共通 → Ctrl = アプリ + CLI 両方を同じキーが担う Ctrl+C の意味が文脈で変わる Excel → コピー PowerShell → 割り込み 衝突の 結果 ターミナルだけ別キーに Ctrl+Shift+C でコピー (Shift で衝突を回避) どちらも Ctrl の二重人格は解消されていない macOS の Command / Control 分離は、この問題を根本から回避している

Superキーも、デスクトップ環境のショートカットに充てられていて、あまりアプリケーションでは使われません。
たとえば、GNOMEではSuper単体でアクティビティ画面を開きます5
アプリケーション内ではWindowsの慣習をそのまま引き継ぎCtrl+Cがコピーになり、ターミナルでは衝突を避けるためCtrl+Shift+Cをコピーに割り当てているものがほとんどです。

つまり、Linuxでは、SuperをデスクトップOS、ControlをアプリとUNIXの両方に使う構造です。
層の境界が曖昧なままで、Superを後から充てた設計では、Controlの二重人格は解消できませんでした。

macOSから離れられない理由は、慣れではなく構造にあります。
CommandとControlの境界が体に刷り込まれると、その境界が曖昧な環境では手が止まる。
副産物として生まれた分離が、使い心地の一貫性として効いています。

  1. ⌘記号はグラフィックデザイナーのSusan Kareが1983年に国際記号辞典から見つけた「場所のシンボル(Place of Interest Sign)」で、北欧の地図で名所を示すために使われていたものです。Appleロゴがメニューのショートカットキーのとなりにすべて表示されることを問題視したSteve Jobsの指示で、代替記号として採用されました。 – Command key – Wikipedia
  2. SIGINTはSignal Interruptの略で、POSIXで標準化されたシグナルの一つです。シグナル番号は2番で、プロセスに割り込みを要求します。デフォルトではプロセスを終了させますが、プログラム側でハンドラを実装して独自の動作をさせることもできます。1970年代のBell Labs UNIXに起源を持ちます。 – Signal (IPC) – Wikipedia
  3. 初代Macintosh(1984年)にはControlキーがありませんでした。ターミナルソフトウェアとの互換性のために後から追加されたものです。これは、Appleが当初からControlをUNIX用途と意識していたのではなく、GUI操作とUNIXが自然に分離した経緯を示しています。 – The Secret History of Mac Keyboard Keys – MacMost
  4. WinキーはDOS時代のキーボードには存在せず、1994年9月にMicrosoftが発売したMicrosoft Natural Keyboardで初めて登場しました。Windows 95の発売より約1年早い登場です。Windows 95以降、Windowsロゴの認定を受けるキーボードにはWinキーの搭載が必須となり、標準的な101キーレイアウトが104キーに拡張されました。 – Windows key – Wikipedia
  5. GNOMEの公式ドキュメントでは、Superキーを押すとActivities overviewが表示されると説明されています。このキーは通常キーボードの左下、Altキーの隣にあり、Windowsロゴが印字されていることが多いとも記載されています。 – What is the Super key? – GNOME Help