/dev/input/js0
조이패드( )에서 입력을 받아 처리한 후 가짜 장치 파일(문자)로 보내는 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 포트를 가질 만큼 오래되었을 경우 PS/2 포트에 직접 읽고 쓸 수 있는 기능이 있습니다. USB 키보드는 어디서부터 시작해야 할지조차 알려주지 못했습니다...
가짜 장치 파일을 원하고 해당 파일로 보내는 데이터가 어떻게 되는지 신경 쓰지 않는다면 항상 /dev/zero
. 또한 이 경우 심볼릭 링크는 매우 간단한 솔루션이 될 수 있습니다.