GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible qu'un processus démon (c'est-à-dire en arrière-plan) recherche les pressions sur les touches d'un clavier USB ?

Les appareils obtiennent très probablement un fichier dans 02 nommé 15 où N est les différents périphériques comme la souris, le clavier, la prise jack, les boutons d'alimentation, etc.

09

devrait vous donner un indice.

Regardez aussi :

18

27 la valeur est le chemin sous 34 .

Vous pouvez tester par ex.

26

Pour implémenter, utilisez ioctl et vérifiez périphériques + moniteur.

MODIFICATION 2 :

D'ACCORD. Je développe cette réponse sur la base de l'hypothèse 47 est utilisé.

Une façon pourrait être :

  1. Au démarrage boucle tous les 54 fichiers trouvés dans 65 . Utilisez 70 pour demander des bits d'événement :

    30

    puis vérifiez si 88 -bit est défini.

  2. Définissez IFF puis vérifiez les clés :

    48

    Par exemple. si les touches numériques sont intéressantes, alors vérifiez si les bits pour 97 - 106 et 110 à 129 .

  3. Les clés IFF trouvées puis démarrent la surveillance du fichier d'événements dans le fil.

  4. Retour à 1.

De cette façon, vous devriez pouvoir surveiller tous les appareils qui répondent aux critères recherchés. Vous ne pouvez pas seulement vérifier 134 comme par ex. le bouton d'alimentation aura ce bit défini, mais il n'aura évidemment pas 148 etc. ensemble.

Ont vu des faux positifs pour les clés exotiques, mais pour les clés normales cela devrait suffire. Il n'y a pas de préjudice direct dans la surveillance, par ex. fichier d'événements pour le bouton d'alimentation ou une prise, mais ceux-ci n'émettront pas les événements en question (c'est-à-dire le mauvais code).

Plus en détail ci-dessous.

MODIFICATION 1 :

En ce qui concerne "Expliquez cette dernière déclaration…" . Aller dans stackoverflow land ici… mais :

Un échantillon rapide et sale en C. Vous devrez implémenter divers codes pour vérifier que vous obtenez réellement le bon périphérique, traduire le type d'événement, le code et la valeur. Typiquement key-down, key-up, key-repeat, key-code, etc.

Pas le temps (et c'est trop ici) d'ajouter le reste.

Découvrez 153 , des programmes comme 164 , code du noyau, etc. pour les codes de mappage. Par exemple. 173

Quoi qu'il en soit :

Exécuter comme par exemple :

56

Code :

69

MODIFICATION 2 (suite) :

Notez que si vous regardez 185 vous avez une lettre au début de chaque ligne. Ici 196 signifie bitmap. C'est-à-dire par exemple :

71

Chacun de ces bits correspond à une propriété de l'appareil. Ce qui, par bitmap, signifie que 1 indique qu'une propriété est présente, comme défini dans 209 . :

88

Jetez un oeil à 213 dans l'arborescence des sources du noyau. Beaucoup de bon code là-bas. (Par exemple, les propriétés des appareils sont produites par cette fonction.)

Chacune de ces cartes de propriétés peut être atteinte par 223 . Par exemple, si vous souhaitez vérifier quelles propriétés de LED sont disponibles, dites :

98

Regardez la définition de 235 en 247 pour combien 256 sont définis.

Pour vérifier l'état des voyants, dites :

105

Si bit 1 dans 261 sont 1 alors num-lock sont allumés. Si le bit 2 est 1, le verrouillage des majuscules est allumé, etc.

274 a les différentes définitions.

Remarques concernant la surveillance des événements :

Le pseudo-code de surveillance pourrait être quelque chose dans le sens :

113

Quelques documents connexes :

  1. 288 , esp. notez la section 5.
  2. 292 , description de divers événements, etc. Prenez note de ce qui est mentionné sous par ex. 306 environ 314
  3. 322 ... lisez le reste si vous le souhaitez.

Vous pouvez le faire facilement en référençant 339 . Ceux-ci apparaissent sous forme de liens symboliques que vous pouvez déréférencer en utilisant 340 pour déterminer le périphérique bloc associé. Ces liens sont cependant créés par 350 qui pourraient ne pas être présents dans votre environnement intégré.

Ou.. Regardez le 360 après avoir connecté le périphérique USB. Cela devrait vous donner le 371 nœud.


Linux
  1. Comment exécuter le processus Rsync en arrière-plan

  2. Comment obtenir l'ID de processus du processus d'arrière-plan ?

  3. Processus d'arrière-plan sous Linux

  4. Créer un démon sous Linux

  5. Est-il possible de "masquer" un processus de la liste de "ps" ou "top" sous Linux

Comment installer RHEL 8 depuis USB

Installer Linux Mint à partir d'une clé USB

Commandes pour la gestion des processus sous Linux

Comment définir l'affinité CPU pour un processus à partir de C ou C++ sous Linux ?

Exécution du script PHP à partir de la ligne de commande en tant que processus d'arrière-plan

Base de données MySql à partir d'une clé USB