【スポンサーリンク】

[Mac] どうして Control + H で「バックスペース」なの?【ASCIIの制御コード】

Macとりあえずのメモ作業効率化

Macでは、コントロールキーを押しながら Hキーを押すと「バックスペース」になります。

これは、ASCIIの制御コード「BS」を入力するときに、コントロールキーを押しながら0x40足した文字「H」を入力したことに由来しています。

【スポンサーリンク】

macOSのControl + H は bashに由来する

macOSには Controlキーによる、編集作業のショートカットキーがあります。
これらの多くは、UNIXプログラムの Emacsや bashのキーバインドに由来します。

macOSControl + H(^h)は、バックスペースの役割になります。
しかし、これは Emacs だと、ヘルプの表示です。
バックスペースではありません。

一方、bashでは バックスペースになっています。

プログラムC-h操作
Emacshelp1ヘルプを表示する
bashbackward-delete-char2直前の1文字を削除
macOSbackspace直前の1文字を削除

つまり、macOSでは bash を踏襲しているようです。

Control + H は ACSIIの制御コードに由来する

bash の多くのショートカットキーは Emacsに由来します3が、 C-h の場合は さらに Emacs より遡り、ASCIIでの「制御コード」の慣習によるものです。

ASCIIのコード表をみると、
バックスペース(BS)の制御コードは「0x08」です。
一方、「H」は「0x48」です。
16進数での下位が同じ「8」になっているのがポイント。

ASCIIの「制御文字」をキーボードから入力する場合、コントロールキーを押しながら 制御文字の文字コードに 0x40 を足した文字を入力するようになっていました4

コントロールキーと制御コードの対応
  • Ctrl+H (0x48)→ BS(0x08) バックスペース
  • Ctrl+J(0x4A)→ LF(0x0A)改行(ラインフィード)
  • Ctrl+M(0x4D)→ CR(0x0D) 改行(キャリッジリターン)

逆にいうと、コントロールキーを押しながら英字キーを押すと、その「0x40」分を引いた制御コードが入力されるわけです。

同様の例に C-j, C-m の改行があります。
ただし、macOSで採用されているのは Control + H(^h)だけのようです。

ASCIIコード表 フリー
ASCIIコード表 フリー クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。
http://creativecommons.org/licenses/by-sa/4.0/
https://chiilabo.com/licenses-image/

(補足)

  1. GNU Emacs Manual – Help
  2. bashのキーバインド(キーボードショートカット) まとめ – readlineとbind、ついでにstty編 – うまいぼうぶろぐ
  3. 「ターミナル内のシェル は bash です。これは元々「Emacs風キーバインド」のよう」 – Emacs 風キーバインド – 半月記
  4. 「制御文字をキーボードから入力するときは、制御文字 の文字コードに0x40を足した文字を、Ctrlキーを押しながらタイプ する」 – Character Code
QRコードを読み込むと、関連記事を確認できます。
[Mac] どうして Control + H で「バックスペース」なの?【ASCIIの制御コード】
【スポンサーリンク】
タイトルとURLをコピーしました