Skip to content

Releases: NiceMank/GamePad-Test

PadLab 0.6.1 — finitions

Choose a tag to compare

@NiceMank NiceMank released this 21 Oct 14:56

0.6.1 — les détails qui trahissaient

Trois défauts visibles sur les rendus de la 0.6.0, corrigés avant diffusion.

Les touches vues s'affichaient en barres

Chaque touche occupait toute la largeur avec une seule lettre au milieu. La
cause : un Container porteur d'un alignment s'étire sur la place
disponible, donc dans une grille souple chaque pastille prenait la ligne
entière. Ce sont maintenant des pastilles compactes de largeur fixe.

« Manettes toutes les 5 s · batterie toutes les 10 s · jamais »

La phrase collait un horodatage vide en fin de ligne. Elle est maintenant
construite selon ce qu'on sait réellement.

L'interrupteur

Il est ramené à sa taille réelle et son contraste ne laisse plus croire qu'il
est éteint quand il est allumé.

La manette est posée

Angle de repos adouci : le modèle fait face, légèrement plongé, au lieu d'être
penché sur le côté. Elle reste immobile, comme en 0.6.0.

Rappel de la 0.6.0

  • La batterie est lue hors du thread principal, avec repli sur les nœuds du
    noyau quand l'API Android ne répond rien. Si aucune source ne donne de
    valeur, l'écran affiche la raison et un bouton « Réessayer ».
  • 39 tests dans l'application, 24 dans pad_core, 4 dans pad_ui, 4 dans
    pad_bridge, 13 dans pclink.

PadLab 0.6.0 — la batterie, vraiment

Choose a tag to compare

@NiceMank NiceMank released this 21 Oct 14:41

0.6.0 — la batterie, vraiment

Cette version corrige trois choses qui n'auraient pas dû sortir en 0.5.0.

Pourquoi la batterie ne s'affichait pas

