§ Page
Kapt
README
Visualiseur d’entrées clavier et souris sécurisé, haute performance et multi-dispositions pour Linux (Wayland/X11), conçu pour la confidentialité locale, l’absence totale de télémétrie et l’intégration OBS.
Fonctionnalités
- 12+ Dispositions internationales : AZERTY (Latin9/FR, Standard, BE), QWERTZ (DE, CH), QWERTY (US, UK, ES, IT), Dvorak, Colemak, Bépo (sélection explicite
CLI/UI). - Zéro persistance / Volatil en RAM : L’état des touches réside uniquement dans un set RAM volatile. Aucun keylogger, aucun fichier log, aucune accumulation de chaînes de texte.
- Durcissement Kernel & Systemd : Filtres
seccomp,MemoryDenyWriteExecute(W^X), sandbox rootfs strict, et exécution sous le groupe non privilégiéinput. - Périmètre local strict : Écoute exclusive sur
127.0.0.1:8080, validation de l’en-têteOriginWebSocket et limitation de débit (~30fps). Zéro appel réseau sortant. - Zéro dépendance réseau / Typographie locale : Police 100% open-source embarquée/système (
Inter / Liberation SansetJetBrains Mono / DejaVu Mono), sans appel externe.
Architecture
[Noyau /dev/input/event*]
│ (evdev)
[bridge.py (127.0.0.1:8080)] ──(WebSocket)──> [index.html / Source Navigateur OBS]
│
[Tampon Volatile RAM]
Détecter la disposition de son clavier
| Environnement / Outil | Commande | Exemple de sortie |
| Systemd / console (universel) | localectl status | X11 Layout: fr |
| X11 / Xorg | setxkbmap -query | layout: fr |
| GNOME / Wayland | gsettings get org.gnome.desktop.input-sources sources | [('xkb', 'fr')] |
| KDE Plasma / Wayland | kwriteconfig5 --file ~/.config/kxkbrc --group Layout --key LayoutList --read | fr |
| TTY / Console pure | loadkeys -c ou inspection de /etc/vconsole.conf | KEYMAP=fr |
Installation rapide (Script universel)
Clonez le dépôt et exécutez le script d’installation automatique (détecte Debian/Ubuntu, Fedora/RHEL, Arch Linux) :
git clone https://gitlab.com/Portfolio-personnel-Ax4M3/kapt.git
cd kapt
sudo bash install.sh
Dépendances manuelles par distribution (alternative)
| Distribution | Commande de dépendances |
| Debian / Ubuntu / Mint | sudo apt update && sudo apt install -y python3 python3-venv python3-pip |
| Fedora / RHEL / Alma | sudo dnf install -y python3 python3-pip |
| Arch Linux / Manjaro | sudo pacman -S --needed python python-evdev python-websockets |
Si vous installez manuellement sans le script install.sh, déplacez le dépôt dans /opt/kapt ou lancez bridge.py depuis votre répertoire de travail, puis configurez le service systemd manuellement.
Gestion du service (Template Systemd)
Assurez-vous d’avoir exécuté sudo bash install.sh au préalable pour installer le template systemd. Puis :
Activer et démarrer pour votre utilisateur actuel
sudo systemctl enable --now kapt@$USER
Vérifier l’état et les logs en temps réel
sudo systemctl status kapt@$USER
journalctl -u kapt@$USER -f
Arrêter ou désactiver le service
sudo systemctl stop kapt@$USER
sudo systemctl disable kapt@$USER
Nettoyage si systemd a gardé l’erreur en cache / état échec :
sudo systemctl reset-failed
Captures
Vérifier que Kapt a bien démarré
![]() Kapt est en cours | ![]() Kapt est désactivé |
Fonctionnalités (vidéo WebM)
Voir sur le dépôt GitLab
| Aperçu | Clavier | Fenêtre |
| Exemple ⇗ | Choix du clavier ⇗ | Mini-fenêtre ⇗ |
Désinstallation
Pour nettoyer proprement le service systemd, les instances et les fichiers d’installation :
sudo bash uninstall.sh
Utilisation en détail
Démarrage et connexion de la source visuelle
- Le pont Python (
bridge.py) écoute en permanence surws://127.0.0.1:8080dès que le service systemd est actif. - Ouvrez le fichier
index.htmldans un navigateur local, ou intégrez-le directement dans OBS Studio :- Ajoutez une Source Navigateur (Browser Source).
- Cochez Fichier local (Local file) et sélectionnez
/opt/kapt/index.html. - Dimensions recommandées :
1920x1080(fond transparent / géré par le CSS sombre du visualiseur).
- Le pont Python (
Sélecteur de disposition à chaud
- Le profil par défaut est défini au lancement via CLI (
--layout, ex:azerty_latin9). - Le menu déroulant en haut à droite de l’interface permet de basculer la correspondance des touches à chaud sans redémarrer le service.
- Le profil par défaut est défini au lancement via CLI (
Fonctionnement des badges et de la séquence
- Rétention 3.5s : Chaque combinaison active s’affiche sous forme de badge visuel stylisé (
kbd) et disparaît en fondu après 3,5 secondes d’inactivité de la combinaison. - Anti-spam / Anti-redondance : Les répétitions consécutives identiques d’une même combinaison ne s’empilent pas à l’infini dans le flux pour garder un rendu stream-friendly propre.
- Mini-fenêtre (Popout) : Cliquez sur le bouton Mini-fenêtre en haut à droite pour détacher un affichage compact pop-up (fenêtre flottante sans chrome de navigateur).
- Rétention 3.5s : Chaque combinaison active s’affiche sous forme de badge visuel stylisé (
Vérification et Audit de Sécurité
- Contrôle d’écoute réseau :
ss -tulpn | grep 8080(doit afficher127.0.0.1:8080, jamais0.0.0.0). - Descripteurs ouverts :
ls -l /proc/$(pgrep -f bridge.py)/fd(pointe uniquement vers/dev/input/event*et la socket de bouclage locale). - Transparence EDR/Antivirus :
bridge.pyne contient aucun client HTTP/socket sortant (requests,urllib,socketsortant absents).
Licence
Ce projet est distribué sous licence MIT.
Dernière mise-à-jour : 13 septembre 2026
Détails de la dernière mise-à-jour
- Mise à jour visuelle, transfers depuis un autre hébergeur git et finalisation

