Un clavier virtuel futuriste et moderne contrôlé par gestes de la main, construit avec Computer Vision et Intelligence Artificielle. Tapez dans les airs en utilisant simplement vos mains et une webcam !
- Suivi des Mains en Temps Réel : Utilise MediaPipe pour suivre 21 points de repère de la main avec une précision exceptionnelle
- Reconnaissance de Gestes Intelligente : Détection du "pincement" (index + pouce) pour la frappe
- Support Multi-Mains : Tapez avec vos deux mains simultanément pour plus de rapidité
- Layout 5 Rangées : Clavier rectangulaire standard incluant chiffres, lettres, et symboles
- Fonctionnalité Shift Compète : Bascule entre minuscules/majuscules et accès aux symboles spéciaux (!, @, #, etc.)
- Touches Spéciales : Support complet de ENTER, BACKSPACE, et SHIFT
- Taille Optimisée : Touches larges (75px) pour une frappe facile et précise
- Thème "Simple Dark" : Interface sombre à fort contraste pour une visibilité maximale
- Fond Vidéo : Voyez vos mains en temps réel derrière le clavier
- Feedback Visuel : Les touches s'illuminent lorsque vous les survolez (gris clair) et les pressez (bleu)
- Sauvegarde Automatique : Le texte est sauvegardé via geste ou raccourci
- Layouts Multiples : Support QWERTY et AZERTY
- Saisie Réactive : Déclenchement de la touche dès l'appui (pincement) pour une latence minimale
- Python 3.11+ (Télécharger)
- Webcam fonctionnelle
- Windows / Mac / Linux
git clone https://github.com/machideau/air-typing.git
cd air-typing# Créer un environnement virtuel (recommandé)
python -m venv env
# Activer l'environnement
# Windows:
env\Scripts\activate
# Mac/Linux:
source env/bin/activate
# Installer les packages
pip install -r requirements.txtLe fichier hand_landmarker.task est déjà inclus dans le dépôt. Si absent :
- 🔗 Télécharger hand_landmarker.task
- Placez-le dans le dossier
air-typing/
python main.py| Geste | Action |
|---|---|
| 👆 Pincement (Index + Pouce) | Taper sur une touche |
| ✌️ Signe de Paix (Index + Majeur levés) | Effacer tout le texte |
| 👍 Pouce levé | Sauvegarder le texte |
| ✋ Index levé | Déplacer le curseur sans cliquer |
| Touche | Action |
|---|---|
ESC |
Quitter l'application |
S |
Sauvegarder le texte manuellement |
C |
Effacer tout le texte |
M |
Activer/Désactiver le son |
L |
Changer de layout (QWERTY ↔ AZERTY) |
air-typing/
├── main.py # Application principale
├── config.py # Configuration centralisée (tailles, couleurs, layouts)
├── utils/ # Modules utilitaires
│ ├── __init__.py
│ ├── hand_detector.py # Détection des mains (MediaPipe)
│ ├── keyboard.py # Logique du clavier et des touches
│ ├── gesture_recognizer.py # Reconnaissance des gestes (Peace, Thumbs Up)
│ ├── ui_components.py # Composants UI
│ └── audio_manager.py # Gestionnaire audio
├── hand_landmarker.task # Modèle MediaPipe
├── requirements.txt # Dépendances Python
├── typed_text.txt # Fichier de sortie du texte
└── README.md # Documentation
Vous pouvez ajuster les paramètres dans config.py :
# Fenêtre
WINDOW_WIDTH = 1280
WINDOW_HEIGHT = 720
# Clavier
KEY_WIDTH = 75 # Taille des touches
KEY_SPACING = 85 # Espacement
ENABLE_SMART_ZONES = False # Désactivé pour clarté visuelle
# Main
PINCH_THRESHOLD = 30 # Sensibilité du clicpip uninstall mediapipe
pip install mediapipe==0.10.14- Assurez-vous de bien "pincer" (toucher le bout de l'index avec le bout du pouce)
- Le déclenchement se fait dès le contact (appui) pour une meilleure réactivité
Ce projet est sous licence MIT. Libre d'utilisation pour des projets personnels et commerciaux.
machideau
- GitHub: @machideau
- Projet: air-typing