特集

CapsLockってなにそれ美味しいの?普段使われない愉快なキーたち

DECのVT100 User Guide(EK-VT100-UG-001)より抜粋。ちなみにSet-upで設定できるものはスクロール(Jump/Smooth)とか動作モード(VT52互換/VT100動作)、通信パラメータなど。変なところでは電源の50Hz/60Hzの切り替えなんかもあった

 7月頭、編集部から「フルキーボードであまり使わないキーを解説してもらえませんか」という依頼が来た。曰く「対象はPause、Insert、Scroll Lock、Home/End、Page Up/Down、CapsLockあたり」だそうで、「え、Page Up/Downは使うだろう普通(憤怒)」といきなり戦争になったのだが、それはともかく。

Pauseってなんのためにあったの? CapsLockはどうやって生まれたの?

 「何があまり使わないキーなのか」議論はさておき、IBM-PCのキーボードは本当だったら「IBM 3270」というIBMのメインフレームと接続する端末の延長にあった。しかしMS-DOSが導入される際にCP/Mマシンとの互換性を保つためのキーが追加され(逆に3270関連のキーはほとんど削除され)、それが今になっても引き継がれている格好である。

 「なんでCP/Mマシン?」というと、IBM-PCを開発するにあたってDOSの開発をMicrosoftに外注したのだが、Microsoftは「IBM-DOS」というか「MS-DOS」の開発で、SCP(Seattle Computer Products)が開発した「86-DOS」を買収してこれをベースにした。そしてこの86-DOSがCP/Mを8086で稼働できるようにした“CP/Mクローン”ともいうべきDOSであったから、である。

 そしてそのCP/Mは、DECの「VT-100」という端末のキーボードに準拠したキーボードを前提にしており、主要なCP/MマシンはいずれもVT-100互換のキーボード配置を利用していた。86-DOSはこれを引き継ぎ、それがMS-DOSにそのまま継承された格好だ。

 ではそのVT-100の配列はどこから? というと、これは「VT05」/「VT50」/「VT52」という一連のビデオ端末の流れを汲んだ製品であるが、VT05が投入されたのは1970年であり、それ以前はどうしていたか? というとテレタイプなるものがあった。

 正確に言えば、テレタイプというのは社名(米Teletype Communication)で、本来はElectromechanical Teleprinterとでも言うのが正しいのだろうが、もうテレタイプという言葉が広まってるのでここではテレタイプで通す。

 テレタイプとして有名なのはTeletype Communicationの「ASR-33」だが、それ以外のものも色々使われていた。VT05やVT50/52、VT100はこれらのテレタイプと置き換えて使うことが可能であり、結果、一部のキーはこのテレタイプの時代に利用されていたものを未だに継承している。

PauseとともにBreakが印刷されているキーボード

 具体的には、「Break」キーがこれだ。このBreakというキーはテレタイプ回線を切断する目的で設けられたもので、これが転じて回線が切断されるとベルが鳴るので、相手にベルを鳴らす目的で利用されたりもしたが、なぜか現在も生き残っている。

 ちなみにテレタイプ世代ではほかにも

  • WRU?:“Who are you?”を送信する
  • HERE IS:自局名を送信する

などのキーがあったが、これらはVT05世代には継承されなかった。「RUB OUT」(紙テープにNULLコードを上書き鑽孔して間違った文字を消す)は、VT05には継承されたものの、その後消えてしまった。「REPT」(Repeat:これと文字キーを同時に押すと、その文字が繰り返し入力される)も同様だ。

 もう1つ、テレタイプの時代に導入されたのが「CapsLock」である。実はこれ、ASR-33には存在しないが、もうちょっと後のASR-37には追加されている。機能は「大文字で入力」である。

 ASR-33の時代までは、そもそも大文字も小文字の区別がなかった(当時の伝送技術では、大文字小文字を分けると文字コードが増えてしまい、送信に時間が掛かった)のだが、その後伝送速度の向上で大文字/小文字を区別できるようになった。

 タイプライターの基本的な作法は、文字キーは小文字が入力され、Shiftと一緒に押すと大文字が入力されるわけだが、あるセンテンスを強調したいなんて場合に全部大文字で入力する、という頻度が意外に多い。この際にShiftを押しっぱなしなのは大変に疲れる。そこで、「常に大文字を入力する」という機能を持つのがCapsLockである。これはVT05でも「Shift Lock」という名称で搭載され、VT100ではCapsLockと名称を変え、そのまま現在に至っている。

