GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, dass ein Daemon-Prozess (d. H. Hintergrund) nach Tastendrücken von einer USB-Tastatur sucht?

Geräte erhalten höchstwahrscheinlich eine Datei in 06 mit dem Namen 18 wobei N für die verschiedenen Geräte wie Maus, Tastatur, Buchse, Ein/Aus-Tasten usw. steht.

03

sollte Ihnen einen Hinweis geben.

Siehe auch:

12

Wobei 21 Wert ist Pfad unter 37 .

Sie können testen, indem Sie z.

20

Verwenden Sie zum Implementieren ioctl und überprüfen Sie Geräte + Monitor.

BEARBEITEN 2:

OK. Ich erweitere diese Antwort basierend auf der Annahme 41 verwendet wird.

Eine Möglichkeit könnte sein:

  1. Bei der Startschleife alle 58 Dateien gefunden in 69 . Verwenden Sie 74 um Ereignisbits anzufordern:

    34

    dann prüfen ob 81 -Bit ist gesetzt.

  2. IFF gesetzt, dann nach Schlüsseln suchen:

    42

    Z.B. Wenn Zahlentasten interessant sind, dann prüfen Sie, ob Bits für 91 vorhanden sind - 100 und 113 bis 123 .

  3. IFF-Schlüssel gefunden, dann Überwachung der Ereignisdatei im Thread starten.

  4. Zurück zu 1.

Auf diese Weise sollten Sie alle Geräte überwachen können, die die gewünschten Kriterien erfüllen. Sie können nicht nur nach 137 suchen wie z.B. Power-Button wird dieses Bit gesetzt haben, aber es wird offensichtlich nicht 141 haben usw. eingestellt.

Habe falsch positive Ergebnisse für exotische Schlüssel gesehen, aber für normale Schlüssel das sollte genügen. Es schadet nicht direkt, z.B. Ereignisdatei für den Netzschalter oder eine Buchse, aber diese geben keine fraglichen Ereignisse aus (auch bekannt als schlechter Code).

Mehr im Detail weiter unten.

BEARBEITEN 1:

In Bezug auf "Erklären Sie diese letzte Aussage …" . Gehe hier in Stackoverflow landen … aber:

Ein schnelles und schmutziges Beispiel in C. Sie müssen verschiedenen Code implementieren, um zu überprüfen, ob Sie tatsächlich das richtige Gerät erhalten, den Ereignistyp, den Code und den Wert übersetzen. Typischerweise Key-Down, Key-Up, Key-Repeat, Key-Code usw.

Ich habe keine Zeit (und ist hier zu viel), um den Rest hinzuzufügen.

Sehen Sie sich 156 an , Programme wie 167 , Kernel-Code usw. für Mapping-Codes. Z.B. 176

Wie auch immer:

Ausführung als z. B.:

50

Code:

63

EDIT 2 (Fortsetzung):

Beachten Sie das, wenn Sie sich 189 ansehen Sie haben einen Buchstaben am Anfang jeder Zeile. Hier 199 bedeutet Bitmap. Das ist zum Beispiel:

75

Jedes dieser Bits entspricht einer Eigenschaft des Geräts. Was als Bitmap bedeutet, 1 zeigt an, dass eine Eigenschaft vorhanden ist, wie in 202 definiert . :

81

Siehe 216 im Kernel-Quellbaum. Da gibt es viel guten Code. (Zum Beispiel werden die Geräteeigenschaften von dieser Funktion erzeugt.)

Jede dieser Eigenschaftsabbildungen kann durch 226 erreicht werden . Wenn Sie beispielsweise prüfen möchten, welche LED-Eigenschaften verfügbar sind, sagen Sie:

91

Sehen Sie sich die Definition von 238 an in 240 wie 259 sind definiert.

Um den Status der LEDs zu überprüfen, sagen Sie:

109

Wenn Bit 1 in 265 sind 1 dann num-lock leuchtet. Wenn Bit 2 1 ist, leuchtet die Feststelltaste usw.

278 hat die verschiedenen Definitionen.

Hinweise zur Ereignisüberwachung:

Pseudo-Code für die Überwachung könnte in die Richtung gehen von:

116

Einige verwandte Dokumente:

  1. 281 , insb. Abschnitt 5 beachten.
  2. 295 , Beschreibung verschiedener Veranstaltungen usw. Beachten Sie, was z. 309 über 318
  3. 326 ... lesen Sie den Rest nach, wenn Sie möchten.

Sie können dies einfach tun, indem Sie auf 332 verweisen . Diese erscheinen als symbolische Links, die Sie mit 344 dereferenzieren können um das zugehörige Blockgerät zu ermitteln. Diese Links werden jedoch von 354 erstellt die in Ihrer eingebetteten Umgebung möglicherweise nicht vorhanden sind.

Oder.. Sehen Sie sich den 363 an nach dem Anschließen des USB-Geräts. Es sollte Ihnen den 374 geben Knoten.


Linux
  1. So führen Sie den Rsync-Prozess im Hintergrund aus

  2. Wie stellt man die CPU-Affinität für einen Prozess von C oder C++ in Linux ein?

  3. Wie bekomme ich die Prozess-ID des Hintergrundprozesses?

  4. Hintergrundprozess unter Linux

  5. Ist es möglich, einen bestimmten Pfad für einen Prozess vorzutäuschen?

So installieren Sie RHEL 8 von USB

Auf Prozess prüfen, wenn dieser läuft?

Booten von einem USB für HP Laptop?

Installieren Sie Linux Mint von USB

Befehle für das Prozessmanagement in Linux

MySQL-Datenbank vom USB-Stick