🎉 Phase 13.1.c — curseur souris : conversion HID→pixel

Bug B.1 13.1.b résolu : ps2d sous Redox+QEMU délivre les coords absolues
du pointer dans 0..65535 (16-bit virtuel HID), pas en pixels écran. Notre
PointerMotion faisait une assignation directe → clamp permanent à
(width-1, height-1) → cursor coincé bas-droite, hit_test toujours None.

Fix : conversion fixed-point x*screen_w/65536 (algo orbital upstream,
cf orbital/src/scheme.rs:1583). Le clamp_cursor de 13.1.b reste comme
garde-fou pour valeurs hors-spec.

Validation runtime : curseur suit fidèlement la souris dans toute l'aire
écran 1280×800, clics en (370,239), (522,303), (746,175), (1260,142),
etc. Plus jamais de (1279,799) systématique.

Bonus DX : filtre tracing par défaut « info,cursor=debug » pour éviter
d'avoir à taper RUST_LOG complexe dans la fenêtre QEMU graphique (pas
de copier-coller).

Instrumentation `target="cursor"` laissée en place pour debug futur des
événements pointer.

Bug B.2 (page fault ion) non traité, reste à reporter upstream.

Leyoda 2026 – GPLv3
This commit is contained in:
Votre Nom 2026-05-16 11:32:32 +02:00
parent 18391c85f7
commit 58ef6a85c2
3 changed files with 188 additions and 3 deletions

View file

@ -95,7 +95,13 @@ impl<'a> MakeWriter<'a> for TeeWriter {
}
fn init_tracing() {
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
// Phase 13.1.c : par défaut, info + target=cursor en debug. Le target
// `cursor` est utilisé par les traces ABS/REL du frontend (cf
// redox-wl-wayland-frontend). Pratique sous QEMU graphique où taper
// un RUST_LOG complexe est pénible (pas de copier-coller). Override
// toujours possible via RUST_LOG=… au lancement.
let filter = EnvFilter::try_from_default_env()
.unwrap_or_else(|_| EnvFilter::new("info,cursor=debug"));
tracing_subscriber::fmt()
.with_env_filter(filter)
.with_writer(TeeWriter::new())