CapsLockキー

 また「Enter」に相当するものは「CR」(Carridge Return:カーソル位置を行の先頭=左端に移動する)とLF(Line Feed:次の行に移る)の2つのキーで構成されているが、この辺はテレタイプというか、タイプライター世代からの延長である。

PrintScreenのご祖先はCOPYキー

 一方で、VT05の時代に追加されたものもある。最大のものがカーソルキーで、テレタイプと異なり画面の上を自由にカーソル移動させることが技術的に可能になったから、このカーソル位置の制御のために追加されている。

 VT05ではほかにHome(カーソル位置をホームポジション=左上に戻す)とかEOS(End Of Screen:画面の一番末尾≒右下のことが多いが、これはアプリケーションによる)/EOL(End Of Line:カーソルのある行の末尾に移動する)、Lock(画面の更新をストップする)などが追加されたが、HomeはともかくEOL/EOSなどはその後消えてしまった。またRUB OUTは、次のVT52の世代にDelete/BackSpaceに置き換えられている。

 そのVT52の世代では、新たにテンキーが追加されて、数字入力が容易になった。このVT52というのはちょうど過渡的な世代でもあり、CRはなくなったが、Line Feedは残っており、それとは別に「Return」(フルキー側)と「Enter」(テンキー側)が追加されている。また新たに「Tab」キーも追加された。

 さらに「COPY」キーが追加されたが、これは画面をそのままプリントアウトするという、「Print Screen」のご先祖様である。VT52の世代には、LA100というドットマトリックスプリンタがあり、これを接続した状態だと画面の内容をそのまま印字できた。1970年代前半の話だから、まだ画面をデータで保存するなんてことは夢のまた夢で、保存といえば印刷が当たり前だった時代である。

 これがVT100になると、Set-up(設定画面に入る/出る)が追加された程度で概ね変更はない。COPYキーは消えたが、機能的には残されており、ESC #7(DECHCP)というVT100独自のエスケープシーケンスを受け取ると接続したプリンタに画面内容をそのまま印字できるようになっている。

 ほとんどのCP/MマシンはこのVT100に準拠したキーボード配置(Photo01)になっており、これがそのまま利用された格好だ(Set-upがないものはいくつか存在したが)。そしてこれはIBM-PCのキーボードを定める際にも参考にされることになった。

83-Keyと84-Keyで一気に登場

 さて、VT100とIBM-PCの最初のキーボード(83-Key)のキーボード配置には結構違いがある。83-Keyは、IBM-PCの元になったというか、ハードウェア的に参考とした「IBM System/23 Datamaster」のキーボード配置を流用した感がある。

 IBM System/23 DatamasterはIBMのGSD(General Systems Division)で1980年頃に開発していた(IBMとしては)非常に小さなエントリ向けマシンであるが、このDatamasterは単体で動作させる以外に、ホストとつないで端末として利用することも想定しており、なのでキーボードはIBM 3270と互換性があるような構造になっていた。

 このキーボードのハードウェアそのものは、IBM-PCというか83-Keyでそのまま継承したわけだが、キーの配置そのものはだいぶ変更になった。IBM 3270互換を考える必要はないため、キーボード左手のスペシャルキーはすべてファンクションキーになった。

 またField+/Field-/Field Exitなどの機能も削除されたが、その代わりに「NumLock」/「ScrollLock」/「Home」/「End」/「Ins」/「PageUp」/「PageDown」/「PrintScreen」といったキー(というか、機能)が追加された。

