/dev/input/js0
게임패드( )에서 입력을 받아 처리한 다음 이를 가짜 장치 파일(char)로 보내는 C 프로그램을 만들고 싶습니다.또는블록) 키보드로 표시됨(아, 또 뭐야?예키보드용 장치 파일? 이것이 가능한지, 가능하다면 어떻게 가능한지 알고 싶습니다.
답변1
ls -al /dev
내 시스템에서 발췌한 명령을 자세히 살펴보십시오.
brw-rw---- 1 root floppy 8, 0 Jun 7 19:55 sda
brw-rw---- 1 root floppy 8, 1 Jun 7 19:55 sda1
brw-rw---- 1 root floppy 8, 2 Jun 7 19:55 sda2
brw-rw---- 1 root floppy 8, 3 Jun 7 19:55 sda3
brw-rw---- 1 root floppy 8, 5 Jun 7 19:56 sda5
brw-rw---- 1 root floppy 8, 6 Jun 7 19:56 sda6
brw-rw---- 1 root floppy 8, 7 Jun 7 19:56 sda7
brw-rw---- 1 root floppy 8, 8 Jun 7 19:57 sda8
brw-rw---- 1 root floppy 8, 16 Jun 7 19:55 sdb
brw-rw---- 1 root floppy 8, 32 Jun 7 19:55 sdc
brw-rw---- 1 root floppy 8, 33 Jun 7 19:55 sdc1
brw-rw---- 1 root floppy 8, 34 Jun 11 10:39 sdc2
brw-rw---- 1 root floppy 8, 35 Jun 7 19:56 sdc3
그룹 ID 뒤, 날짜 앞의 두 숫자는 장치 파일의 메이저 번호와 마이너 번호입니다. 이는 기본적으로 장치의 "유형"입니다. 이 예에서 8은 SCSI(또는 에뮬레이트된 SCSI) 디스크 드라이브입니다.
http://lxr.linux.no/linux/Documentation/devices.txt모든 메이저 및 마이너 번호의 새로운 목록은 아닙니다. 최신 버전 목록이 공식적으로 어디에 있는지 확실하지 않습니다.
어쨌든 이러한 파일은 mknod
명령( 블록, 문자의 mknod [OPTION]... NAME TYPE [MAJOR MINOR]
일부 유형 )을 사용하여 생성됩니다. 시스템 호출 도 있습니다 . 기존 장치와 동일한 주/부로 다른 파일을 만드는 것이 무엇을 의미하는지 잘 모르겠습니다.b
c
mknod()
uinput
설명에 설명된 대로 이것이 여러분이 찾고 있는 것일 수 있지만, PC 하드웨어에서는 /dev/psaux
시스템이 충분히 오래된 경우 PS/2 포트에 직접 읽기/쓰기가 가능합니다. USB 키보드를 어디서부터 시작해야 할지조차 알 수 없습니다...
가짜 장치 파일을 원하고 여기에 보내는 데이터가 어떻게 되는지 신경 쓰지 않는다면 항상 /dev/zero
.