Linuxカーネルの設定に関していつも私をいじめること:PCスピーカーは通常のビープ音の原因として「その他」と見なされます。入力する出力関連カテゴリや「Misc.device」に属することを願っています。装置」。
│ CONFIG_INPUT_PCSPKR:
│
│ Say Y here if you want the standard PC Speaker to be used for
│ bells and whistles.
│
│ Prompt: PC Speaker support
│ Location:
│ -> Device Drivers
│ -> Input device support
│ -> Generic input layer (needed for keyboard, mouse, ...) (INPUT [=y])
│ -> Miscellaneous devices (INPUT_MISC [=y])
(注:PCスピーカーをALSA / OSSサウンドカードとして使用するのとは異なります。)
答え1
それはおそらく、当時は便利でしたが、既存のカーネル構造を使用しているユーザーがアクセスする最も簡単な方法だったからです。
できることはよく知られていません。書く/dev/input/eventX
ファイルにこのように生産する入力レベルのイベント。
同じように書く EV_SND
/dev/input/eventX
イベントをスピーカー(または通常はシンボリックリンクの1つ)を表すファイルに追加し、/dev/input/by-path/platform-pcspkr-event-spkr
この方法でスピーカーを使用してサウンドを生成します。これははるかにあまり知られていません。 :-)
これは、指定されたピッチでノートを生成する32ビットシステム用のPerl onelinerです。
perl -e 'print pack("qssl", 0, 0x12, 2, 2000)' > /dev/input/by-path/platform-pcspkr-event-spkr
これは他のオンラインユーザーがオフにすることができます。
perl -e 'print pack("qssl", 0, 0x12, 2, 0)' > /dev/input/by-path/platform-pcspkr-event-spkr
64ビットシステムの場合は、次を使用します。
package("qqssl", 0, 0, 0x12, 2, 間隔)
実際のレイアウトは、構造を定義するCヘッダーファイルのコンパイル方法によって異なります。
ただし、HDAオーディオデバイスの挿入イベントも入力レイヤーにファイルとして表示されます/dev/input/eventX
。実際と分類する方が論理的ですが、入力するイベント。