PrintScreenキーとその周辺

 そしてその後で登場した84-Keyでは、新たに「System Request」というキーというか機能が追加されている。83-Keyと84-Keyの最大の違いは、テンキーを明確に分離した(83-Keyでは一緒になっていてちょっと扱いづらかった)ことと、ReturnキーやShiftキーを大型化したことである。

 ただ83-Keyも84-Keyも、テンキーとカーソルキー/Special Functionキーが一体化して、NumLockのオン/オフでキーの機能が切り替わる形であったが、表計算ソフトのようにカーソルキーとテンキーの両方を煩雑に使いたい場合は打ちにくい。

 そこでさらに横幅を広げるとともに、カーソルキーやSpecial Functionキーをテンキーとは別に用意したのが101-keyであり、これがほぼAT互換機の標準となって現在まで至っているというわけだ。

 元の依頼は「各キーの成り立ちや歴史的な経緯を紹介しながら、今ではアプリの中でこのように使われてて、実は便利~的な流れ」をという依頼だったのだが、今回取り上げるキーのほとんどはそういう意味で83-Key/84-Keyの時代に湧いてきた格好である。案外歴史的経緯がなかったのは正直びっくりである。

あまり使われないキーたち、どう使う?

 ということで、経緯に関して簡単に説明したところで、具体的なキーの使われ方をちょっと説明したい。

Pause/Break

 テレタイプ時代から生き残った数少ない特殊キーの1つ。101-Keyの場合は単独で押すとPause、Shiftを押しながらだとBreakの動作をするというのが建前であるが、実際にはほぼ同一の使い方をなされていると考えてよい。

 テレタイプのエミュレーションではそんなわけで回線切断の役割を果たすが、今時テレタイプのエミュレーションが使われているケースはほとんどないだろう。

 一応UEFIになる前のBIOSでは、Pauseキーを押すと、もう1回押すまでの間は画面がホールドされる(というか、処理が一時中断される)。Windows 11だと、Win+Pause(or Break)で、システムの詳細情報が表示されるという、ちょっとした小技もある。

Insert

 本来の目的は「1文字挿入」である。つまりDel(1文字削除)の対になる動作だ。ただこれ、Windowsの標準が挿入モードになってしまったため、あまり意味を成さなくなっている。

 テキスト入力の方式には昔から

  • 挿入モード:入力した文字が、現在のカーソルの位置から追加。もしカーソルの後に文字があった場合は、その文字は後ろにずれる
  • 上書きモード:入力した文字が、現在のカーソルの位置から挿入される。もしカーソルの後に文字があった場合は、その文字は上書きされる

の2つがあった。この上書きモードの場合に、「上書きせずに追加をしたい」場合、あらかじめ追加したい文字数だけInsertキーを押して余白を作っておき、そこに文字を追加する形になる。

 ただ挿入モードの方が広く利用されるようになり(個人的にはこのあたりはWord Star/Word Masterあたりが広くCP/Mで利用され、それがMS-DOSにも移植されたのが大きいのではないかと疑っているが、根拠はない)、そうなると本来のInsertキーの役割は必要なくなる。

 その代わりに使われているのが「挿入と上書きのモード切り替え」である。筆者はこの原稿を秀丸で書いているが、標準状態だと挿入モードである。ところがInsertキーを1回押すとこれが上書きモードになり、もう1回押すと再び挿入モードに戻る。

 上書きモードを使う頻度は筆者だと年に数回あるかないか、というあたりではあるのだが、そうした場合に使うことになる。

Scroll Lock

 これは文字通りスクロールをロックする(のでカーソルを動かしても画面が次に移らない)用途向けであるが、システムで何かを定義している、というよりはアプリケーション任せである。実際秀丸でScroll Lockをしてもまったく何も起きない。

 Scroll Lockが役に立つ(というか意味のある動作をする)代表例がExcelで、Scroll Lockを押すとカーソルキーでセルが移動できなくなる(もう1回押すと解除される)。逆に言えば「現在のセル位置を動かしたくない」場合に役に立つのがこれである。

Home/End

 本来の意味合い的に言えばVT05のHome/EOSに近いのだが、これも実装次第である。たとえば秀丸の場合で言えば

  • Home 行の先頭に移動
  • Crtl+Home ファイルの先頭に移動
  • End 行の末尾に移動
  • Crtl+Home ファイルの末尾に移動

