カーネル構成でPCスピーカーが入力デバイスと見なされるのはなぜですか?

カーネル構成でPCスピーカーが入力デバイスと見なされるのはなぜですか?

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。実際と分類する方が論理的ですが、入力するイベント。

おすすめ記事