Wire the macOS platform side of the #50 device layer, feeding the same state buffers the read APIs consume — no API changes, purely OS glue. - mouse: cocoa.ll reads the live cursor via mouseLocationOutsideOfEventStream, converted to framebuffer pixels and y-flipped, so windowed games get Input.mouse_x/y without injection (W_mx/W_my were never written before). - gamepad: win_pad polls GCController.controllers each frame, packing extended- gamepad buttons (SDL_GameControllerButton order) and thumbsticks (16.16 fixed, Y negated for SDL convention) into in_pad_*. Windowed builds now load GameController via -needed_framework (its classes are reached by name, so a plain -framework link dead-strips it); DCE'd in headless builds. - touch: the view's NSTouch phase handlers snapshot the touching set into in_touch_* (normalizedPosition -> framebuffer pixels). Web platform.js gains zero-fill stubs for win_held/mouse/pad/touch so a windowed wasm build resolves the device-layer imports. New test asserts the windowed link loads GameController. Reseeded; full + selfhost suites green (79 + 29). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
959 B
bump: minor
type: feat
Native input hardware bindings (#51). The #50 device layer's platform side
is now wired on macOS, feeding the same state buffers the read APIs already use —
no API changes. cocoa.ll reads the live cursor position (mouseLocationOutsideOfEventStream,
converted to framebuffer pixels and y-flipped) so windowed games get
Input.mouse_x/y without injection; polls GameController.framework each frame
(GCController.controllers → extended-gamepad buttons/sticks) into
Input.pad_button / pad_axis / pad_connected, mapping to SDL_GameControllerButton
order; and routes the view's NSTouch phase handlers into Input.touch_count /
touch_x/y. A windowed build now loads GameController (via -needed_framework,
since its classes are reached by name); the whole binding is DCE'd out of a
headless build. Input.set_pad / set_touch injection still works on every
target, so replays, AI, and network-fed input are unchanged.