From e68fc1a8d6903f5b4448881fb94c51c42bac6cb4 Mon Sep 17 00:00:00 2001 From: Edern Deneuville Date: Fri, 11 Sep 2026 11:58:12 +0200 Subject: [PATCH] Initial ai typewriter implementation --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3de0234 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# ai-typewriter + +Application Python qui capture le texte sélectionné avec un raccourci global, l'envoie à un modèle IA, puis remplace chaque pression de touche suivante par le caractère suivant de la réponse. + +## Fonctionnement + +1. Raccourci global par défaut : `Ctrl+Alt+A`. +2. L'application simule `Ctrl+C` et lit le presse-papier. +3. Le texte capturé est envoyé à Ollama ou Gemini avec le system prompt strict : + + > Réponds directement et de manière ultra-concise. Aucune phrase d'introduction, aucune salutation, aucun formatage superflu. Uniquement la réponse brute. + +4. Quand la réponse arrive, le mode dactylographie s'active : chaque touche physique est interceptée et remplacée par le prochain caractère de la réponse. +5. Le hook clavier est libéré automatiquement après le dernier caractère. + +## Installation depuis les sources + +```bash +python -m venv .venv +. .venv/bin/activate +pip install -r requirements.txt +cp config.json.template config.json +python main.py +``` + +Sous Linux, le paquet `keyboard` nécessite souvent les droits root ou l'accès aux périphériques `/dev/input`. Sous Windows, lancez l'exécutable dans une session utilisateur normale. + +## Configuration + +Copiez `config.json.template` vers `config.json` puis adaptez : + +```json +{ + "provider": "ollama", + "model": "llama3.1", + "api_key": "", + "server_url": "http://localhost:11434", + "hotkey": "ctrl+alt+a" +} +``` + +### Ollama + +```json +{ + "provider": "ollama", + "model": "llama3.1", + "server_url": "http://localhost:11434" +} +``` + +### Gemini + +```json +{ + "provider": "gemini", + "model": "gemini-1.5-flash", + "api_key": "VOTRE_CLE", + "server_url": "https://generativelanguage.googleapis.com" +} +``` + +## Compilation + +```bash +pyinstaller --onefile --name ai-typewriter main.py +``` + +L'exécutable est généré dans `dist/`. Le binaire n'est pas versionné Git. + +## Test rapide sans hook clavier + +```bash +python main.py --config config.json --ask "Résume: bonjour tout le monde" +```