だし、Webブラウザ(Vivaldi/Edge/Firefoxで確認)で言えば

  • Home ページの先頭に移動
  • End ページの末尾に移動

となる。

Page Up/Down

 昔のMS-DOSアプリケーションの場合、画面1枚を「ページ」と名付けた上で、複数ページで構成されるものがあった。こうしたケースでPage Up/Downはページの切り替えに利用された。

 昨今だと、スクロールが必要なアプリケーションは大抵Page Up/Downをサポートしている。要するにカーソルキーだと行単位の移動なので、大量のスクロールが発生する場合には時間がかかりすぎる。そこで何行かをまとめて(何行くらい、というのはアプリケーションによる)移動する機能がこのPage Up/Downである。

 秀丸の場合だと、

  • PageUp:ウィンドウサイズ分上にスクロール
  • PageDown:ウィンドウサイズ分下にスクロール

だし、これはExcelとかWebブラウザでも同じである。

 ちなみにアプリケーションの中には、Page Up/Downを押したらどの程度スクロールするかを設定できるものもある。

Print Screen

 VT05のCopyキーが名前を変えて復活した、というべきか。Windowsの場合

  • Print Screen:現在のデスクトップ全体のイメージをコピーする。Ctrl+Vで、それを適当なアプリケーションに貼り付け可能。
  • Win+Print Screen:現在のデスクトップ全体のイメージをファイルに保存する(マイピクチャ\スクリーンショット)。

という動作を行なう。

SysReq

(このキーボードの場合はFn+PrintScreenで動作)

 System Requestキー。あまり普段は使うことはないのだが、Linux系では特定のシチュエーションでこのSysReqキーが大活躍する。というのは


    Alt+SysReq+b:即座にシステムをリブートする
    Alt+SysReq+e:init以外のすべてのプロセスを終了(SIGTERMを送信)
    Alt+SysReq+i:init以外のすべてのプロセスを強制終了(SIGKILLを送信)
    Alt+SysReq+s:Syncコマンドを実施
    Alt+SysReq+u:全てのドライブを読み取り専用で再マウントする

といった、とにかくシステムを止めたいといった場合にコンソールから即座に実行できるためだ。これ、実際には/proc/sysrq-triggerというコマンドが動くので、たとえばリブートなら

echo b > /proc/sysrq-trigger

とかやってもいいのだが、Alt+SystReq+bの方が手っ取り早い。これはLinuxカーネルにMagic SysRq Keyとして実装されている。

 Windowsでは、SysRqキーがPrint Screenキーと同じということもあり、(Shiftを押しながら)SysRqキーを押しても、Print Screenキー同じ動作をするものがほとんどに思われるというか、SysRqを認識するアプリケーション例を探したものの見つからなかった。

CapsLock

 これはどうしようもないというか、CapsLockはCapsLockのままで使うしかない。106キーボードで追加された半角/全角キーの機能がCapsLock(ないしShift+CapsLock)に割り当てられており、なので環境によってはこうした使い方(CapsLockでMS-IMEのオン/オフを切り替え)をされているユーザーもいるかと思う。

 ただ筆者などはVT100で指がキーボード配置を覚えてしまった(ので、実は日本語キーボードも苦手)関係で、CapsLockの位置にControl(Ctrl)キーが来てほしい。そういうユーザー向けに、WindowsだとMicrosoft謹製のCtrl2Capsというユーティリティがあり、CapsLockとControl(Ctrl)のキーの役割を入れ替えてくれる。

 ちなみにLinuxの場合、Ubuntu DesktopなどのGNOME系なら

gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swapcaps']"

でCapsLockとControl(Ctrl)のキーの役割を入れ替えられるし、Debian系のLinux(Ubuntuもこれの1つ)なら /etc/default/keyboard に

XKBOPTIONS="ctrl:swapcaps"

を追加した後で

sudo systemctl restart console-setup

を掛ければコンソールでもCapsLockとControl(Ctrl)のキーの役割が入れ替わる。


 といったあたりである。この記事が、皆様のPCライフのお役に立つとは思えないのだが、まかり間違って役に立ってしまったりしたらラッキーであるし、ちょっとした話題作りなどには有効かもしれない。