Deux défauts se cumulaient dans le module Android :

  1. La lecture était faite sur le thread principal. InputDevice.getBatteryState()
    est un appel Binder synchrone ; sur une manette Bluetooth le noyau peut mettre
    plus de dix secondes à répondre. Résultat : interface figée, ou valeur
    abandonnée en route. La lecture se fait maintenant sur un fil dédié, avec un
    cache de 20 secondes.
  2. Aucun repli quand Android 12+ ne renseigne rien. Or le niveau est souvent
    publié par le noyau (/sys/class/power_supply/*-battery/capacity) même quand
    l'API officielle répond « inconnu ». Deux sources sont désormais essayées,
    dans cet ordre, et la source utilisée est annoncée.

Et quand aucune des deux ne répond, l'écran affiche la raison exacte et un bouton
Réessayer — plus jamais un tiret muet. Une lecture ratée ne fait pas non plus
disparaître un pourcentage déjà connu.

La manette 3D ne bouge plus toute seule

Elle est immobile au repos. Deux boutons, en haut à droite du cadre :
Tourner / Stop et Recentrer. L'indication « Glissez pour tourner »
s'efface dès que vous touchez le modèle.

Qualité d'exécution

  • Réglages entièrement réécrits : plus de titre affiché deux fois, une seule
    grammaire de cartes, les informations techniques montrées seulement quand
    elles existent.
  • « TEMPS DE CHARGE » n'apparaît plus hors charge.
  • Écran de test : modèle plus grand, compteur « Touches vues n/12 ».
  • Glyphes qui s'affichaient en carrés vides remplacés par des libellés lisibles.

Sous le capot

  • describe() ne lit plus la batterie : chaque scan bloquait le thread principal.
  • 39 tests dans l'application (+3 sur la batterie, +4 sur la scène immobile),
    24 dans pad_core, 4 dans pad_ui, 4 dans pad_bridge, 13 dans pclink.
  • Analyse statique : zéro avertissement sur les cinq paquets.

Limites assumées

  • Android 12+ expose getBatteryState(). En dessous, seul le noyau peut répondre,
    et tout le monde n'a pas ces nœuds : dans ce cas, l'application le dit.
  • Le niveau système Android est celui que la manette veut bien publier : beaucoup
    de manettes bon marché ne le font pas du tout.

0.5.0 — accueil, logo, actualisation

Choose a tag to compare

@NiceMank NiceMank released this 20 Oct 14:45

Accueil du premier lancement, logo, actualisation

Introduction (4 écrans, une fois)

  1. Branchez. C'est tout. — avec le vrai modèle 3D de l'application.
  2. Voyez ce qu'elle envoie — entrées qui s'allument, journal horodaté.
  3. Diagnostiquez ses défauts — trace de circularité, dérive, gigue.
  4. Jouez sur PC — téléphone, réseau, manette Xbox virtuelle.

« Passer » reste disponible, le choix est retenu, et Réglages → Revoir l'introduction la relance. Les écrans disent aussi les limites : batterie Android 12+, manette absente → démonstration.

Logo

Un seul signe : un P dont le bol est un anneau avec un point d'acier — la lettre et le stick analogique étant la même forme. Lisible à 32 px.

  • Icône d'application 48 → 192 px et icône adaptative Android 8+ (avant-plan détouré, zone de sécurité respectée).
  • Écran de lancement graphite : Android 11 et avant, et Android 12+ (windowSplashScreenAnimatedIcon).
  • Marque vectorielle en tête de l'introduction.
  • Tout est produit par tool/padlab_logo.py, donc reproductible.

Actualisation automatique

  • Interrupteur dans Réglages, actif par défaut ; la ligne « il y a 4 s » avance seule.
  • Manettes relues toutes les 5 s — rattrape un branchement que l'écouteur natif manque.
  • Batterie relue toutes les 10 s (au lieu de 20 s).
  • Retour au premier plan : relecture immédiate.

Défaut trouvé en revérifiant le parcours

En mode « Manette », rebasculer sur « Démo » laissait la session marquée réelle : le changement n'était appliqué qu'après un await. L'état bascule maintenant immédiatement. Corrigé aussi : le modèle 3D de l'introduction débordait de 6 px sur un écran 430×900.

Voie d'utilisation revérifiée

12 tests de bout en bout (premier lancement, introduction, accueil, les 5 onglets, test guidé, analyse, batterie sans manette, remap, Link, les 3 modes, actualisation, mémoire du choix) + 4 tests d'introduction + 8 de la bascule réelle. 32 tests dans l'application.

Limites, toujours dites franchement

Batterie : Android 12+ seulement. Remap système Android : impossible sans root. iOS hors périmètre. La lecture sur manette physique n'est pas testable dans l'environnement de développement ; la CI compile le plugin et les tests couvrent le chemin complet avec un pont simulé.

Téléchargements

  • PadLab-0.5.0.apk — Android (arm64, armv7, x86_64), signé debug.
  • PadLab-Link-0.5.0-windows-x64.zip — Windows (ViGEmBus requis).
  • PadLab-Link-0.5.0-linux-x64.tar.gz — Linux (uinput requis).

0.4.0 — la manette réelle

Choose a tag to compare

@NiceMank NiceMank released this 20 Oct 10:21

La lecture d'une vraie manette devient le chemin principal

Jusqu'ici PadLab savait parler aux manettes mais ne le faisait pas : la session démarrait en simulation et y restait. Le nom s'affichait, les entrées étaient inventées. Corrigé.

Sur le téléphone

  • Au démarrage, PadLab cherche une manette. Si elle est là, ses entrées sont lues (boutons, sticks, gâchettes), sans manipulation.
  • Brancher une manette à chaud bascule l'application en réel toute seule ; la débrancher ramène à la démonstration avec le motif affiché.
  • Retour au premier plan : la détection est relancée.
  • Réglages → trois modes : Auto, Manette, Démo.
  • Badge franc sur l'accueil : Réel (vert), Démo ou Aucun.

Ce qui n'est plus inventé

  • Les « dernières sessions » étaient codées en dur (DualSense hier 19:07, Xbox Series…). Remplacées par un vrai journal : durée, date et score des lectures réelles.
  • L'historique de batterie était fabriqué même en réel. En réel, seules les lectures natives comptent ; sans lecture, l'écran affiche « non exposée ».
  • Score de santé affiché « — » tant que les sticks n'ont pas bougé.
  • Plus de manette 3D fictive quand rien n'est branché : un panneau explique quoi faire.

Bugs corrigés en chemin

  • Le paramètre simulate du constructeur masquait le champ du même nom : le passage en réel ne prenait pas.
  • Le canal natif se fermait avec la capture, donc une manette rebranchée n'était plus jamais détectée.
  • Permission VIBRATE absente : la vibration échouait en silence.
  • File d'événements natifs non vidée sans auditeur : rafale périmée au branchement.
  • Test de rendu qui échouait sur une machine neuve (dossier de sortie absent).

Tests

24 tests dans pad_core, 4 dans pad_ui, 4 dans pad_bridge, 16 dans apps/mobile, 13 dans pclink. La CI les exécute tous, plus l'analyse statique.

Limites, dites franchement

  • Batterie : API Android 12+ ; en dessous, la valeur n'est pas exposée.
  • Remapping système Android impossible sans root (inchangé) ; le remap PC passe par la manette Xbox virtuelle.
  • iOS hors périmètre de cette version.
  • La lecture sur manette physique n'a pas pu être testée dans l'environnement de développement : le chemin complet est couvert par des tests à pont simulé, et le plugin natif est compilé par la CI.

Téléchargements

  • PadLab-0.4.0.apk — Android (arm64, armv7, x86_64), signé debug.
  • PadLab-Link-0.4.0-windows-x64.zip — Windows (ViGEmBus requis).
  • PadLab-Link-0.4.0-linux-x64.tar.gz — Linux (uinput requis).

PadLab 0.3.1 - touches separees, modeles distincts

Choose a tag to compare

@NiceMank NiceMank released this 20 Oct 09:52

Correctif : les touches ne sont plus collees

Tu avais raison : L1 et L2 (et R1/R2) etaient construits a partir du meme contour et se recouvraient, donc les deux touches paraissaient n'en faire qu'une.

  • l'epaule (L1/R1) est maintenant un bandeau mince pose sur l'arete avant du boitier ;
  • la gachette (L2/R2) est une palette large placee derriere, qui depasse franchement de la silhouette ;
  • entre les deux, une gorge laisse voir le fond : les deux touches se lisent separement, de face comme de profil ;
  • les zones cliquables sont distinctes, chacune a sa place.

Les modeles se distinguent enfin

  • Xbox : lettres A/B/X/Y dessinees en traits (le texte etait illisible a cette taille), capuchons aux quatre couleurs du vrai pad, boutons View/Menu separes.
  • Switch Pro : sticks plus petits et plus hauts, croix plus compacte, lettres colorees sur capuchons neutres, bouton Home.
  • Steam Deck : silhouette plus large, ecran central entoure, deux paves tactiles, sticks en haut, croix et boutons en bas.
  • PlayStation : croix directionnelle plus fine et plus longue que celle de la Xbox.

Bogue corrige

Le trace de la lettre B envoyait ses courbes a l'origine de l'ecran (coordonnees non converties) : des traits blancs traversaient le modele sur la manette Xbox.

Fichiers

  • PadLab-0.3.1.apk — Android
  • PadLab-Link-0.3.1-windows-x64.zip — Windows (ViGEmBus requis)
  • PadLab-Link-0.3.1-linux-x64.tar.gz — Linux (uinput)

PadLab 0.3.0 - manette realiste et tests guides

Choose a tag to compare

@NiceMank NiceMank released this 20 Oct 08:13

Ce qui change

Le modele 3D ressemble a une vraie manette

  • Eclairage reel : chaque facette est eclairee a chaque image (diffus + reflet). En tournant, les pieces s'allument et s'assombrissent comme un objet pose sous une lampe, au lieu de porter une teinte figee.
  • Normales lissees : les sticks et les boutons sont ronds. Ils etaient dessines facette par facette, d'ou l'aspect « image de synthese ».
  • DualSense reconnaissable : bandeau noir central qui remonte jusqu'a la tranche, pave tactile clair, grille de haut-parleur, repere grave sur la croix, lunettes de sticks sombres.
  • Couleurs de produit : plastique clair deux tons, graphite, symboles desatures. Le vert fluo, le rouge vif et le cyan ont disparu des modeles comme de l'interface.

Tests guides, etape par etape

L'onglet Test s'ouvre desormais sur un parcours en sept etapes, une a la fois :

  1. croix directionnelle ;
  2. sticks ;
  3. boutons de facade ;
  4. gachette gauche ;
  5. gachette droite ;
  6. epaules ;
  7. boutons centraux.

Chaque etape se valide par l'entree reelle, se passe si besoin, et le parcours se termine par un recapitulatif. Le panneau complet reste disponible dans « Test libre ».

Performances

3,1 ms de calcul par image, contre 4,8 ms en 0.2.1 et 39,2 ms a l'origine.

Fichiers

  • PadLab-0.3.0.apk — Android
  • PadLab-Link-0.3.0-windows-x64.zip — Windows (ViGEmBus requis)
  • PadLab-Link-0.3.0-linux-x64.tar.gz — Linux (uinput)

PadLab 0.2.1 - simulateur 3D fluide

Choose a tag to compare

@NiceMank NiceMank released this 20 Oct 06:17

Ce qui change

Le simulateur 3D est huit fois plus rapide : 39,2 ms -> 4,8 ms de calcul par image sur la machine de test. Le rendu reste identique (comparaison pixel a pixel, ecart moyen 1,8/255).

  • plan de scene calcule une fois puis reutilise (plus de tri d'objets ni de reprojection a chaque image) ;
  • shaders et textes mis en cache, et recentres (le degrade des sticks est de nouveau au bon endroit) ;
  • la rotation ne reconstruit plus aucun widget : seul le canevas se redessine ;
  • au repos, l'application ne demande plus aucune image (le minuteur s'arrete) ;
  • geometrie allegee sur les pieces peu visibles.

Fichiers

  • PadLab-0.2.1.apk — Android
  • PadLab-Link-0.2.1-windows-x64.zip — Windows (ViGEmBus requis pour la manette virtuelle)
  • PadLab-Link-0.2.1-linux-x64.tar.gz — Linux (uinput)

PadLab 0.2.0 — refonte visuelle + manette 3D

Choose a tag to compare

@NiceMank NiceMank released this 19 Oct 21:50

Applications

Plateforme Fichier
Android PadLab-0.2.0.apk
Windows x64 PadLab-Link-0.2.0-windows-x64.zip
Linux x64 PadLab-Link-0.2.0-linux-x64.tar.gz

Le web est aussi publié en artefact (padlab-web) dans l'onglet Actions.

Refonte visuelle

  • Interface retravaillée de bout en bout : en-tête éditorial commun, titres Inter Display, chiffres JetBrains Mono, navigation en pilule flottante.
  • Deux thèmes complets (clair / sombre), quatorze écrans rendus.
  • Correctif important : les polices du paquet sont référencées sous packages/pad_ui/.... Sur appareil, l'app retombait jusqu'ici sur la police par défaut.

Manette 3D

  • Modèle reconstruit pièce par pièce : coque haute et basse avec plan de joint, sticks en quatre pièces, croix chanfreinée, boutons à symboles vectoriels, gâchettes qui épousent les épaules, dos avec trappe.
  • Un modèle par famille : DualSense, DualShock 4, Xbox (sticks décalés), Switch Pro, Steam Deck, générique.
  • Rotation 360° avec inertie, vue de dos complète.
  • Un clic sur une touche traverse le vrai chemin d'entrée (remap, état, journal, analyseurs) : même retour qu'un appui matériel, relâchement automatique. Vérifié par un test.

PC (PadLab Link)

  • ViGEmClient.dll est compilé par la CI et livré dans le zip Windows : il ne reste que le pilote ViGEmBus à installer.
  • LISEZ-MOI.txt inclus dans chaque paquet (Windows et Linux).
  • Linux : périphérique evdev 045E:028E via uinput, aucun pilote tiers.

Divers

  • Rendu en profondeur par plans : plus de pièces qui passent sous la coque.
  • Build Android allégé (téléchargement NDK supprimé), CI verte 5/5.

PadLab 0.1.0

Choose a tag to compare

@NiceMank NiceMank released this 19 Oct 15:24

Première version installable.

Android : PadLab-0.1.0.apk — signé debug, installation directe. Test des manettes, analyse de dérive, batterie, remapping, envoi vers le PC.

PC : padlab-link-windows.zip (ViGEmBus requis) et padlab-link-linux.zip (uinput) — reçoivent la manette du téléphone et l'exposent comme manette Xbox 360.

Web : padlab-web.zip — démonstration sans installation (mode simulation).