Linux 1.3.43 では、Martin Mares が、console.c の変更 によって、ビープ音のピッチと持続時間を設定できる機能を追加しました。 コンソールごとに、異なるピッチと持続時間の音色でビープ音を鳴らすよう 設定することが可能です。このタスクの実行には、コンソールデバイスに送られる エスケープシーケンスが使われています。~/.profile や ~/.login ファイルの設定により、別々のビープ 音を個々のコンソールで鳴らすことができます(また、必要に応じて、ビープ音を 消すこともできます)。
エスケープシーケンスは、次のような働きをします。
ESC-[10;xx] により、ヘルツ(Hz)単位で ビープ音の周波数を設定します。この値は、21-32766 の範囲でなければならず、 それ以外の値は未定義と解釈されます。引数 xx が定義されていない場合、例えば ESC-[10] となっているような場合は、デフォルト値 (750Hz) が 適用されます。
ESC-[11;xx] により、ミリ秒単位でビープ音 の持続時間を設定します。2 秒以上を指定すると、デフォルト値 (125ms) が適用 されます。上記同様、引数 xx が定義されていない場合 (ESC-[11] )、デフォルト値が使われます。
例えば、50Hz のピッチで一秒間持続させたい場合、bash なら、 " echo -e "\\33[10;50]\\33[11;1000]" " と なります [1] 。("-e" は、エスケープシーケンスを理解せよという 意味です。tcsh の場合でも、コマンドスペルは同じです。)
setterm コマンドにこのような設定をサポートするバージョンが あるかどうかは知りませんが、将来的には setterm のコマンド ラインオプションでビープ音の設定ができようになるだろうと思います。
Linux カーネル 1.3.43 以降を使っているなら、このエスケープシーケンスを 使った設定を行えば充分なので、本書をこれ以上読む必要はないでしょう。 もし、それ以前のカーネルを使っているか、もしくはビープ音を視覚的に表現させ ようと思うなら、次章以下がお役に立ちます。
[1] | (訳注:このコマンドは、X 用ではなく、ターミナル用です。 テキスト端末画面で上記コマンドを打ち、Ctrl-G でそのビープ音を鳴らすことが できます。X 用の設定は、こちらをご覧 ください。) |