커널 구성에서 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이벤트를 스피커(또는 일반적으로 심볼릭 링크 중 하나)를 나타내는 파일 에 추가 /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. 실제라고 분류하는 것이 더 논리적이긴 하지만입력하다이벤트.

관련 정보