我想創建一個 C 程序,它接受來自遊戲手把 ( /dev/input/js0
) 的輸入,對其進行處理,然後將其發送到一個假設備檔案(字符或者塊)標記為鍵盤(哦,還有什麼是鍵盤的裝置檔案?我想知道是否可以這樣做,如果可以,如何做。
答案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
.在這種情況下,符號連結也可能是一個真正簡單的解決方案。