【スポンサーリンク】

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

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

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

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

\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. 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 を踏襲しているようです。

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

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

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

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)だけのようです。

こちらもどうぞ。

なぜ Macにはコマンドキーとコントロールキーがあるのか? 【ターミナル操作】
なぜ Macにはコマンドキーとコントロールキーがあるのか? 【ターミナル操作】
コマンドキーの操作系列とコントロールキーの操作系列が重ならないのがメリットです。インターネット利用や画像編集などGUIの操作とターミナル作業がスムーズに「繋がる」のです。「コマンドキー」と「コントロールキー」Macのキーボードには「コマンドキー」と「コントロールキー」があります。それって、違うキーなの?そもそも似たようなキーが2つもあるなんて謎ですよね。わたしもそうだったんですが、使っているうちに「あぁ、そういうことか!」と眼から鱗の落ちました。ということで、今回はパソコンの...
Macで Control+M を改行に設定する(Karabiner-Elementsの設定)
Macで Control+M を改行に設定する(Karabiner-Elementsの設定)
MacBookの controlキーは、UNIX系のショートカットキー操作が利用できるのが面白い特徴です。ところが、一部のキー操作はアプリによって動作したり、しなかったり、ということがありました。control-mは returnキーと同等ではないのか?例えば、「control-m」のキー操作。Emacsやターミナルでは「改行(return)」にバインドされているキー操作です。しかし、macOSのアプリで操作していると、これが動作するときと、しないときがあることに気づきました...
[Mac] control + T のショートカット(文字の「転置」)
[Mac] control + T のショートカット(文字の「転置」)
Macで controlキー押しながら T を押すと、「文字の転置」になります。カーソル位置の左右の文字を入れ替えて、カーソルを次に進めます。英文タイプミスならともかく、日本語ではあまり利用する機会はありません。元に戻すには、いったんカーソルを左に移動してから、もう一度 control + T です。また、control + T を連打すると、カーソル位置の左にあった文字が、どんどん右に移動していきます(バブルソートみたいな感じで)。macOSでのcontrolキーのショート...

ASCIIコード表 フリー
ASCIIコード表 フリー クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。
http://creativecommons.org/licenses/by-sa/4.0/
https://chiilabo.co.jp/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をコピーしました