cosmic: la entrada anda — click y teclado por QMP; y 29 atajos caídos por UNA línea
El click sobre «Applications» abre la biblioteca (el color dominante pasa de fondo 91% a 27,27,27 84%) y tecleando aparece «cosmic» en el buscador. Se maneja entero por QMP con input-send-event, sin humano y sin ver la pantalla. USB HID, no virtio-input: el kernel de hammer no trae VIRTIO_INPUT, así que -device virtio-keyboard no crea ni un /dev/input/event*. Con qemu-xhci + usb-kbd + usb-tablet anda, y además es lo que se va a usar en metal. Y el hallazgo de fondo: Super no abría el lanzador TENIENDO la ligadura en el fichero. keybindings.ron de epoch-1.5.0 liga Super+Alt+S a System(ScreenReader), acción que el crate que lo parsea (cosmic-settings-config, rev 8c54bbbc) no tiene en su enum. RON no ignora lo desconocido: falla el mapa entero y se caen las 29 ligaduras. El único rastro era un WARN de cosmic-idle a 200 líneas del arranque hablando de un enum — el síntoma no nombra ni la tecla ni el fichero. El pin lockstep fallando desde adentro de upstream. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
4 qillqakuna · +70 −4
diff --git a/docs/evidencia/cosmic-app-library-click-qemu-2026-08-04.png b/docs/evidencia/cosmic-app-library-click-qemu-2026-08-04.png
new file mode 100644
index 00000000..4a3195a9
Binary files /dev/null and b/docs/evidencia/cosmic-app-library-click-qemu-2026-08-04.png differ
diff --git a/docs/evidencia/cosmic-teclado-busqueda-qemu-2026-08-04.png b/docs/evidencia/cosmic-teclado-busqueda-qemu-2026-08-04.png
new file mode 100644
index 00000000..3b71512c
Binary files /dev/null and b/docs/evidencia/cosmic-teclado-busqueda-qemu-2026-08-04.png differ
diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md
index b55d0c8f..37be2abe 100644
--- a/docs/runbooks/cosmic-desktop.md
+++ b/docs/runbooks/cosmic-desktop.md
@@ -378,11 +378,67 @@ qemu-system-x86_64 -machine q35,accel=kvm -cpu host -smp 4 -m 4096 \
El veredicto es **contar colores distintos del PPM**, no leer el log: con dos GPUs el log salía
impecable y la pantalla estaba lisa.
+## 🖱 LA ENTRADA: se usa, no sólo se ve (2026-08-04)
+
+**Hay que usar USB HID, no virtio-input.** El kernel de hammer no trae `VIRTIO_INPUT` (mirá el
+`-e …` de `recipes/linux-generic.toml`), así que `-device virtio-keyboard` no produce ni un
+`/dev/input/event*`. Sí trae `USB_XHCI_HCD` + `USB_HID` + `INPUT_EVDEV`, y además es lo que se va a
+usar en metal, así que la prueba es más fiel:
+
+```
+-device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0 -device usb-tablet,bus=xhci.0
+```
+
+`usb-tablet` y no `usb-mouse`: reporta coordenadas ABSOLUTAS, y QMP sólo sabe mandar eventos `abs`
+(el eje va de 0 a 32767 sobre el ancho/alto de la pantalla, no en píxeles).
+
+**Se maneja entero por QMP**, sin ver la pantalla y sin humano:
+
+```jsonc
+// mover el puntero a (155,16) — el botón «Applications»
+{"execute":"input-send-event","arguments":{"events":[
+ {"type":"abs","data":{"axis":"x","value":3968}},
+ {"type":"abs","data":{"axis":"y","value":655}}]}}
+// click
+{"execute":"input-send-event","arguments":{"events":[{"type":"btn","data":{"down":true,"button":"left"}}]}}
+{"execute":"input-send-event","arguments":{"events":[{"type":"btn","data":{"down":false,"button":"left"}}]}}
+// una tecla
+{"execute":"input-send-event","arguments":{"events":[
+ {"type":"key","data":{"down":true,"key":{"type":"qcode","data":"c"}}},
+ {"type":"key","data":{"down":false,"key":{"type":"qcode","data":"c"}}}]}}
+```
+
+**El veredicto también es de píxeles, y conviene medirlo por REGIÓN.** El click en *Applications*
+llevó el color dominante de `(33,74,135)` (fondo, 91 %) a `(27,27,27)` (84 %): la biblioteca de
+aplicaciones se abrió a pantalla casi completa. Y para el teclado, contar colores del rectángulo del
+buscador (440..840 × 80..112) bastó: 155 → 118 colores al reemplazarse el placeholder por lo tecleado.
+Evidencia: `cosmic-app-library-click-qemu-2026-08-04.png` y `cosmic-teclado-busqueda-qemu-2026-08-04.png`.
+
+**La biblioteca sale vacía y está BIEN.** Los 20 `.desktop` de la imagen son `NoDisplay=true` —son
+applets y componentes de sesión, no aplicaciones—, así que no hay nada que listar. Que la búsqueda no
+devuelva resultados no es un fallo del escritorio: es que la distro todavía no tiene ni una sola
+aplicación gráfica. Se sabrá arreglado cuando entre `cosmic-files` o un terminal.
+
+### 🔑 El atajo que no era: 29 ligaduras caídas por UNA línea de datos
+
+`Super` no abría el lanzador, **teniendo `(modifiers: [Super]): System(Launcher)` en el fichero**.
+La causa: `data/keybindings.ron` de epoch-1.5.0 liga `Super+Alt+S` a `System(ScreenReader)`, una
+acción que `cosmic-settings-config` —el crate que parsea el fichero, pineado por cargo en la rev
+`8c54bbbc`— todavía no tiene en su enum. **RON no ignora lo que no conoce: falla la deserialización
+del MAPA COMPLETO**, y con ella se caen las 29 ligaduras.
+
+Lo que hace este bug difícil es cómo se presenta: apretás una tecla, no pasa nada, y el único rastro
+es un `WARN` de *cosmic-idle* —ni siquiera del compositor— a doscientas líneas del arranque, hablando
+de un enum. El síntoma no nombra ni la tecla, ni el fichero, ni el componente que lo sufre.
+
+**Es el riesgo del pin lockstep asomando desde adentro de upstream**: acá el dato y el parser del
+*mismo* epoch no coinciden. El fix va en el install de `cosmic-comp` y filtra esa única línea
+(`grep -v 'System(ScreenReader)'`): se cae la acción que no existe, no las 28 que sí. El screen
+reader no está en la imagen de todas formas.
+
## Lo que falta, en orden
-1. **Entrada real**: el escritorio está dibujado pero nadie probó un click ni una tecla. `virtio-tablet`
- + `virtio-keyboard` y verificar que el launcher abre (es lo que separa «pinta» de «se usa»).
-2. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir.
+1. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir.
3. `cosmic-settings` (el panel de control) y `cosmic-files`: la suite tiene aplicaciones y el
catálogo todavía no.
4. `cosmic-greeter` (hoy `cosmic-session` lo lanza y falla con ENOENT, sin consecuencias) y
diff --git a/recipes/incoming-cosmic/cosmic-comp.toml b/recipes/incoming-cosmic/cosmic-comp.toml
index 888d0cec..2f184d2b 100644
--- a/recipes/incoming-cosmic/cosmic-comp.toml
+++ b/recipes/incoming-cosmic/cosmic-comp.toml
@@ -65,7 +65,17 @@ mkdir -p /out/usr/bin \
/out/usr/share/cosmic/com.system76.CosmicSettings.WindowRules/v1
cp target/release/cosmic-comp /out/usr/bin/cosmic-comp
chmod 755 /out/usr/bin/cosmic-comp
-cp data/keybindings.ron /out/usr/share/cosmic/com.system76.CosmicSettings.Shortcuts/v1/defaults
+# ⚠ SE FILTRA UNA LÍNEA, Y ES LA DIFERENCIA ENTRE 28 ATAJOS Y NINGUNO.
+# `data/keybindings.ron` de epoch-1.5.0 liga Super+Alt+S a `System(ScreenReader)`, una acción que el
+# crate que PARSEA el fichero —`cosmic-settings-config`, que cargo pinea en la rev 8c54bbbc— todavía
+# no tiene en su enum. RON no ignora lo que no conoce: falla la deserialización del MAPA COMPLETO, y
+# con ella se caen las 29 ligaduras, incluida `(modifiers: [Super]): System(Launcher)`.
+# Se ve así: apretás Super, no pasa NADA, y el único rastro es un WARN de cosmic-idle a 200 líneas
+# del arranque que habla de un enum. Medido: sin el filtro, Super no abre el lanzador.
+# Es el riesgo del pin lockstep asomando desde adentro de upstream: el dato y el parser del MISMO
+# epoch no coinciden. Se cae la acción que no existe, no las 28 que sí.
+grep -v 'System(ScreenReader)' data/keybindings.ron \
+ > /out/usr/share/cosmic/com.system76.CosmicSettings.Shortcuts/v1/defaults
cp data/tiling-exceptions.ron /out/usr/share/cosmic/com.system76.CosmicSettings.WindowRules/v1/tiling_exception_defaults
'''