feat(renaser): Fase 13 — ratón, puntero y arrastre de flotantes

renaser dialogaba sólo con el teclado; las ventanas flotantes nacían
en cascada y allí se quedaban. La Fase 13 trae el ratón.

- Driver `drivers/raton`: el ratón PS/2 cuelga del dispositivo
  auxiliar del 8042 + IRQ12. El driver despierta el aux, programa
  su IRQ, le ordena reportar, ensambla paquetes de 3 bytes con
  guarda del bit-3. Posición como atómicos, eventos como cola
  lock-free — el mismo guardarraíl que el teclado.
- El puntero, capa de PRESENTACIÓN: `Pantalla::estampar_puntero`
  pinta un sprite de flecha 12×18 sobre el framebuffer después de
  copiar el lienzo. El lienzo nunca lo contiene — hace de
  save-under natural—.
- Compositor: `atender_raton` drena eventos. Botón bajando es un
  clic-para-enfocar consistente con `mover_foco` (silencia bocina,
  alza si flota). Si la enfocada flota, arranca un arrastre con el
  desfase de agarre; el botón sostenido la sigue al puntero; al
  soltar, termina.
- `refrescar_puntero` reestampa el framebuffer si el puntero se
  movió en una vuelta tranquila en que ninguna app pintó.

Verificado en QEMU (mouse_move / mouse_button del monitor): el
puntero aparece al arrancar, se mueve por la pantalla, un clic
sobre pulso le da el foco, y un arrastre con el botón sostenido
mueve la flotante de la cascada al centro-abajo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 23:21:06 +00:00
parent d1b700eb2b
commit 8fc1d99ddf
11 changed files with 644 additions and 4 deletions
+17
View File
@@ -211,6 +211,23 @@ se suma a la matriz de capacidades. Verificada en QEMU.
- Verificado por captura: la onda cuadrada de la bocina, enrutada a un WAV,
late a la frecuencia media de la escala.
## Fase 13 — ratón, puntero y arrastre de flotantes (completada)
Hasta la Fase 12 renaser dialogaba sólo con el teclado; las ventanas flotantes
nacían en cascada y allí se quedaban. La Fase 13 trae el ratón: un puntero,
clic-para-enfocar y arrastre del marco de las flotantes. Verificada en QEMU
(`mouse_move` / `mouse_button` del monitor).
- Driver `drivers/raton`: el ratón PS/2 cuelga del dispositivo auxiliar del
8042 + la IRQ12. El driver despierta el aux, programa su IRQ, le ordena
reportar, ensambla paquetes de 3 bytes con guarda del bit-3.
- El puntero como capa de presentación: `Pantalla::estampar_puntero` pinta un
sprite de flecha de 12×18 sobre el framebuffer, DESPUÉS de copiar el
lienzo. El lienzo nunca lo contiene — hace de save-under natural—.
- El compositor gana `atender_raton`: botón bajando → clic-para-enfocar (sobre
cualquier ventana viva); si la enfocada flota, arranca un ARRASTRE con el
desfase de agarre; el botón sostenido la sigue al puntero; al soltar, fin.
Líneas abiertas posteriores: reciclado de las ranuras de ventana cerradas;
audio con varias voces (PCM) más allá del tono único de la bocina.