Ich möchte ein C-Programm erstellen, das Eingaben von einem Joypad ( /dev/input/js0
) akzeptiert, verarbeitet und dann an eine gefälschte Gerätedatei (ZeichenoderBlock) als Tastatur gekennzeichnet (oh, und wasIstdie Gerätedatei für eine Tastatur? Ich würde gerne wissen, ob das möglich ist und wenn ja, wie.
Antwort1
Schauen Sie sich einen Auszug aus einem ls -al /dev
Befehl auf meinem System genau an:
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
Die beiden Zahlen nach der Gruppen-ID, aber vor dem Datum sind die Haupt- und Nebennummern der Gerätedatei. Dies ist im Wesentlichen die „Art“ des Geräts. 8 ist in diesem Fall ein SCSI-Laufwerk (oder ein emuliertes SCSI-Laufwerk).
http://lxr.linux.no/linux/Documentation/devices.txtist eine nicht ganz so aktuelle Liste aller Haupt- und Nebennummern. Ich bin mir nicht sicher, wo sich die neueste Version der Liste offiziell befindet.
Diese Dateien werden also jedenfalls mit dem mknod
Befehl ( erstellt mknod [OPTION]... NAME TYPE [MAJOR MINOR]
, einige Typen sind b
für Blöcke, c
für Zeichen). Es gibt auch einen mknod()
Systemaufruf. Ich kenne die Auswirkungen nicht genau, wenn Sie eine weitere Datei mit derselben Haupt-/Nebennummer wie ein vorhandenes Gerät erstellen.
uinput
wie in den Kommentaren beschrieben, ist wahrscheinlich das, wonach Sie suchen, obwohl es auf PC-Hardware einen gibt, /dev/psaux
der direkt vom PS/2-Anschluss liest/schreibt, wenn Ihr System alt genug ist, um einen zu haben. Ich konnte Ihnen nicht einmal sagen, wo Sie mit USB-Tastaturen anfangen sollen ...
Wenn Sie nur eine gefälschte Gerätedatei möchten und es Ihnen egal ist, was mit den Daten passiert, die Sie an sie senden, gibt es immer noch /dev/zero
. Auch symbolische Links können in diesem Fall eine wirklich einfache Lösung sein.