Clavier souris reseau : Différence entre versions
(→Serveur d'évenements Clavier-Souris) |
|||
Ligne 1 : | Ligne 1 : | ||
+ | {{Modèle:Sommaire droite}} | ||
+ | |||
= Présentation = | = Présentation = | ||
Version du 15 mars 2011 à 21:42
Présentation
Objectif
Concevoir et développer un clavier réseau et une souris réseau capable de s'interfacer avec n'importe quelle machine fonctionnant sous Linux.
En fonction de l'avancement du projet, nous implémenteront le chiffrement de la connexion réseau grâce à GnuTLS.
Interface
Les deux périphériques seront connectés à une Foxboard. Un écran OLED sera fixé sur le boitier. Dans le cas d'un écran tactile, il sera utilisé pour faire la sélection de la machine destination. Dans le cas contraire, une molette ou des boutons seront utilisées.
Il faudra également concevoir et développer des mécanismes simples permettant de configurer les périphériques.
Périphériques
Les périphériques seront raccordés à la Foxboard (seulement en USB), mais il est possible d'utiliser le logiciel sur une autre machine avec d'autres types de port (USB, PS/2...).
En fonction de l'avancement du projet, nous intégreront un plus grand nombre de périphériques, notamment la guitare de M. Vantroys, et la WiiMote.
Préparation du projet
Matériel
- Clavier USB
- Souris USB
- Foxboard
- Ecran OLED tactile
- Modèle : µLCD-24PT(SGC)
- Taille : 2.4" - 48.64 x 60.7 x 14mm
- Taille de la zone d'affichage : 36.72 x 48.96mm
- Résolution : 240 x 320 QVGA
- Connectique : 16 x General Purpose I/O pins. Upper 8 bits can be used as an I/O Bus for fast 8-bit parallel data transfers.
- Alternative : Ecran OLED non tactile ?
Electronique
- Ecran OLED/LCD
- Connecter l'écran sur les e/s logiques de la Foxboard
- Mettre en fonctionnement l'écran
Logiciel
- Coté serveur (Foxboard ou autre)
- Serveur : Enregistrer les événements clavier et souris, puis les transmettre sur le réseau (TCP ? UDP ?)
- Outil ligne de commande : Changer les client destinataires, changer la keymap, arrêter le serveur
- Coté client
- Pilote en mode utilisateur en utilisant le module uinput
- Documentation
Avancement du projet
Lundi 28 février 2011
Absence non justifiée
Vendredi 4 mars 2011
Choix technique
Travail effectué
Installation d'une Arduino, test du programme LED clignotante (pour se rafraîchir la mémoire sur le fonctionnement de Arduino).
Démontage d'un souris, pour regarder comment y récupérer les signaux des interrupteurs, de la molette, du capteur optique...
Conclusion
Après discussion avec le professeur, abandon du Arduino pour utiliser exclusivement Foxboard auquel on connecte un écran LCD/OLED tactile.
uinput : Pilote de Clavier/Souris virtuel
Travail effectué
Documentation sur le module Linux uinput.
Test du code source exemple : requiert les droits root pour charger le module uinput et exécuter le pilote.
Lundi 7 mars 2011
Récupération des événements Clavier/Souris
logkeys
Travail effectué
Installation du keylogger logkeys, disponible sur les dépôts Debian pour l'architecture ARM (celle de la Foxboard) :
- Via le gestionnaire de paquets : Debian Lenny est installé sur la Foxboard, il faudrait passer au dépôt Debian Squeeze (stable) pour obtenir logkeys : abandon car trop long
- Compilation des sources : effectué sur la Foxboard après avoir installé les outils de compilation et librairies nécessaire. L'exécutable obtenu ne fonctionne pas pour une raison inconnue, abandon.
Conclusion
Nécessité d'écrire notre propre keylogger.
Ecriture d'un keylogger
Travail effectué
La fonction permettant de récupérer les événements clavier depuis un périphérique /dev/input est écrite, en utilisant l'API linux/input.h.
Conclusion
- Nécessité de faire appel à un keymap pour déchiffrer les frappes Clavier
- Possibilité d'utiliser la fonction écrite pour récupérer les événements clavier ET souris.
Ecran LCD/OLED
Travail effectué
Recherche d'un écran LCD/OLED tactile à prix plus abordable, lecture des documentations.
Jeudi 10 mars 2011
Commutateur Ethernet
Travail effectué
Nous avons manifesté le besoin d'avoir davantage de prise Ethernet, nous avons donc configuré un Commutateur 24 ports.
Librairie TCP Serveur et Client
Sylvain avais déjà commencé à écrire cette librairie pour le tutorat Système et Réseaux.
Travail effectué
- Finir d'écrire les fonctions de la librairie grace aux exemples du cours de Xavier Redon (formidable!).
- Tester une connexion client-serveur
Serveur d'évenements Clavier-Souris
Travail effectué
- Fonction listant les périphériques présents dans /dev/input/by-id/
- Création d'un serveur TCP, en utilisant les librairies Socket et Threads du tutorat Système et Réseaux
- Grâce au travail de lundi (récupération des événements Clavier/Souris), modification du serveur TCP :
- Le serveur récupère les événements de tous les périphériques d'entrée utilisateur
- Les événements sont envoyés à chaque clients
Conclusion
Nous espérons en fin de séance prochaine faire une première démonstration de clavier/souris en réseau.
Pour réaliser cette démonstration il faudra :
- Corriger un bug dans le serveur empêchant plusieurs connexions de clients simultanées
- Continuer le pilote de Clavier/Souris virtuel pour se connecter au serveur TCP et en récupérer les événements.
Lundi 14 mars 2011
Serveur d'évenements Clavier-Souris
Travail effectué
- Bugs corrigés
- La connexion de clients simultanées fonctionne
- Le serveur ne crash plus après la déconnexion d'un client
- Librairie socket TCP (serveur et client) terminée
- Démonstration du concept
- Le pilote de Clavier/Souris est maintenant fonctionnel
- Le client TCP se connectant à la foxboard et simulant les événements est fonctionnel
- Nous avons pu controller deux machine avec un clavier et une souris en Ethernet
Conclusion
Nous avons obtenu le résultat espéré, et corrigé les deux principaux bugs.
M. Vantroys nous a ré expliqué sa vision du projet, et le souhait d'économiser les connexions réseau.
Nous allons donc inverser dès la prochaine séance les rôles clients et serveur :
- Serveurs sur les machines cible
- Clients sur la Foxboard, connectés aux machines sélectionnés sur l'interface (écran tactile à venir).
Nous prévoyons aussi d'implementer les KeyMaps dont nous allons avoir besoin pour la création d'un log contenant le texte entré au clavier.
Pistes pour développements
- Regarder la specification UPnP Remote I/O et Remote UI http://upnp.org/sdcps-and-certification/standards/sdcps/ pour avoir une version du boitier UPnP compatible
- Permettre l'ajout d'autres périphériques (Guitar Hero, Wiimote, ...)