Files
ai-typewriter/README.md
T
2026-09-11 12:56:19 +02:00

2.2 KiB

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

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 :

{
  "provider": "ollama",
  "model": "llama3.1",
  "api_key": "",
  "server_url": "http://localhost:11434",
  "hotkey": "ctrl+alt+a"
}

Ollama

{
  "provider": "ollama",
  "model": "llama3.1",
  "server_url": "http://localhost:11434"
}

Gemini

{
  "provider": "gemini",
  "model": "gemini-1.5-flash",
  "api_key": "VOTRE_CLE",
  "server_url": "https://generativelanguage.googleapis.com"
}

Compilation

Windows

Après clonage du dépôt, lancez simplement :

build.bat

Le script crée .venv, installe les dépendances, nettoie les anciens artefacts puis génère un exécutable Windows autonome :

dist\ai-typewriter.exe

Commande PyInstaller équivalente

pyinstaller --onefile --paths src --name ai-typewriter.exe main.py

L'exécutable est généré dans dist/. Le binaire n'est pas versionné Git.

Test rapide sans hook clavier

python main.py --config config.json --ask "Résume: bonjour tout le monde"