Le problème
Corsair iCUE et Logitech G Hub changent de profil de clavier quand on change de jeu ; rien de tel n'existait pour les claviers QMK de Keychron. Leurs outils enregistrent une seule keymap et un seul éclairage dans le clavier, point. Je voulais que mes remappages, mes macros et mon éclairage suivent le programme au premier plan.
Ce que j'ai construit
Une application de bureau Tauri 2 avec un cœur en Rust et une interface React. Elle surveille la fenêtre active, choisit le profil le plus précis qui correspond (nom de fichier, chemin, dossier ou titre de fenêtre) et l'envoie au clavier. Pour y parvenir, j'ai écrit un petit module firmware en C qui s'intègre au firmware QMK de Keychron et reçoit remappages, macros et couleurs par touche en Raw HID, uniquement en RAM. L'application dessine le modèle exact du clavier, édite chaque couche et la molette, enregistre des macros avec ou sans leur rythme, superpose des calques d'éclairage comme un logiciel de retouche et intègre un testeur de touches. Un clic installe un firmware prêt à l'emploi ; un mode avancé propose un éditeur de keymap qui compile et flashe votre propre firmware.
Défis techniques
- Un protocole maison. L'application et le clavier parlent un protocole versionné : l'application détecte un module plus ancien et le signale.
- Flasher sans risque. Avant chaque flashage, l'application sauvegarde le firmware en place, et un flashage interrompu peut toujours être relancé depuis le bootloader en mémoire morte de la puce.
- Un éclairage qui tient. Le firmware de Keychron recharge ses couleurs enregistrées quand l'effet change ou que l'éclairage se réveille ; le module rétablit à la place la couleur et la vitesse du profil.
- Tester sans matériel. Le module firmware a ses propres tests C exécutés sur PC, et l'interface tourne dans un navigateur face à un clavier simulé.
Résultat
La version 1.1.0 est publiée sur GitHub sous licence GPL-3.0, avec mises à jour automatiques signées. Elle a été testée sur un Keychron V6 8K ISO ; les 270 autres modèles sont pris en charge et attendent leurs testeurs.


